Aufräumen von lauten Cepstrum-Ergebnissen

8

Ich habe an einer einfachen Frequenzerkennung auf dem iPhone gearbeitet. Die Analyse im Frequenzbereich unter Verwendung von FFT-Ergebnissen war in der Gegenwart von Harmonischen etwas unzuverlässig. Ich hatte gehofft, Cepstrum-Ergebnisse zu verwenden, um zu entscheiden, welche Grundfrequenz spielt.

Ich arbeite mit AudioQueues im AudioToolbox-Framework und mache die Fourier-Transformationen mit dem Accelerate-Framework.

Mein Prozess ist genau das, was auf Wikipedia im Cepstrum-Artikel für das Real Power Cepstrum aufgeführt ist: Signal → FT → abs () → Quadrat → log → FT → abs () → Quadrat → Power Cepstrum.

Das Problem, das ich habe, ist, dass die Cepstrum-Ergebnisse extrem laut sind. Ich muss die ersten und letzten 20 Werte fallen lassen, da sie im Vergleich zu den anderen Werten astronomisch sind. Selbst nach dem "Säubern" der Daten gibt es immer noch eine große Variation - viel mehr, als ich angesichts der ersten Grafik erwarten würde. In den folgenden Bildern sehen Sie die Visualisierungen der Frequenzdomäne und der Quefrency-Domäne. FFT Cepstrum

Wenn ich einen so klaren Gewinner im Frequenzbereich wie in diesem Graphen sehe, erwarte ich ein ähnlich klares Ergebnis in der Quefrency-Domäne. Ich spielte A440 und würde erwarten, dass bin 82 die höchste Größe hat. Der dritte Peak in der Grafik repräsentiert die Bin 79, die nahe genug ist. Wie gesagt, die ersten 20 Bins sind so astronomisch groß, dass sie unbrauchbar sind, und ich musste sie aus dem Datensatz löschen, um etwas zu sehen. Eine andere seltsame Eigenschaft der Cepstrum-Daten ist, dass die geraden Bins viel höher als die ungeraden Bins zu sein scheinen. Hier sind die Häufigkeitsbins von 77-86:

%Vor%

Meine Frage ist, wie man die Frequenzdomäne bereinigt, so dass meine Cepstrum-Domain-Ergebnisse nicht so wild sind. Hilf mir, besser zu verstehen, wie man diese Ergebnisse interpretiert, wenn sie so sind, wie man es bei einer Cepstrum-Analyse erwarten würde. Ich kann Beispiele für den Code posten, den ich verwende, aber meistens werden vDSP-Aufrufe verwendet und ich weiß nicht, wie hilfreich das wäre.

    
brodney 12.03.2011, 18:50
quelle

3 Antworten

3

Eine Cepstrum- oder Cepstralanalyse ist eine Technik, die verwendet wird, um ein Signal mit hohem Obertongehalt in zwei Teile zu trennen. Der Abschnitt in der Nähe von DC stellt die spektrale Einhüllende aller Obertöne oder des Sprachformanten dar, die für die Sprecher- oder Instrumentenerkennung nützlich sein könnten. Spätere Spitzen im Cepstrum-Ergebnis stellen die Erregerfrequenz oder -frequenzen dar, wenn diese Frequenz einen ausreichenden harmonischen Obertongehalt erzeugt.

Da ein Cepstrum normalerweise ohne (nicht-rechteckiges) Fenster ausgeführt wird, kann es eine Sinc-Antwort sogar auf eine saubere Obertonsequenz erzeugen, wobei die Breite der Antwort umgekehrt proportional zur Länge der Obertonsequenz oder der Anzahl ist von Obertönen. Und natürlich werden alle leicht unharmonischen Obertöne (wie sie in echten Musikinstrumenten vorkommen) die Cepstrum-Ergebnisse noch unordentlicher machen. So kann ein Cepstrum-Peak nur gut dazu geeignet sein, einen ungefähren Ort der Grundfrequenz anzugeben, was immer noch ein nützliches Ergebnis bei der Ablehnung anderer Frequenzkandidaten bei der Frequenzschätzung sein könnte.

