Können Sie die Frequenzauflösung der FFT erhöhen, ohne die Fenstergröße zu erhöhen?


12

Ich möchte STFT für die Multipitch-Analyse verwenden. Mir ist klar, dass das Erkennen der im Signal vorhandenen Teiltöne nur der Anfang ist. Ich habe immer noch ein Problem damit.

Angenommen, ich habe ein Signal mit CD-Frequenz abgetastet 44100Hz. Mit dem Fenster von 1024Samples erhalte ich eine Auflösung von 22500Hz/512=43Hz. Dies reicht nur aus, um hohe Klaviertöne wie: C5 = 523.251Hzund zu erkennen C#5 = 554.365.

Früher dachte ich, es 1024ist ein ziemlich großes Fenster. Aber vielleicht ist es das nicht und normalerweise werden größere Fenster zum Erkennen von Teilbereichen verwendet?

Kann die Frequenzauflösung mit einer anderen Methode als der Vergrößerung des Fensters erhöht werden, was die Zeitauflösung verschlechtert? Ich dachte an zwei Methoden:

Methode 1:

  1. Teilen Sie das Signal mit Bandpassfiltern (z. B. 0-11.25Hzund 11.25-22.5Hz) in Frequenzbänder auf .
  2. Verringern Sie die Abtastrate der höheren Bänder, sodass die ursprünglichen hohen Frequenzen jetzt niedrige Frequenzen sind (tun Sie dies auch für das zweite Band 11.25-22.5Hz -> 0Hz-22.5Hz) - nicht sicher, ob dies möglich ist.
  3. Konzentrieren Sie die resultierenden Behälter-Sets mit angepassten Beschriftungen.

Methode 2:

  1. Verwenden Sie eine Reihe von Tiefpassfiltern mit zunehmender Grenze.
  2. Führen Sie die FFT in zunehmenden Frequenzbereichen durch.
  3. Verwenden Sie für jede Frequenz die bestmögliche Auflösung (Bins aus der ersten FFT, in der diese Frequenz enthalten war).
  4. Dies bewirkt, dass niedrige Frequenzen eine bessere Auflösung haben, aber ich denke, dass dies in Ordnung ist, da der Frequenzunterschied für höhere Noten größer ist.

Für Anmerkungen zu diesem Thema bin ich dankbar.

Ich habe auch hier gelesen: Wie beeinflussen Fenstergröße und Abtastrate die FFT-Tonhöhenschätzung? über die Methode zur Verbesserung der Peak-Picking-Ergebnisse. Ich denke ich werde versuchen es zu benutzen.


Wenn Sie wissen, dass es nur eine Sinuskomponente gibt, können Sie eine Parabel an die benachbarten Klassen des Peaks anpassen und interpolieren, um den "wahren" Peak zu finden. Nicht sicher, wie dies mit der von @pichenettes beschriebenen Phasenmethode verglichen wird.
Endolith

Antworten:


9

Wenn Sie wirklich auf der Verwendung von FFT bestehen (anstatt auf parametrischen Methoden, die nicht unter Zeit- / Frequenz-Kompromissen leiden), können Sie eine viel bessere Auflösung vortäuschen, indem Sie die Phaseninformationen verwenden, um die momentane Frequenz für jeden FFT-Bin wiederherzustellen. Partials können dann erkannt werden, indem nach Plateaus in der Funktion gesucht wird, die die Momentanfrequenz als Funktion des FFT-Bin-Index angibt. Die übliche Implementierung dieser Technik, wie sie in diesem Artikel beschrieben wird, "kostet" Sie eine zusätzliche STFT (die momentane Frequenz wird durch Operationen an der STFT des Signals und der STFT der Ableitung des Signals wiederhergestellt).

Siehe zum Beispiel die ifgram-Funktion in dieser Matlab-Implementierung der sinusförmigen Modellierung von Audiosignalen.

Beachten Sie, dass dies nicht dazu beiträgt, zwei Teiltöne aufzulösen, die in benachbarte FFT-Klassen fallen. Sie liefert nur eine viel genauere Frequenzschätzung als nur die Umwandlung des FFT-Bin-Index eines Spektralpeaks in eine Frequenz.


Was meinen Sie mit parametrischen Methoden? Haben Sie vor einigen Monaten einen Algorithmus erwähnt, der FFT-ähnlich war, aber eine Frequenzoktavenskala anstelle einer einheitlichen Frequenzskala aufwies?
Jim Clay

Parametrische Methoden sind statistische Signalanalysemethoden, die voraussetzen, dass das Signal durch einen bestimmten Prozess erzeugt wird, der durch einen Satz von Parametern beschrieben wird, und die aus den Beobachtungen eine Schätzung der kleinsten Quadrate dieser Parameter berechnen. Wenn Sie beispielsweise annehmen, dass das Signal eine Summe aus N exponentiell gedämpften Sinuskurven + Rauschen ist, können Algorithmen wie ESPRIT oder MUSIC verwendet werden, um die N komplexen Amplituden und Pulsationen abzuleiten.
Pichenettes

