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 1024
Samples erhalte ich eine Auflösung von 22500Hz/512=43Hz
. Dies reicht nur aus, um hohe Klaviertöne wie: C5 = 523.251Hz
und zu erkennen
C#5 = 554.365
.
Früher dachte ich, es 1024
ist 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:
- Teilen Sie das Signal mit Bandpassfiltern (z. B.
0-11.25Hz
und11.25-22.5Hz
) in Frequenzbänder auf . - 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. - Konzentrieren Sie die resultierenden Behälter-Sets mit angepassten Beschriftungen.
Methode 2:
- Verwenden Sie eine Reihe von Tiefpassfiltern mit zunehmender Grenze.
- Führen Sie die FFT in zunehmenden Frequenzbereichen durch.
- Verwenden Sie für jede Frequenz die bestmögliche Auflösung (Bins aus der ersten FFT, in der diese Frequenz enthalten war).
- 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.