Ein "sauber aussehendes" Cepstrum könnte das Ergebnis einer sehr langen Sequenz von genau harmonischen Obertönen mit einer nahezu flachen Frequenzantwort sein, die vielleicht nicht in echten Signalen zu finden ist.

    
hotpaw2 12.03.2011, 19:33
quelle
2

Die folgende Analyse veranschaulicht die Leistung von Cepstrum bei synthetischen und realen Signalen.

Zuerst untersuchen wir ein synthetisches Signal.

Die folgende Grafik zeigt eine synthetische E2-Note im Steady-State, synthetisiert mit einer typischen Nah-Gleichstrom-Komponente, einer Grundwelle bei 82,4 Hz und insgesamt 8 Harmonischen bei ganzzahligen Vielfachen von 82,4 Hz. Die synthetische Sinuskurve wurde programmiert, um 4096 Proben zu erzeugen.

Die folgende Grafik zeigt eine Nahaufnahme der Eingabe, die für die Cepstrum-Berechnung der synthetischen E2-Note verwendet wurde. Es ist das Protokoll (| FFT | ^ 2), das von der synthetischen E2-Note ausgegeben wird.

Die folgende Grafik zeigt das Cepstrum der synthetischen E2-Note. Beobachten Sie den markanten Nicht-DC-Peak bei 12.36. Die Cepstrum-Breite beträgt 1024 (die Ausgabe der zweiten FFT), daher entspricht die Spitze 1024 / 12,36 = 82,8 Hz, was sehr nahe an den tatsächlichen 82,4 Hz der Grundfrequenz liegt.

Jetzt untersuchen wir ein reales Signal.

Die folgende Grafik zeigt das Spektrum der E2-Note einer echten akustischen Gitarre.

Die folgende Grafik zeigt eine Nahaufnahme der Eingabe, die für die Cepstrum-Berechnung der E2-Note der Akustikgitarre verwendet wurde. Es ist der Log (| FFT | ^ 2) Ausgang der E2 Note der Akustikgitarre.

Die folgende Grafik zeigt das Cepstrum der E2-Note der Akustikgitarre. Beobachten Sie den markanten Nicht-DC-Peak bei 542,8. Die Cepstrum-Breite beträgt 32768 (die Ausgabe der zweiten FFT), daher entspricht die Spitze 32768 / 542,8 = 60,4 Hz, was ziemlich weit von den tatsächlichen 82,4 Hz der Grundfrequenz entfernt ist.

Die Aufnahme der E2-Gitarrennote, die für diese Analyse verwendet wurde, wurde bei 44,1 kHz mit einem hochwertigen Mikrofon unter Studiobedingungen abgetastet, es enthält im Wesentlichen kein Hintergrundgeräusch und keine anderen Instrumente oder Stimmen.

Dies verdeutlicht die große Herausforderung, die Cepstral-Analyse für die Tonhöhenbestimmung in realen Audiosignalen zu verwenden.

Referenzen:

Reale Audiosignaldaten, synthetische Signalerzeugung, Diagramme, FFT und Cepstralanalyse wurden hier durchgeführt: Musikinstrument Cepstrum

    
Babson 12.02.2013 22:33
quelle
1

Wenn ich es gut verstehe, besteht das Hauptproblem darin, eine Frequenz aus einem Audiosignal zu erkennen.

Du meinst sicher die stärkste Frequenz im Spektrum, also schlage ich vor zu verwenden Diese ausgezeichnete Bibliothek Ссылка

"Das Herz des Algorithmus ist ein sehr leistungsfähiger Wavelet-Algorithmus, der in einem Artikel von Eric Larson und Ross Maddox beschrieben wird:" Real-Time Time-Domain Pitch Tracking mit Wavelets "von UIUC Physics."

Hoffen Sie diese Hilfe

    
jackdev23 12.02.2013 11:30
quelle