2
Sie beziehen sich wahrscheinlich auf die Konstante-Q-Transformation. Die Einschränkung besteht darin, dass es nirgends rechnerisch so effizient ist wie in der FFT. und dass das Invertieren dieser Transformation ein nicht triviales Optimierungsproblem ist.
Pichenettes

@JimClay: Vielleicht dies sollte hier migriert werden?
Endolith

1
Es ist irreführend zu sagen, dass parametrische Methoden nicht unter Zeit- / Frequenz-Kompromissen leiden. In ihrem Kern modellieren parametrische Methoden das System und verwenden das Modell, um aussagekräftige Daten zu extrahieren. Aber die Leistung ist nur so gut wie das Modell. Unter der Annahme, dass das "beste" Modell gewählt wird (Anzahl der Pole oder Anzahl der Signalraum-Eigenvektoren), ist die Leistung dieser Methoden immer noch sehr empfindlich gegenüber der Datensatzlänge.
Bryan

2

Der Begriff "Auflösung" hat mehrere Bedeutungen. Im Allgemeinen können Sie die Fähigkeit zum Trennen (oder "Auflösen") eng benachbarter Spektralspitzen durch Interpolation mit derselben Fensterlänge von Daten nicht erhöhen. Sie können jedoch die Frequenz von isolierten stationären Spektralspitzen, die weit über dem Grundrauschen liegen, mit einer feineren Auflösung (manchmal mit einer viel feineren Auflösung) als dem FFT-Bin-Abstand durch verschiedene Interpolationsmethoden abschätzen.

Gängige Interpolationsmethoden für FFT-Ergebnisse für Schätzungen mit höherer Auflösung umfassen die parabolische Interpolation, die Sinc-Interpolation, das Auffüllen der Daten zu einer viel längeren FFT mit Nullen sowie Phasenvocoder-Methoden unter Verwendung von (geringfügig) versetzten überlappenden Fenstern.

Eine FFT ist im Wesentlichen eine Bank von Bandpassfiltern, die jeweils einen sehr steilen Übergang aufweisen, aber für eine gegebene FIR-Filterkernlänge Tonnen von Sperrbandwelligkeit aufweisen. Als solches weisen diese Filter keine große Rauschunterdrückung von nicht periodischem Rauschen im Fenster auf. Wenn Sie vermuten, dass diese Art von Interferenz ein Problem darstellt, kann eine FFT mit Fenster oder eine benutzerdefinierte Filterbank eine bessere Leistung erzielen.


1

Nach weiteren Untersuchungen von aufgerufen Jim Clay Frage und pichenettes in Kommentaren Antwort fand ich , dass mein Method2 Bounded Q-Transformation zum Beispiel von Kashima und Mont-Reynaud beschrieben neu erfunden (ich bin nicht sicher , kann ich zu diesem Artikel verlinken, Datei sieht zerrissen ) .

Ihr Ansatz ist algorithmisch effizienter, da sie vom größten Frequenzbereich ausgehen und ihn iterativ um 2 herunterrechnen, bis sie die niedrigste Oktave erreichen.

Die Vorteile von Q-Transformationen wurden zum Beispiel auch hier von Brown untersucht . Es ist möglicherweise nicht so effizient wie eine einzelne FFT, hat jedoch den Vorteil, dass bei Hochfrequenzbändern, für die dies nicht erforderlich ist, keine dicke FFT berechnet wird.

Vielen Dank für alle Antworten, Kommentare und Links.


Was Sie Geräusche sind zu beschreiben , wie sehr eine Wavelet - Transformation, die scheint zu bestätigen dies . Mir ist klar, dass dies ein alter Beitrag ist, aber zukünftige Leser möchten sich vielleicht auch Wavelets ansehen. Wie ich in meiner Antwort ausgeführt habe, können Sie das Zeit-Frequenz-Unsicherheitsprinzip zwar nicht ändern, aber wenn Sie die Daten kennen, können Sie ein wenig schummeln.
orodbhen

1

Wenn Sie eine "Historie" von Eingaben speichern und diese verwenden, um Ihre DFTs zu überlappen, werden mehr Informationen zum Extrahieren von spektralem Inhalt bereitgestellt. Das hängt natürlich von der zeitlichen Variation Ihres Signals ab. Es wäre in der Form einer Wahrscheinlichkeitsverteilungsfunktion ähnlich.

Dies würde Ihnen DFTs geben, die zeitlich näher beieinander liegen. Es würde jedoch immer noch die zeitliche Unsicherheit jeder DFT erhöhen, was durch die Naturgesetze eingeschränkt wird: Der genaue Wert des zeitlichen und spektralen Verhaltens kann nicht gleichzeitig bestimmt werden.

Wenn der Frequenzinhalt innerhalb des Fensters jedoch nicht stark variiert, sollte dies in Ordnung sein.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.