Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi Grundsätzliche Funktionsweise von Musikerkennungssoftware (https://www.delphipraxis.net/47520-grundsaetzliche-funktionsweise-von-musikerkennungssoftware.html)

Schneider-Huetter 12. Jun 2005 13:08


Grundsätzliche Funktionsweise von Musikerkennungssoftware
 
Hallo zusammen,
ich interessiere mich für die grundsätzliche Funktionsweise von Musikerkennungssoftware.
Seit längerem gibt es ja schon Dienste, die einem den Titel/Interpreten eines gerade laufenden Musikstücks per SMS auf's Handy schicken.
So weit ich weiß wird hierbei für jedes Musikstück mittels FFT ein "Fingerabdruck" erstellt. Bei der Aufnahme mit dem Handy wird nun auch eine FFT durchgeführt und das aktuelle Frequenzspektrum mit den Spektren in den Fingerabdrücken verglichen.
So weit so gut, aber wie ist es möglich diese Fingerabdrücke so schnell zu durchsuchen? Ich denke mal, dass das Signal vom Handy mindestens alle 10ms transformiert werden muss um eine sichere Erkennung zu ermöglichen. Also müssten auch alle 10ms sämtliche Fingerabdrücke durchsucht werden, wenn man eine Sammlung von mehreren 10.000 Abdrücken ( a ca. 20 kB ) hat könnte das schon sehr zeitkritisch werden, oder? :gruebel:

Schneider-Huetter 13. Jun 2005 07:53

Re: Grundsätzliche Funktionsweise von Musikerkennungssoftwar
 
Keine DSP-Freaks unter den DPlern :?:

Robert Marquardt 13. Jun 2005 09:29

Re: Grundsätzliche Funktionsweise von Musikerkennungssoftwar
 
Fingerabdruecke sind wahrscheinlich MD5-Pruefsummen oder aehnliches.
Man bekommt also einen String, der gesucht werden muss. Was da moeglich ist zeigt Google.

In deinem Modell bekommt man alle 10 ms einen laengeren String. Das heisst aber keineswegs das die Suche von vorne beginnen muss.
Es bedeutet nur das das erste Ergebnis der Suche nach dem ersten Paket der Suche nach dem zweiten Paket innerhalb 10 ms verfuettert werden muss.

Vermutlich ist es aber viel einfacher und es wird eine Mindestzeit festgelegt, die ausreichend lang ist das Stueck mit grosser Wahrscheinlichkeit eindeutig zu erkennen.

Schneider-Huetter 13. Jun 2005 13:21

Re: Grundsätzliche Funktionsweise von Musikerkennungssoftwar
 
Zitat:

Fingerabdruecke sind wahrscheinlich MD5-Pruefsummen oder aehnliches
Wenn das so wäre müsste man ja immer das ganze Stück aufnehmen, um auf die gleiche Prüfsumme zu kommen :shock:, oder?
Im Idealfall sollte es jedoch möglich sein, dass der Titel erkannt wird wenn nur einen Bruchteil der Spektren des Stücks übereinstimmen (bzw. ähnlich sind), damit man nach spätestens ca. 10s ein Ergebnis erhält.

Robert Marquardt 13. Jun 2005 13:44

Re: Grundsätzliche Funktionsweise von Musikerkennungssoftwar
 
Warum eigentlich bedienst du nicht der Google-Suche? "Musikstuecke erkennen" bringt z. B. dies http://www.fraunhofer.de/fhg/company...Preis_2004.jsp
Mit dem Stichwort "AudioID" kommt man dann weiter.

Schneider-Huetter 13. Jun 2005 13:53

Re: Grundsätzliche Funktionsweise von Musikerkennungssoftwar
 
Auf der Seite war ich schon, wie ein solcher Fingerabdruck genau aufgebaut ist wird hier jedoch auch nicht verraten :(

Zitat:

Um Musik - oder auch jedes andere Tonsignal - zu identifizieren, wird ein kompakter und einzigartiger Datensatz extrahiert, die so genannte Signatur. Sie besteht aus signalnahen Eigenschaften der jeweiligen Audiodatei (spektrale Flachheit).
Ist halt doch etwas allgemein gehalten.

Tonic1024 13. Jun 2005 14:00

Re: Grundsätzliche Funktionsweise von Musikerkennungssoftwar
 
Kann es nicht vielleicht auch sein, dass das eine Art kostenpflichtige Information ist?

MfG

Tonic1024

Schneider-Huetter 13. Jun 2005 14:08

Re: Grundsätzliche Funktionsweise von Musikerkennungssoftwar
 
Das ist ja genau der Grund warum ich hier danach frage :wink:

negaH 14. Jun 2005 05:51

Re: Grundsätzliche Funktionsweise von Musikerkennungssoftwar
 
MD5 oder ähnliche Hash-Algorithmen werden wohl sehr untauglich für so eine Aufgabe sein, da sie eben nur exakt "bitgenaue" Sounds finden können. Diese Algos. sind absolut ungeeignet eben auch weil sie für ganz andere Aufgaben konstruiert wurden.

Ich würde erstmal darüber nachdenken wie man zwei Sounds vergleichen kann. Zur Zeit fällt mir dafür nur eine FFT ein. Das Problem mit FFT's ist die Normalisierung der Sounds, d.h. damit die FFT's funktionieren müssen die Sounds in ihrer zeitlichen Samplelänge alle gleich normiert wurden sein. Schön, aber diese virtuelle Normierung bringt nun die Frage hoch, welche? Soundabschnitte man per FFT auswerten sollte. Diese Methode wäre wohl die allereinfachste Form und wird wohl nicht so gut funktionieren können. Vergleichbar mit den Soundvergleichern der vorletzten Generation die ebenfalls absolute Fehlaussagen gemacht hatten, sprich ein Lied von Heino konnte schon mal als Technobeat erkannt werden. Die neueren Vergleicher arbeiten auch mit FFT's aber mit vielen zeitlich geshifteten FFT's. Über deren Ausgabe wird wiederum eine FFT gemacht und so hat man dann im grunde genommen das Frequenzspektrum vom zeitlichen Inhalt eines Liedes erzeugt, speich man hat zb. den Beat=Melodie des Liedes in ein Spektrum umgewandelt.

Nun fehlt noch der intelligente Vergleich der Ähnlichkeit, NICHT Gleichheit, der einzelnen Lied-Spektren. Denn Gleichheit wirst du nur erreichen können wenn die beiden Spektren vom exakt gleichen Input stammen. Aber exakt dies wird niemals der Fall sein. Also brauchst du eine Ähnlichkeitssuche und die Spektren aller Sounds in deiner Datenbank sollten nach diesem Kriterium sortiert sein. Die Suche in dieser Datenbank ist dann eine einfache binäre Suche die partitiell die einzelnen Spektren vergleicht und so während der Suche sich dem immer ähnlicherem Spektrum annähern wird.

Gruß Hagen

Tonic1024 14. Jun 2005 07:39

Re: Grundsätzliche Funktionsweise von Musikerkennungssoftwar
 
Zitat:

Zitat von www.fraunhofer.de
Doch wie kann das Verfahren aus mehreren Millionen Liedern in Sekundenschnelle den gesuchten Song finden? Zunächst erstellt das Programm einen akustischen Fingerabdruck von jedem Musikstück. Dieser wird zusammen mit dem Titel und Interpreten in einer Datenbank abgelegt. »Sucht man nun ein bestimmtes Lied, wird einfach nach seinem Fingerabdruck gefahndet«, erläutert Jürgen Herre vom IIS. Um den digitalen Fingerabdruck abzunehmen, unterteilt das Programm die Musik zum Beispiel in 16 Frequenzbänder und berechnet jeweils die »spektrale Flachheit«. Dieses Maß beschreibt, wie regelmäßig oder zufällig sich das Signal in diesem Frequenzband verhält. Einem Flötenton, der sehr gleichmäßig ist, wird ein Wert nahe 0 und dem stark vibrierenden Sound eines Schlagzeugs ein Wert nahe 1 zugeordnet. Die spektrale Flachheit ist für einen Musiktitel so charakteristisch wie die Muster eines menschlichen Fingerabdrucks.

Ausführlicher hab ich es nirgendwo gefunden...

Schneider-Huetter 14. Jun 2005 07:56

Re: Grundsätzliche Funktionsweise von Musikerkennungssoftwar
 
Danke, hatte das gleiche gestern auch noch entdeckt : Informationsdienst Wissenschaft

Die "spektrale Flachheit" dürfte so wie ich das verstehe einfach eine statistische Auswertung der von der FFT erzeugten Spektren sein ( Standardabweichung... ).
Das erzeugte Spektrum teilt man ca. alle 10ms in mehrere Bänder auf, berechnet jeweils die "spektrale Flachheit" und legt diese in der Datenbank ab.

3 min = 180s
180s / 0,01s = 18000
18000 Samples * 16 Bänder * 8 Byte (Double) = 2250 kByte

Wenn man es so machen würde hätte man einen Fingerabdruck mit knapp 2,2 MByte je Durchschnitts-Popsong :shock:, beim Fraunhofer-Institut wird aber von 2-4 kByte / min gesprochen.
Es scheint, ich habe da irgendeinen Denkfehler begangen. Oder wird die Flachheit über die ganze Songlänge berechnet, dann müsste man aber wieder den ganzen Song aufnehmen - kann also auch nicht sein!

Tonic1024 14. Jun 2005 08:26

Re: Grundsätzliche Funktionsweise von Musikerkennungssoftwar
 
wenn du eine eindeutige erkennung des Titels innerhalb weniger Takte erkennen kannst, brauchst du auch nur die Takte, die charakteristisch sind für diesen titel. Ausserdem ist es eine Art Statistik - so wie ich es verstanden habe - so dass du tatsächlich nur den mittleren Wert ermitteln musst.

Wie Hagen schon sagte, Wenn du genau einen festen Wert suchst musst du auch genau einen Start und Endpunkt festlegen. Das geht aber schon nicht, weil ein Titel nicht immer gleich lang ist. (Single, Album-Version, Sowiso-Mix, Datensalat aus irgendeiner Tauschbörse). Aus diesem Grund darf es nur einen annäherungswert geben, der aber immernoch eindeutig genug sein muss, um einen Titel noch zu identifizieren. Dies wird wohl über die Frequenzbänder realisiert. Für jedes Frequenzband wird eine Zahl zwischen 0 und 1 ermittelt. Wenn ein Titel in - sagen wir mal - 4 Frequenzbändern gleiche Werte hat, ist es sehr wahrscheinlich, das dies der gesuchte Titel ist. steigt die Zahl der übereinstimmungen, steigt die Wahrscheinlichkeit.

Mathematische Grundlagen kann ich dir leider nicht liefern. Nur zur FFT hab ich was gefunden.

FFT-Mathematisch und Code (Java)


[EDIT]Wenn du Stücke von 0,01s länge verwendest (woher stammt denn die Zahl?) wirst du kaum die Charakteristik einer Melodie/eines Rythmuses erkennen können, oder :gruebel: [/EDIT]

MfG

Tonic

Schneider-Huetter 14. Jun 2005 08:58

Re: Grundsätzliche Funktionsweise von Musikerkennungssoftwar
 
Zitat:

Für jedes Frequenzband wird eine Zahl zwischen 0 und 1 ermittelt. Wenn ein Titel in - sagen wir mal - 4 Frequenzbändern gleiche Werte hat, ist es sehr wahrscheinlich, das dies der gesuchte Titel ist. steigt die Zahl der übereinstimmungen, steigt die Wahrscheinlichkeit.
Das ist mir prinzipiell klar, nur komme ich dann eben wie oben erläutert zu einem "riesigen" Fingerabdruck und bei tausenden Titeln wird es schwierig so große Datenmengen innerhalb des Abtastintervalls zu durchsuchen.

Zitat:

Wenn du Stücke von 0,01s länge verwendest (woher stammt denn die Zahl?) wirst du kaum die Charakteristik einer Melodie/eines Rythmuses erkennen können, oder
Die Zahl habe ich daher, dass man sagt, dass der Mensch eine Latenz ( z.B. bei einem Synthesizer, Midi-Keyboard an Soundkarte... ) von <= 10ms nicht mehr Wahrnimmt. Also habe ich mir überlegt, dass sich auch die wesentlichen Merkmale eines Songs ( Frequenz, Rhythmik... ) in diesem Zeitraum zumindest nicht signifikant verändern können. Also eigentlich hab ich keine Ahnung, ob 10ms ein guter Wert ist :wink:, aber wenn man noch kleinere Intervalle verwendet wird der Abdruck ja noch größer.

Robert Marquardt 14. Jun 2005 09:17

Re: Grundsätzliche Funktionsweise von Musikerkennungssoftwar
 
Da werden vermutlich sehr viel laengere Abschnitte verwendet. Eher 100 ms oder mehr statt 10 ms.
Es werden offensichtlich 16 Floating-Point Werte berechnet, die den Fingerabdruck dieses Abschnitss bestimmen.
Wenn man jetzt noch mit ein paar Ueberlappungen rechnet, dann sollte man nicht mehr als 1 bis 2 KByte an Daten zur Suche erhalten.

Es wundert mich nicht das das ausreicht. Ein Gesicht kann man auch erkennbar in 32x32 Pixeln ablegen.

Schneider-Huetter 14. Jun 2005 09:33

Re: Grundsätzliche Funktionsweise von Musikerkennungssoftwar
 
Ich habe im Delphi-Forum ein Musikerkennungsprogramm entdeckt, werde dort auch mal nachfragen, wie die Fingerabdrücke bei diesem Programm aufgebaut sind.

Tonic1024 14. Jun 2005 09:34

Re: Grundsätzliche Funktionsweise von Musikerkennungssoftwar
 
Okay... Aber wenn du einen Titel hast mit 120 BPM (normale Geschwindigkeit, RMB und Black Musik ist viel langsamer) dann sind das 2 Schläge pro Sekunde, richtig?

Um also die Geschwindigkeit deines Titels abschätzen zu können brauchst du mindestens 2 Schläge. Das würde ich als unteres Limit der Grundlage deiner Berechnung annehmen um überhaupt ein (nicht unwichtiges) Kriterium ermitteln zu können.

Dazu, glaube ich, hast du zwei Fehler in deinem Denkansatz. Warum zerteilst du die Songs in so kleine Stücke, bis sie quasi beliebig austauschbar sind? Es geht doch darum einen Wiedererkennungswert in dem Titel zu kategorisieren. Das markanteste an einem Titel sind doch die Melodie und der Rhythmus. Eine Melodie ist minimal 16 Takte lang - eher 32 oder noch mehr. (Bin Hobby-Produzent, daher kenne ich das) beim 4/4 Takt (angenommen 120 BPM) sind 4 Schläge a 0,5 sek ein Takt. 16 Takte entspricht 8 Sekunden - das wäre schon eher eintönig anzuhören, aber wohl genug um einen gewissen Wiedererkennungswert (für Menschen) zu beinhalten.

Die Schlagworte "Query by Humming" sollten dich auf eine Art "Reverse Engeneering" bei Musik bringen, in der das so angewendet wird. Du hast quasi die Noten deines Titels im Klartext. Wenn du weisst wie MIDI-Files aufgebaut sind, weisst du auch wieviel Musik auf kleinstem Raum Platz hat (in KB gerechnet)

Dein Zweiter Fehler (meiner Meinung nach) liegt darin von 3 Min auszugehen. Du brauchst eigentlich nur eine makante Stelle von dem Titel - nicht den ganzen Titel. Der Titel wird innerhalb von 10 sekunden erkannt stand irgendwo. Das bedeutet zwar nicht, das die ersten 10 Sekunden deines Titels ausreichen. Ich denke da an Bolero zum Beispiel. Der würde in den ersten 10 Sekunden wohl nur Nullen produzieren (auch irgendwie Markant, oder? :gruebel: ). Aber du brauchst sicherlich nicht den ganzen Titel. Dazu musst du wissen, dass ein Titel - das kannst du auch im Radio nachvollziehen - aus nur 3-4 Sequenzen besteht. Intro und Outro - klar... Dann den Hauptteil mit wiederkehrendem Refrain und ggf. einen "Ruhigen Part" (oder ein Gitarrensolo, etc), der im oder am Ende des Hauptteils vor dem Outro kommt.

also hat ein Titel von 3 min länge 2 min "Inhalt", der sich die meisste Zeit wiederholt (die Melodie des Textes ist ja i.d.R. gleich, und der Refrain sowiso). Darin besteht die Charakteristik eines Songs. Ich denke dort hätte ich versucht den Ansatz für so eine Fingerabdruck-Software zu suchen.

Lange Rede - garkein Sinn... Mit diesen Grundlagen solltest du sicherlich eine ganz andere Größe berechnet bekommen...


[Edit]
Zitat:

Zitat von Robert Marquardt
Es wundert mich nicht das das ausreicht. Ein Gesicht kann man auch erkennbar in 32x32 Pixeln ablegen.

Schönes Beispiel :thumb:
[/Edit]

Schneider-Huetter 14. Jun 2005 10:01

Re: Grundsätzliche Funktionsweise von Musikerkennungssoftwar
 
Zitat:

Du brauchst eigentlich nur eine makante Stelle von dem Titel - nicht den ganzen Titel
Klingt eigentlich vernünftig, ich sehe da aber 2 Probleme:

1. ist es wahrscheinlich nicht so einfach diese markanten Stellen mit einem Programm herauszufinden. Da wäre wohl eine ziemlich ausgeklügelte Ähnlichkeitserkennung notwendig (um z.B den Refrain zu erkennen).

2. was ist, wenn man nur nuch den Schluss eines Titels hört und trotzdem gerne den Titel wüsste. Ich denke, dass auch bei wenig markanten Stellen eine sichere Erkennung möglich ist ( siehe das Programm aus dem Delphi-Forum )

Zitat:

Warum zerteilst du die Songs in so kleine Stücke, bis sie quasi beliebig austauschbar sind?
Da hast du wahrscheinlich recht, 10ms sind wohl "etwas" zu kurz!

Tonic1024 14. Jun 2005 10:49

Re: Grundsätzliche Funktionsweise von Musikerkennungssoftwar
 
Markant ist unter Anderem (oder vor allem) der Rhythmus. Der Zieht sich durch den ganzen Titel auch die melodie zieht sich in offensichtlicher Form oder Hintergründig (z.B. als Baseline) durch den ganzen Titel. Und grade darum macht es mehr als nur Sinn die unterschiedlichen Frequenzbereiche einzeln zu betrachetn.

Kennst du das Gefühl, dass dich ein Musiktitel mehr anspricht als ein Anderer, oder dass zwei völlig unterschiedliche Titel dir irgendwie gleichermaßen in die Beine gehen? Dafür sind u.A. Rhythmusfolgen und Frequenzen verantwortlich, die eher unterschwellig zu dir gelangen. Es würde jetzt zu Weit führen das hier auszubreiten. Aber diese Tatsache machen sich Produzenten zu Nutze um immer die gleiche Zielgruppe wieder aufs Neue zu gewinnen. ABBA klingt eben wie ABBA und alls was so ähnlich klingt, klingt wie ABBA und nicht wie was Eigenes. *schwafel*

Wie dem auch sei, sowas kann man messen. Und den Refrain (oder einen X-beliebigen anderen markanten Teil eines Songs) kann man relativ leicht identifizieren. Nichts anderes wird gemacht bei manchen komprimierungsverfahren. Tritt eine Sequenz mehrfach auf ist die Information darin redundant und ein Verweis, dass an der Stelle wieder der Teil "von vorhin" kommt, reicht aus. Um wieder den Weg in die Informatik zu lenken: Wenn du an Drei Stellen ein Objekt benötigst reicht ein Objekt und drei Pointer darauf. Diverse Komprimierungsverfahren arbeiten nach diesem Prinzip.

Mit markantem Teil muss ja nicht ein Teil gemeint sein, den der Mensch als markant empfindet, sondern eine sich ständig wiederholende Sequenz. Was ich also sagen will: Auch wenn du es nicht hörst (oder nur unterbewusst siehe mein 2. Absatz) ist es trotzdem da. Und dieser Umstand reicht aus um es zu errechnen und abzulegen zu können.

Nehmen wir als Beispiel ein Techno-Stück und betrachten wir nur den unteren Frequenzbereich. Was sehen wir? Wir sehen ein rhytmisches Pulsieren im Abstand von exakt 0,46784 Sekunden Da dieser Impuls eine Bandbreite von meinetwegen 200Hz (oder was auch immer) hat ermitteln wir ihn auch in zwei Weiteren von unseren 16 Frequenzbereichen Der Impuls selbst besteht aus weiteren Frequenzen. Einmal aus einer niedrigen Trägerfrequenz (das dumpfe Bummern, dass wir hören) und aufmodulierten "Klangfrequenzen". Schliesslich klingt die Basedrum von Queen nicht wie die von Scooter oder eben ABBA, auch wenn sie vielleicht alle die gleiche Trägerfrequenz haben. Wir haben also allerhand Anhaltspunkte, die wir in irgendeiner Form mathematisch aufarbeiten können. Wenn wir das für alle 16 Frequenzbänder tun, bekommt man schon ein recht aussagekräftiges Bild würde ich mal sagen.

Ich rede zuviel...

Ich hoffe der Umstand ist klar geworden.

BTW: Ich sage nicht, dass AudioID es so macht.

Nochwas: Auch so eine Software wird natürlich ihre Grenzen haben. 10 Sekunden Stille bei Bolero - um das noch einmal aufzugreifen - werden relativ ähnliche Werte bringen wie 10s Stille in einem Klassik-Stück. Ist jetzt ein überzogenes Beispiel, sicher. Aber ich denke es wird klar was ich meine.

MfG

Tonic

negaH 14. Jun 2005 11:03

Re: Grundsätzliche Funktionsweise von Musikerkennungssoftwar
 
Oben hatte ich's schon angesprochen, allerdings kam das wohl nicht so exakt rüber.

Das Ziel ist es einen inhaltlich korrekten Fingerabdruck eines Songs zu bekommen. Dieser sollte natürlich kurz sein. Man könnte jetzt eine FFT über den gesammten Songs durchführen, nur würde das fast nichts bringen. Eine solche FFT würden den kompletten Song so betrachten als würde er zeitlich gesehen mit einem einzigsten Male abgespielt werden. Viele, sehr veschiedene Songs, würden also immer ähnliche FFT Spektren erzeugen das es keinen zeitlichen Bezug des Spektrums zum Song mehr gibt.

Deshalb meinte ich oben das man eine "3D" FFT durchführt. Man erzeugt in einem zeitlichen Raster also mehrere FFT's nacheinander. Jede dieser FFT's wird zb. auf nur 16 Frequenzbänder limitiert. Angenommen wir benutzen ein Raster von 1 Sekunde, so ergibt sich also pro Sekunde eine FFT mit 16 Realwerten. Nach 3 Minuten haben wir 16 zeitliche Frequenzbänder mit jeweils 180 Realwerten, macht 180*16 insgesammt. Nun werden diese 16 Frequenzbänder nochmals normalisiert indem man 16 DFT's, also diskrete Fourier Transformationen auf diese anwendet. Angenommen diese DFT's erzeugen aus den Bändern wiederum 16 Bänder, so ergibt das am Ende 16*16 = 256 Realwerte als Fingerabdruck. Der Vorteil bei den "horizontalen" DFT's ist das sie mit Inputdaten beliebiger Länge auf Outputdaten mit fest vorgegebener Länge arbeiten können. Das bedeutet das die "vertikalen" Frequenzband-schnitte, die ja abhängig von der Songdauer sind denoch mit den abschließenden DFT's auf eine normierte Große gemappt werden können.

Also nochmal zur Verdeutlichung:
Man zerlegt die Songs in Zeitscheiben von immer gleicher Länge und erzeugt von diesen Happen "vertikale" FFT's. Jede dieser FFT's produziert sehr wenige Frequenzspektren, zb. 16. Man hat am Ende des Songs also 16 Frequenz-spektren-spuren die nun jeweils für sich gesehen einer DFT unterworfen werden. Diese DFT erzeugt sozusagen ein Frequenzspektrum über den zeitlichen Verlauf eines Frequenzspektrums in einem Song. Im Grunde kann man so errechnen in welcher Frequenz der Takt eines Songes verläuft, sprich man ermittelt den Beat, das Spektrum verschiedener Stimmen, die Benutzung klangtypischer Instrumente usw. usw.

Wir haben nun ein 16*16 Array of Double das einen Song normalisiert und komplett beschreibt. Man erzeugt nun eine Datenbank die diese Daten als "Baumstruktur" sortiert enthalten. Nun ist es einfach mit der Suche. Man erzeugt den Fingerabdruck des aktuellen Songs. Sucht den ersten Eintrag des Fingerabdruckes -> array[0], und selektiert den Knoten der Wertmäßig am nächsten kommt. Nun geht man eine Ebene im Baum tiefer und sucht dort den Wertmäßig passenden Eintrag zum array[1] Wert, usw. usw. Dabei wird immer überprüft das dieser Vergleich keine zu starken Differenzen bildet, d.h. der Song auch wirklich in der Datenbank steht. Am ende hat man im besten Falle mit 256 Vergleichen den Song in der Datenbank gefunden.

So würde ich das Problem angehen.

Gruß Hagen

Robert Marquardt 14. Jun 2005 11:32

Re: Grundsätzliche Funktionsweise von Musikerkennungssoftwar
 
Man sollte sich das Ziel vor Augen halten.
Man will erst mal nur veroeffentlichte Musikstuecke anhand eines Ausschnittes minderer Qualitaet wiedererkennen.
Ich wuerde vermuten das man einfach wie bei MP3 eine Kompression/Datenreduktion macht. Das Ziel ist die Wiedererkennung, man kann also extrem viel Information weglassen.
Man erhaelt fuer den Ausschnitt des Musikstuecks einen recht kurzen String den man nun nur in der Datenbank aller Musikstuecke (in reduzierter Form) wiederfinden muss.
Dafuer gibt es aber Standardprodukte.

Tonic1024 14. Jun 2005 11:43

Re: Grundsätzliche Funktionsweise von Musikerkennungssoftwar
 
Ist im Prinzip was ich meinte, nur von der Anderen Seite aufgezogen...

Ob FFT nun die richtige Methode ist (vermutlich ja) vermag ich nicht zu sagen. Ich bin da nicht soooo firm wie du anscheinend, Hagen. Aber auf jeden Fall die Richtige Richtung. Denn ansich macht sie nichts weiter als die Werte, wie ich versucht habe es zu umschreiben, relativ eindeutig zu analysieren (bewerten ist wohl eher das richtige Wort).

Problematisch sehe ich noch den Einstiegspunkt der "Zeitscheiben". Dieser darf ansich nicht rein zufällig erfolgen um Varianzen durch das clipping (weglaufen der Tonspur und damit verschiebung der Hüllkurve) zu vermeiden. Ist natürlich auch davon abhängig wie lang so eine Zeitscheibe ist. Dafür bietet sich ansich der Takt als Segmentstartindikator (schönes Wort :???: ) an.

Meine Befürchtung ist nur, dass sich die Fingerabdrücke duch das viele normalisieren viel zu sehr ähneln. Es ist nun müßig auszurechnen wieviele Kombinationsmöglichkeiten es geben mag weil sicherlich das was Menschen als "angenehme Musik" empfinden doch alles in eine bestimmte Richtung geht. Will sagen: Startender Düsenjäger gehört nicht dazu. und wenn man das wieder und wieder normalisiert doch immer was ähnliches rauskommen kann. Ausserdem wird von 2-4k pro Minute gesprochen und ich immernoch davon ausgehe, dass längere "Zeitscheiben" verlässlichere Werte ergeben - wie auch immer sich die berechnen.

@Robert: Ich glaube garnichtmal, dass man da viel komprimieren muss, dass es etwas bringt viel wegzulassen. schliesslich geht es ja nicht mehr um audiodaten sondern um die Geometrie des Stückes, wenn man es so sagen kann.

negaH 14. Jun 2005 12:51

Re: Grundsätzliche Funktionsweise von Musikerkennungssoftwar
 
Zitat:

Problematisch sehe ich noch den Einstiegspunkt der "Zeitscheiben". Dieser darf ansich nicht rein zufällig erfolgen um Varianzen durch das clipping (weglaufen der Tonspur und damit verschiebung der Hüllkurve) zu vermeiden. Ist natürlich auch davon abhängig wie lang so eine Zeitscheibe ist. Dafür bietet sich ansich der Takt als Segmentstartindikator (schönes Wort ) an.
Das dürfte sich bei größeren Zeitscheiben, zb. 3 Sekunden, wieder relativieren, eben auch auf grund der Eigenschaften der FFT selber. Desweiteren würde man zwar eine zb. 1024 Spektren FFT anwenden, aber nur sehr markante Einzelbänder dieser Spektren benutzen. Zb. geht man von 22KHz Samples aus, so ergibt das bei 1024 Punkte FFT's pro Frequenzband ca. 21 Hz. Statt nun 1024 "Frequenzspuren" zu benutzen würde man sich auf die Bänder 1000Hz bis 3000Hz als 1 Band festlegen, somit also den menschlichen Sprachbereich selektieren. Dann noch die Spektren in den Bereichen 50Hz-100Hz, 100Hz-1Khz und die oberen Frequenzen 10Khz usw. zusammenfassen. Statt also 16 gleichverteilte Frequenzspektren, erzeugt mit einer 16 Punkte FFT, zu benutzen, werden ganz spezielle Spektren einer 1024 Punkte FFT ausgewählt. Die große Frage dabei ist nur welche Frequenzbereiche am eindeutigsten einen Durchschnittssound markieren.

Die anschließenden DFT's über die so erzeugten Frequenzspuren dürfen natürlich nicht so bearbeitet werden.

Zitat:

Meine Befürchtung ist nur, dass sich die Fingerabdrücke duch das viele normalisieren viel zu sehr ähneln.
Naja, Ähnlichkeit ist ja im Grunde auch ein Ziel der Übung. Nachdem man ähnliche Songs gefunden hat kann man ja nochmals mit höherer Auflösung einen Vergleich starten. In der DB werden ja nicht nur der Fingerabdruck und der Interpret/Name gespeichert sondern auch das Musikstück.

Gruß Hagen

Tonic1024 15. Jun 2005 07:39

Re: Grundsätzliche Funktionsweise von Musikerkennungssoftwar
 
Hm... hört sich ansich plausibel an, aber sollte nicht ein Fingerabdruck weitgehend eindeutig sein?

Robert Marquardt 15. Jun 2005 09:15

Re: Grundsätzliche Funktionsweise von Musikerkennungssoftwar
 
Ich waere ueberrascht wenn ein Fingerabdruck fuer ein gesamtes Musikstueck mehr als 4K braucht um eindeutig zu sein.
CDs werden ja auch recht eindeutig anhand der Anzahl und Laufzeiten der Stuecke erkannt.

Newbie44 15. Jun 2005 09:41

Re: Grundsätzliche Funktionsweise von Musikerkennungssoftwar
 
Die Fingerabdrücke sind Zahlen, die den durchschnitt eines Musikstückes darstellen, diesen kann man z. B. mit Adobe Audition berrechnen (habens sie sogar mal bei Quarks und Co gebracht) dann bekommt man eine reihe von zahlen, das sieht dann ungefähr so aus
Code:
Freq   Links   Rechts
0   -45.367710113   -45.382789612
43.066   -49.53125   -49.515586853
86.132   -48.756378174   -48.600914001
129.199   -52.390762329   -52.252807617
172.265   -53.316223144   -61.125839233
215.332   -49.260944366   -52.111953735
258.398   -29.846035004   -29.505310059
301.464   -16.182006836   -15.843066215
344.531   -10.300312996   -9.990633965
387.597   -10.90466404   -10.607632637
430.664   -18.369026184   -18.138969421
473.73   -35.129356384   -35.215774536
516.796   -26.909362793   -26.637435913
559.863   -28.266746521   -28.15089035
602.929   -36.720916748   -36.662254333
645.996   -53.090690613   -53.074508667
689.062   -66.393470764   -62.771102905
732.128   -66.902481079   -61.925476074
775.195   -62.284614563   -76.257148743
818.261   -58.671775818   -64.306236267
861.328   -58.038032532   -60.516601562
904.394   -53.934570312   -54.867149353
947.46   -54.433746338   -55.226387024
990.527   -65.507019043   -64.75642395
1033.593   -54.353187561   -54.397796631
1076.66   -60.693237305   -60.256950378
1119.726   -59.107658386   -57.4845047
1162.792   -59.166503906   -58.460571289
1205.859   -56.245857239   -58.612640381
1248.925   -51.102878571   -56.23513031
1291.992   -59.970863342   -58.44152832
1335.058   -37.085189819   -36.986106873
1378.125   -28.774829864   -29.246253967
1421.191   -28.134849548   -28.911502838
1464.257   -30.644416809   -33.484077454
1507.324   -30.343986511   -32.507392883
1550.39   -35.81477356   -37.996547699
1593.457   -48.822834015   -54.14024353
1636.523   -63.409927368   -69.808036804
1679.589   -62.03767395   -62.320709228
1722.656   -64.961967468   -65.199630737
1765.722   -67.673309326   -67.491195679
1808.789   -63.511634827   -63.594100952
1851.855   -60.83506012   -60.811676025
1894.921   -60.700408936   -60.686592102
1937.988   -64.695472717   -64.807800293
1981.054   -69.225509644   -69.610267639
2024.121   -66.812606811   -66.055976868
2067.187   -56.818504333   -56.24344635
2110.253   -55.950920105   -55.417312622
2153.32   -61.977470398   -61.541847229
2196.386   -71.677352905   -72.558654785
2239.453   -71.142250061   -71.695053101
2282.519   -71.739547729   -71.973876953
2325.585   -86.741279602   -82.66734314
2368.652   -69.830604553   -64.477630615
2411.718   -66.155227661   -60.426361084
2454.785   -69.756141663   -62.214424133
2497.851   -69.666000366   -66.411361694
2540.917   -65.145645142   -64.938728332
2583.984   -64.702201843   -64.713180542
2627.05   -66.785377502   -66.7684021
2670.117   -70.943481445   -70.912788391
2713.183   -78.707946777   -78.723632812
2756.25   -78.939048767   -78.879425049
2799.316   -73.422195435   -73.385856628
2842.382   -73.375015259   -73.373252869
2885.449   -77.999595642   -78.061790466
2928.515   -79.623558044   -79.717712402
2971.582   -66.285133362   -66.300354004
3014.648   -57.457023621   -57.45803833
3057.714   -55.759674072   -55.761528015
3100.781   -59.561653137   -59.619697571
3143.847   -62.63570404   -63.205856323
3186.914   -61.90612793   -62.717941284
3229.98   -63.028068542   -62.651023865
3273.046   -61.893280029   -60.472129822
3316.113   -43.66411972   -43.312793732
3359.179   -32.61699295   -32.363742828
3402.246   -29.726577759   -29.458454132
3445.312   -33.925662994   -33.539745331
3488.378   -46.229251862   -45.373516083
3531.445   -63.0597229   -63.736488342
3574.511   -55.955841064   -56.037628174
3617.578   -56.004066467   -55.997413635
3660.644   -59.75983429   -59.782798767
3703.71   -58.939918518   -58.943939209
3746.777   -57.463844299   -57.460357666
3789.843   -62.311203003   -62.304107666
3832.91   -82.209709167   -82.233673096
3875.976   -77.266296387   -77.374908447
3919.042   -77.151901245   -77.321128845
3962.109   -75.86201477   -75.942298889
4005.175   -76.249061584   -76.27041626
4048.242   -80.089347839   -80.238342285
4091.308   -80.057403564   -79.938087463
4134.375   -81.737434387   -81.275543213
4177.441   -79.968688965   -81.028450012
4220.507   -77.768661499   -80.391540527
4263.574   -77.780250549   -81.999137878
4306.64   -78.828964233   -88.034751892
4349.707   -79.503364563   -82.003967285
4392.773   -79.194030762   -79.861022949
4435.839   -75.216896057   -75.739776611
4478.906   -70.835372925   -69.770576477
4521.972   -62.856079102   -62.27444458
4565.039   -57.507873535   -57.197486877
4608.105   -58.082267761   -57.93850708
4651.171   -66.31526947   -66.225784302
4694.238   -81.565681457   -73.057945251
4737.304   -78.244102478   -70.922355652
4780.371   -79.607055664   -71.932357788
4823.437   -76.290222168   -72.259925842
4866.503   -71.709190369   -71.050888061
4909.57   -70.605003357   -69.938026428
4952.636   -72.240562439   -70.201934814
4995.703   -73.922821045   -70.186302185
5038.769   -69.487045288   -68.462112427
5081.835   -69.760795593   -70.388458252
5124.902   -74.141059875   -78.91280365
5167.968   -75.272033691   -77.335571289
5211.035   -68.876205444   -71.152183533
5254.101   -82.48840332   -80.850631714
5297.167   -53.605911255   -53.700561523
5340.234   -43.8621521   -43.889072418
5383.3   -41.939090729   -41.958633423
5426.367   -46.983345032   -47.02954483
5469.433   -59.126411438   -59.262207031
5512.5   -71.617469788   -74.18837738
5555.566   -86.556694031   -75.217086792
5598.632   -74.96207428   -70.490692139
5641.699   -72.228614807   -72.230125427
5684.765   -71.874938965   -74.220993042
5727.832   -71.390480041   -72.972946167
5770.898   -72.585960388   -74.130966186
5813.964   -75.680633545   -78.461196899
5857.031   -80.582946777   -79.977165222
5900.097   -85.189651489   -84.970146179
5943.164   -80.468643188   -97.744270325
5986.23   -78.320205688   -114.863708496
6029.296   -80.108551025   -106.692268372
6072.363   -84.887001038   -90.886634827
6115.429   -85.305229187   -79.863899231
6158.496   -81.946365356   -75.118247986
6201.562   -78.007209778   -73.19367981
6244.628   -75.892379761   -73.243606567
6287.695   -75.930099487   -75.068443298
6330.761   -78.918006897   -78.810928345
6373.828   -85.785354614   -86.08405304
6416.894   -96.306900024   -97.685874939
6459.96   -93.408058166   -93.735389709
6503.027   -85.115020752   -85.143600464
6546.093   -78.355781555   -78.387443542
6589.16   -69.765556335   -69.771118164
6632.226   -63.931396484   -63.919265747
6675.292   -63.105545044   -63.081138611
6718.359   -68.009582519   -67.971832275
6761.425   -76.76285553   -76.759757996
6804.492   -79.431343079   -79.477996826
6847.558   -83.390289307   -83.395004272
6890.625   -93.432731628   -93.436920166
6933.691   -92.133499145   -92.880256653
6976.757   -82.069267273   -82.261901855
7019.824   -76.922088623   -77.014007568
7062.89   -67.271530151   -67.277305603
7105.957   -58.951301575   -58.94960022
7149.023   -57.470359802   -57.468307495
7192.089   -62.665092468   -62.665306091
7235.156   -75.365844727   -75.402786255
7278.222   -89.486083984   -89.209442139
7321.289   -82.011924744   -81.899406433
7364.355   -84.103424072   -83.947669983
7407.421   -80.864646912   -80.846855164
7450.488   -74.662025452   -74.701034546
7493.554   -68.919166565   -68.937744141
7536.621   -65.905151367   -65.914215088
7579.687   -59.825691223   -59.830169678
7622.753   -51.336559296   -51.338981628
7665.82   -47.978832245   -47.980712891
7708.886   -51.152019501   -51.149055481
7751.953   -62.680496216   -62.677642822
7795.019   -81.449668884   -81.275245666
7838.085   -73.222618103   -73.206115723
7881.152   -69.83972168   -69.80859375
7924.218   -70.246421814   -70.1612854
7967.285   -71.757072449   -71.687431335
8010.351   -72.133522034   -72.701728821
8053.417   -75.537345886   -80.461288452
8096.484   -87.189018249   -76.235610962
8139.55   -72.160362244   -67.019226074
8182.617   -61.840431213   -60.256195068
8225.683   -58.613433838   -58.127754211
8268.75   -62.259437561   -62.149589539
8311.816   -74.593055725   -74.748283386
8354.882   -86.873527527   -84.805908203
8397.949   -92.428695679   -88.267906189
8441.015   -108.936584473   -96.001983643
8484.082   -110.006774902   -105.702758789
8527.148   -113.5753479   -123.619354248
8570.214   -130.074966431   -125.030456543
8613.281   -116.228164673   -123.012527466
8656.347   -118.515670776   -130.718078613
8699.414   -124.892730713   -118.098510742
8742.48   -117.179244995   -112.148025513
8785.546   -110.958747864   -109.523361206
8828.613   -116.492370605   -114.393280029
8871.679   -115.566444397   -114.670883179
8914.746   -133.304260254   -116.520767212
8957.812   -120.879653931   -116.405593872
9000.878   -106.697616577   -109.322349548
9043.945   -94.204620361   -94.574043274
9087.011   -86.850624084   -86.889709473
9130.078   -84.27922821   -84.311180115
9173.144   -86.783699036   -86.789100647
9216.21   -98.798706055   -98.391044617
9259.277   -90.183059692   -90.186431885
9302.343   -84.752601624   -84.722976685
9345.41   -85.100059509   -85.102882385
9388.476   -90.110282898   -90.290374756
9431.542   -97.053161621   -97.525756836
9474.609   -94.260742187   -94.331565857
9517.675   -92.433883667   -92.5807724
9560.742   -98.902854919   -99.869750977
9603.808   -94.905326843   -94.695533752
9646.875   -92.989967346   -92.985359192
9689.941   -97.790023804   -98.082206726
9733.007   -107.643379211   -108.334205627
9776.074   -110.875511169   -113.58833313
9819.14   -102.812294006   -102.68283844
9862.207   -94.090461731   -94.023277283
9905.273   -92.740036011   -92.745315552
9948.339   -100.623321533   -100.553398132
9991.406   -94.356147766   -94.163406372
10034.472   -98.771308899   -98.816177368
10077.539   -87.388717651   -87.601158142
10120.605   -82.246681213   -82.262023926
10163.671   -80.865036011   -80.821998596
10206.738   -81.684333801   -81.604568481
10249.804   -84.527290344   -84.434318542
10292.871   -92.537788391   -92.39263916
10335.937   -96.531929016   -97.098731995
10379.003   -81.30846405   -81.428627014
10422.07   -69.392211914   -69.438537598
10465.136   -60.630157471   -60.647689819
10508.203   -57.391166687   -57.400352478
10551.269   -60.38432312   -60.39201355
10594.335   -69.017204285   -69.023132324
10637.402   -77.053947449   -77.030441284
10680.468   -83.776054382   -83.810684204
10723.535   -100.936256409   -101.571090698
10766.601   -102.794036865   -102.046157837
10809.667   -103.851905823   -101.947280884
10852.734   -90.624053955   -89.873977661
10895.8   -89.019973755   -88.426231384
10938.867   -95.332099915   -94.440559387
10981.933   -105.826751709   -104.728012085
11025   -96.857978821   -97.338653564
11068.066   -87.336959839   -89.949462891
11111.132   -80.898620605   -83.703430176
11154.199   -77.106918335   -75.711753845
11197.265   -74.775878906   -72.910629272
11240.332   -79.52003479   -78.041908264
11283.398   -90.830856323   -90.291862488
11326.464   -99.223640442   -99.620735168
11369.531   -106.436180115   -107.347450256
11412.597   -95.668388367   -95.529289246
11455.664   -92.062431335   -92.098670959
11498.73   -95.307777405   -95.705238342
11541.796   -113.544197082   -114.517120361
11584.863   -107.842597961   -107.503540039
11627.929   -109.473754883   -112.560653686
11670.996   -104.431907654   -104.127761841
11714.062   -102.115196228   -101.146881103
11757.128   -108.250160217   -107.129371643
11800.195   -99.569801331   -100.207183838
11843.261   -100.791679382   -100.313522339
11886.328   -100.318954468   -100.038246155
11929.394   -96.423591614   -96.771362305
11972.46   -102.198638916   -103.234519958
12015.527   -108.511764526   -108.309516907
12058.593   -98.621055603   -98.53351593
12101.66   -97.513671875   -96.962120056
12144.726   -104.706481934   -105.586112976
12187.792   -100.887382507   -101.055740356
12230.859   -101.970909119   -101.649459839
12273.925   -95.73072052   -95.669059753
12316.992   -97.723556519   -98.612876892
12360.058   -99.267951965   -98.797492981
12403.125   -95.860305786   -96.593444824
12446.191   -102.23765564   -103.730117798
12489.257   -101.084152222   -101.477180481
12532.324   -97.68875885   -97.719787598
12575.39   -103.432426453   -103.06539154
12618.457   -110.90071106   -110.790115356
12661.523   -107.252540588   -108.252761841
12704.589   -111.618652344   -109.593559265
12747.656   -101.617835999   -101.700431824
12790.722   -101.970031738   -101.235733032
12833.789   -102.63154602   -101.666717529
12876.855   -99.40499115   -100.251045227
12919.921   -110.205947876   -117.332611084
12962.988   -111.411651611   -108.268295288
13006.054   -115.12726593   -117.765594482
13049.121   -95.889984131   -95.714157104
13092.187   -90.710487366   -90.718933105
13135.253   -92.663711548   -93.043571472
13178.32   -102.667770386   -105.086135864
13221.386   -105.222122192   -102.41191864
13264.453   -91.747329712   -91.257125854
13307.519   -85.839309692   -85.736465454
13350.585   -84.349372864   -84.304176331
13393.652   -85.875350952   -85.796150207
13436.718   -86.644561768   -86.550254822
13479.785   -87.048995972   -86.946533203
13522.851   -93.935768127   -94.209434509
13565.917   -94.847450256   -94.715057373
13608.984   -96.167320251   -97.131385803
13652.05   -107.345870972   -103.346534729
13695.117   -94.830513   -91.768562317
13738.183   -83.282646179   -86.336204529
13781.25   -78.496917725   -86.963630676
13824.316   -75.815368652   -76.871803284
13867.382   -73.954566956   -72.495758057
13910.449   -79.044326782   -76.547607422
13953.515   -89.278556824   -86.146331787
13996.582   -91.437606811   -91.295661926
14039.648   -90.386192322   -90.536705017
14082.714   -84.98286438   -84.939308166
14125.781   -83.58165741   -83.539649963
14168.847   -84.900688171   -84.919448853
14211.914   -85.254493713   -85.36403656
14254.98   -86.748558044   -87.003334045
14298.046   -92.453529358   -92.945549011
14341.113   -104.653610229   -105.116615295
14384.179   -120.835784912   -128.306716919
14427.246   -119.252227783   -124.783325195
14470.312   -128.181732178   -120.213256836
14513.378   -122.836502075   -121.998291016
14556.445   -120.90914917   -126.83631897
14599.511   -132.583877563   -130.307342529
14642.578   -125.7578125   -130.665786743
14685.644   -124.021316528   -127.219772339
14728.71   -128.47315979   -121.618423462
14771.777   -125.712631226   -123.188583374
14814.843   -129.44392395   -123.00428772
14857.91   -122.956192017   -127.534820557
14900.976   -117.043701172   -123.743530273
14944.042   -116.716262817   -133.653640747
14987.109   -118.830718994   -122.166976929
15030.175   -123.090515137   -118.45980835
15073.242   -124.77947998   -116.461334228
15116.308   -128.620040894   -123.388916016
15159.375   -126.319793701   -127.511062622
15202.441   -120.048416138   -123.615875244
15245.507   -119.646697998   -121.380966186
15288.574   -124.950073242   -121.84185791
15331.64   -134.420944214   -119.846603394
15374.707   -129.102111816   -130.229019165
15417.773   -127.621841431   -119.897125244
15460.839   -125.149810791   -127.145980835
15503.906   -115.894058228   -117.771469116
15546.972   -118.702255249   -117.715560913
15590.039   -127.757492065   -127.905014038
15633.105   -127.095184326   -130.616119385
15676.171   -118.714920044   -128.035308838
15719.238   -124.574111938   -124.986663818
15762.304   -127.380325317   -119.787017822
15805.371   -122.925827026   -126.570114136
15848.437   -119.097122192   -128.593002319
15891.503   -117.266143799   -129.048339844
15934.57   -117.037826538   -122.524169922
15977.636   -118.369003296   -126.125183105
16020.703   -121.117004394   -122.146896362
16063.769   -119.435058594   -122.263702393
16106.835   -120.518096924   -126.861083984
16149.902   -118.50263977   -123.023681641
16192.968   -116.024848938   -120.694198608
16236.035   -118.093399048   -136.540130615
16279.101   -125.569213867   -126.76184082
16322.167   -120.796936035   -122.025146484
16365.234   -121.970428467   -116.809005737
16408.3   -125.854446411   -122.278930664
16451.367   -118.929199219   -123.115463257
16494.433   -120.059127808   -116.945785522
16537.5   -126.659072876   -118.578414917
16580.566   -126.572296143   -122.490402222
16623.632   -131.491073608   -121.911499023
16666.699   -128.482376099   -120.069641113
16709.765   -127.25289917   -121.037780762
16752.832   -129.565628052   -120.344604492
16795.898   -114.820838928   -118.316925049
16838.964   -94.720863342   -95.182418823
16882.031   -84.208221436   -84.343452454
16925.097   -79.84866333   -79.943359375
16968.164   -80.723197937   -80.805030823
17011.23   -86.995071411   -87.045448303
17054.296   -100.035720825   -100.250160217
17097.363   -125.147827148   -135.190124512
17140.429   -128.668945312   -122.172103882
17183.496   -127.681213379   -122.07043457
17226.562   -128.33706665   -120.166366577
17269.628   -124.850036621   -120.351882935
17312.695   -122.100219727   -128.481964111
17355.761   -122.031814575   -128.921356201
17398.828   -123.499023437   -126.909896851
17441.894   -137.318695068   -127.862609863
17484.96   -123.438980103   -120.283462524
17528.027   -119.527862549   -119.016571045
17571.093   -122.342727661   -127.197174072
17614.16   -124.872970581   -126.715408325
17657.226   -127.072784424   -118.843582153
17700.292   -126.028030395   -117.705291748
17743.359   -122.740875244   -121.755584717
17786.425   -122.636413574   -125.954711914
17829.492   -129.439315796   -125.688018799
17872.558   -132.932037353   -123.287994385
17915.625   -127.742248535   -119.589065552
17958.691   -133.899841309   -119.868621826
18001.757   -131.17590332   -121.441955566
18044.824   -130.619445801   -128.798019409
18087.89   -125.121963501   -129.788482666
18130.957   -123.846969604   -124.933364868
18174.023   -126.332717895   -120.950408936
18217.089   -125.474487305   -116.27583313
18260.156   -125.147079468   -115.251327515
18303.222   -126.280548096   -118.936416626
18346.289   -123.305984497   -123.884857178
18389.355   -120.549682617   -124.461334228
18432.421   -121.671524048   -123.24597168
18475.488   -121.731063843   -120.569274902
18518.554   -120.777923584   -123.025970459
18561.621   -121.214111328   -127.020629883
18604.687   -122.479003906   -126.078872681
18647.753   -121.738464355   -131.139846802
18690.82   -125.335357666   -124.903991699
18733.886   -132.244720459   -119.753417969
18776.953   -124.724945068   -118.003250122
18820.019   -128.742675781   -121.238800049
18863.085   -119.817504883   -130.953125
18906.152   -115.954902649   -130.91708374
18949.218   -115.285881042   -130.758972168
18992.285   -115.163513184   -131.043563843
19035.351   -117.680007935   -131.008514404
19078.417   -121.557373047   -131.511825561
19121.484   -125.130172729   -128.848007202
19164.55   -139.820785522   -126.311569214
19207.617   -123.212677002   -127.569992065
19250.683   -127.782867432   -144.391845703
19293.75   -140.920455933   -121.253967285
19336.816   -131.871032715   -116.636749268
19379.882   -122.606506348   -114.972877502
19422.949   -120.063827515   -114.985855103
19466.015   -121.39982605   -116.428665161
19509.082   -137.249755859   -119.16506958
19552.148   -125.47428894   -121.632980347
19595.214   -119.623596191   -123.288284302
19638.281   -115.888504028   -121.055389404
19681.347   -115.403358459   -121.66053772
19724.414   -120.339584351   -125.260116577
19767.48   -132.114700317   -122.402450561
19810.546   -120.039733887   -120.398696899
19853.613   -117.142593384   -122.910232544
19896.679   -120.595687866   -130.665542603
19939.746   -136.066162109   -132.382003784
19982.812   -128.220031738   -127.25352478
20025.878   -124.256484985   -121.460891724
20068.945   -122.753219604   -121.486755371
20112.011   -121.841339111   -127.413650513
20155.078   -123.122894287   -144.203475952
20198.144   -126.293075561   -145.238815308
20241.21   -119.860702515   -130.514526367
20284.277   -115.929214478   -124.840988159
20327.343   -120.918823242   -125.538299561
20370.41   -134.012329102   -126.787628174
20413.476   -122.214370728   -130.120559692
20456.542   -119.938232422   -132.403900146
20499.609   -119.734375   -126.631362915
20542.675   -121.755950928   -120.908401489
20585.742   -120.386245728   -120.111572266
20628.808   -119.90071106   -120.798248291
20671.875   -123.187652588   -121.265274048
20714.941   -135.575881958   -125.038253784
20758.007   -136.714950561   -128.216903686
20801.074   -129.941574097   -127.349334717
20844.14   -126.149703979   -129.505737305
20887.207   -125.193450928   -134.27885437
20930.273   -122.493667603   -127.614151001
20973.339   -124.135269165   -121.321075439
21016.406   -126.383514404   -115.232543945
21059.472   -114.963142395   -112.50617981
21102.539   -113.402252197   -114.176811218
21145.605   -115.03603363   -119.578475952
21188.671   -117.269226074   -130.027740478
21231.738   -118.420837402   -137.111877441
21274.804   -116.896362305   -130.854476929
21317.871   -117.747802734   -125.016952515
21360.937   -121.62588501   -119.638275146
21404.003   -121.798141479   -117.094955444
21447.07   -122.067077637   -116.424194336
21490.136   -122.584259033   -118.070968628
21533.203   -126.677947998   -121.153793335
21576.269   -130.765884399   -127.492401123
21619.335   -123.035614014   -138.144836426
21662.402   -118.71546936   -128.189926147
21705.468   -117.428634644   -123.538375854
21748.535   -117.256759644   -124.114639282
21791.601   -119.95576477   -123.707595825
21834.667   -124.77973938   -122.355880737
21877.734   -124.027404785   -124.326019287
21920.8   -121.870376587   -125.507904053
21963.867   -122.23538208   -127.923110962
22006.933   -125.824264526   -134.673980713
Der durchschnittsert jeder Frequenz ist dort zusehen, nun werden nur bestimmte Stellen untersucht ob diese ähneln.

Das ist eigentlich der ganze trick dabei, und MD5 summen kommen dafür nicht in Frage man muss das anhand von Freqeunzen berrechnen.

Bei Quarks und co. wurde das mal ausfürhlich behandelt

Gruß

Sebby

Schneider-Huetter 15. Jun 2005 10:30

Re: Grundsätzliche Funktionsweise von Musikerkennungssoftwar
 
Aber wenn lediglich der Durchschnitt über das gesamte Stück berechnet wird fehlt doch der Zeitbezug wie negaH schon sagte:

Zitat:

Man könnte jetzt eine FFT über den gesammten Songs durchführen, nur würde das fast nichts bringen. Eine solche FFT würden den kompletten Song so betrachten als würde er zeitlich gesehen mit einem einzigsten Male abgespielt werden.
oder :gruebel:

Newbie44 15. Jun 2005 10:36

Re: Grundsätzliche Funktionsweise von Musikerkennungssoftwar
 
Nein es fehlt nicht der Zeitbezug vollkommen falsch. Wenn ich 1 sekunde oder 3 des stückes habe vergleiche ich die FFT positionen miteinander. es ist ja nur der durchschnitt und nur die auffallensden stellen sind gemerkt wurden ich vergleiche nur die 3 sekunden mit dem durchschnitt der im ganzen stück gegeben ist wenn viele positionen übereinstimmen dann weiss man das das stück das ist.

so wird das wirklich gemacht, deshalb verschätzen sich auch manchmal solche systeme so 100%tig geht das trotzdem noch nicht richtig

negaH 15. Jun 2005 16:33

Re: Grundsätzliche Funktionsweise von Musikerkennungssoftwar
 
Hm, sehe ich nicht so. Wenn man eh schon mit FFT's arbeitet dann ist es ein leichtes mit den zusätzlichen DFT's über die erzeugten FFT Schnitte eine 3D Spektren-Analyse als Fingerabdruck zu benutzen.

Ich weis zwar nicht ob diese Methode in der Musikerkennung benutzt wird, ich weis aber mit Sicherheit das die Forscher der NASA exakt so den Kosmos abhorchen und auf dieses Art und Weise zB. die verschiedenen "Sounds" der unterschiedlichen Galaxien vergleichen.

Entscheidend ist doch das man die zeitliche Abhängigkeit verschiedener Melodien, Stimmen und Instrumente der Sounds "normalisieren" muß, sprich vergleichbar machen muß. Das würde bei der 3D FFT nur durch die letzten DFT's über die erzeugten zeitlichen Frequenzschnitte erfolgen. Es wäre dann eben "fast" egal ob man über den gleichen Sound nur teilweise oder vollständig den Fingerabdruck erzeugt hat.

Wählt man aber willkürlich einen 3 Sekunden Abschnitt eines Sounds als Fingerabdruck aus und vergleicht diesen mit den Durchschnittswerten der gesampelten Sounds so meine ich das das ja zwangsläufig zu Fehlerkennungen führen muß. Meiner Meinung nach vergleicht man dann nämlich zwei unterschiedliche Dinge miteinander. (Hagen eher skeptisch ist)

Gruß Hagen

trifid 15. Jun 2005 22:16

Re: Grundsätzliche Funktionsweise von Musikerkennungssoftwar
 
In Kapitel 9 (Chapter 9: Wavelets PDF) von
http://www.atmos.washington.edu/~den...Notes_ftp.html
wird mit Hilfe von Wavelets ein Beispiel gezeigt´...

moebak 7. Aug 2006 10:03

Re: Grundsätzliche Funktionsweise von Musikerkennungssoftwar
 
Hallo,
hab mich recht spät zugeschaltet, aber hoffe noch nicht zu spät. Zufälligerweise beschäftige ich mich gerade mit diesem Thema in meinem Praktikum beim Fraunhofer IPSI. Um es kurz zu machen, nimm dich folgener URL an:
http://ismir2002.ismir.net/proceedings/02-FP04-2.pdf
Vor allem der Auschnitt zur Merkmalsextraktion wird dir alle deine Fragen beantworten.
schönen Gruß
moebak

Schneider-Huetter 8. Aug 2006 13:44

Re: Grundsätzliche Funktionsweise von Musikerkennungssoftwar
 
Vielen Dank moebak, das ist wirklich der erste vernünftige Artikel, den ich zu diesem Thema gelesen habe! Ich habe mich mangels Informationen kaum noch mit dem Thema befasst, aber nun werde ich wohl wieder einsteigen. Ein wirklich erstklassiger Artikel...

Schneider-Huetter 9. Aug 2006 13:06

Re: Grundsätzliche Funktionsweise von Musikerkennungssoftwar
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
beim näheren Durchlesen des Artikels haben sich doch noch einige Fragen ergeben, v.a. beim Einteilen in die Frames und beim Gewichten mit dem Hanning-Fenster bin ich mir nicht ganz sicher, ob ich es richtig verstanden habe.
Ich habe mal 2 Graphiken angehängt, die zeigen, wie ich mir das Ganze vorstelle.
Bei folgenden Punkten bin ich mir noch unsicher:
- Ist das Aufteilen der Frames so richtig, wie ich es in den angehängten Graphiken eingezeichnet habe?
- Wird das Hanning-Fenster einfach über jeden Frame gelegt und ist genau so breit wie ein Frame?
- wenn ein Frame 0,37s lang ist, müsste dieser bei 5kHz doch 1850 Samples (0,37 s *5000 Hz), und nicht wie angegeben 2048 Samples enthalten. Kommt die 2048 vielleicht von der FFT, da man hier ja nur 2er-Potenzen verwenden sollte? Müssen die fehlenden 198 Samples dann mit Nullen aufgefüllt werden?
- In dem Extraktionsschema wird die Energie mit Summe(x^2) berechnet, in einem Band eines Frames steht aber doch immer nur ein einzelner Wert, warum dann die Summe?

Fragen über Fragen, ich hoffe ihr könnt mir etwas weiterhelfen :gruebel:


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:35 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz