Vergleichen Sie zwei spectogram zu finden, die das offset, wo Sie match-Algorithmus

Nehme ich täglich 2 Minuten-radio-Sendung aus dem Internet. Es sind immer die gleichen Start-und End-jingle. Da die radio-broadcast-genaue Zeit kann variieren von mehr oder weniger 6 Minuten, die ich aufnehmen rund 15 Minuten radio.

Möchte ich, um die genaue Zeit, wo es diese jingles werden in den 15 Minuten aufzeichnen, so kann ich extrahieren Sie die Teil der audio-ich will.

Ich bereits eine C# - Anwendung, wo ich das Dekodieren von MP3 zu PCM-Daten umwandeln und die PCM-Daten, um ein Spektrogramm basierend auf http://www.codeproject.com/KB/audio-video/SoundCatcher.aspx

Ich habe versucht, eine Cross-Correlation-Algorithmus auf die PCM-Daten, aber der Algorithmus ist sehr langsam, etwa 6 Minuten mit einem Schritt von 10ms und gibt Anlass, es nicht zu finden, die jingle-start-Zeit.

Ideen der algorithmen für den Vergleich von zwei Spektrogramm für ein match? Oder einen besseren Weg zu finden, dass jingle Startzeit?

Dank,

Update, sorry für die Verzögerung

Erste, ich danke für alle anwsers die meisten von Ihnen waren relevant und oder interessanten Ideen.

Habe ich versucht zu implementieren, die Shazam-Algorithmus vorgeschlagen von fonzo. Aber nicht zu erkennen, die peaks im Spektrogramm. Hier drei Spektrogramme der Start-jingle aus drei verschiedenen Datensätzen. Ich versuchte AForge.NET mit dem blob-filter (jedoch nicht identifizieren von peaks), verschwimmt das Bild und überprüfen Sie die Differenz in der Höhe, die Laplace-Faltung, slope-Analyse, erkennen der Reihe vertikaler Balken (aber es gab zu viele false positives)...

In der Zwischenzeit, während ich versuchte die Hough-Algorithmus vorgeschlagen, von Dave Aaron Smith. Wo berechne ich den RMS der einzelnen Spalten. Ja ja die einzelnen Spalten, es ist ein O(N*M), aber M << N (Beachte a-Säule ist um 8k-sample). So im gesamten ist es nicht schlecht, noch der Algorithmus dauert etwa 3 Minuten, hat aber nie nicht.

Ich konnte gehen mit, dass die Lösung, aber wenn möglich, würde ich lieber den Shazam, weil es O(N) und wahrscheinlich sehr viel schneller (und Kühler ist Sie auch). Also kennt einer von Euch eine Idee eines Algorithmus erkennt immer die gleichen Punkte in diese Spektrogramme (nicht zu Spitzen), durch einen Kommentar hinzufügen.

Vergleichen Sie zwei spectogram zu finden, die das offset, wo Sie match-Algorithmus

Vergleichen Sie zwei spectogram zu finden, die das offset, wo Sie match-Algorithmus

Vergleichen Sie zwei spectogram zu finden, die das offset, wo Sie match-Algorithmus

Neues Update

Schließlich ging ich mit dem Algorithmus oben erklärt, habe ich versucht zu implementieren, die Shazam-Algorithmus, aber konnte nicht finden, die richtigen peaks im Spektrogramm, die identifizierten Punkte, wo nicht konstant aus einer sound-Datei zu einer anderen. In der Theorie, die Shazam-Algorithmus ist die Lösung für diese Art von problem. Die Hough-Algorithmus vorgeschlagen, von Dave Aaron Smith war mehr stabil und effektiv. Ich splitten um die 400 Dateien, und nur 20 von Ihnen scheitern zu split richtig. Speicherplatz, wenn von 8 GB auf 1 GB.

Dank, für deine Hilfe.

Schreibe einen Kommentar