Wie ich bereits in einem früheren Beitrag erwähnt habe, entspricht die Zeit-Frequenz-Analysemethode, die als "Kurzzeit-Fourier-Transformation" ist, einer Filterbank, in der Ihr Signal x analysiert wird . Für ein gegebenes Analysefenster w n der Größe N ist das Filter bei der Frequenz k / N :
h n = w - n e j 2 π n kXxwnNk / N
hn= w- nej 2 πn kN
Für gewöhnliche Analysefenster (Hann, Hamming oder sogar Rechteck) entspricht dies einem Tiefpassfilter mit einer Grenzfrequenz um , der (dank der komplexen Exponentialmodulation) in den Frequenzbereich k "verschoben" wird. Dies führt zu einem Bandpassfilter.1 / Nk
Um Ihre Besorgnis über die Reflexion der menschlichen Wahrnehmung direkt zu beantworten, haben an dieser Stelle einige Personen die ["Konstante-Q-Transformation" (CQT)] [Brown91] abgeleitet. Es basiert auf dem gleichen Prinzip wie die FT bei der Interpretation der Filterbank. Allerdings ist die Zentren nicht linear wie bei einem „normalen“ FT Abstand, sondern log2-Abstand. Die Skala wird dann eng mit einem Western - Tonleiter: Wählt man f k + 1 = 2 1 / 12 f k , so erhält man 12 Frequenzen pro Oktave (klingelt :-)?), Und die Bandbreite wird auf , sagen wir, 2 1 / 12 - 1fkfk + 1= 21 / 12fk. Sie können auch andere Zentren auswählen, je nach Bedarf.21 / 12- 12fk
Implementierungen des CQT finden Sie hier und da, eine aktuelle von Prof. Klapuri, die mit einer eher anständigen Inversion versehen ist, finden Sie hier . Die Audio-Gruppe bei Telecom ParisTech hat ebenfalls eine Implementierung von Prof. Prado, die ich aber noch nicht ausprobiert habe.
[Brown91] J. Brown, "Berechnung einer Spektraltransformation mit konstantem Q", Journal of the Acoustical Society of America, 1991, 89, 425-434
EDIT 20121014: Einige Antworten und Kommentare zu Ihren (Bryhoyt-) Fragen.
Nur allgemeine Anregungen zu Ihren eigenen Kommentaren zur Hauptfrage: Sie scheinen an vielen Anwendungen interessiert zu sein, die für mich keine ganz trivialen Probleme darstellen. "Timbre-Modellierung" klingt für mich eher nach Spracherkennung oder ähnlichem, bei der Tonhöhe, Frequenzauflösung oder Präzision keine große Rolle spielen (beachten Sie, wie MFCCs normalerweise berechnet werden).
Bedenken Sie auch, wie viele Spitzenforscher ( F. Pachet und das Repmus-Team des IRCAM, Frankreich , um nur einige zu nennen) am Thema der automatischen Improvisation und Begleitung arbeiten: Die Aufgabe ist nicht unmöglich, erfordert aber Fachwissen in vielen Bereichen. Zusammenfassend muss ein typisches System (zumindest) das menschliche Hörsystem imitieren, die Wahrnehmung von Klang / Musik / Tonhöhe / Rhythmus implementieren, sich mit Musiktheorie auskennen und Entscheidungen auf der Grundlage der Schätzungen aller vorherigen Schritte treffen. Die Fourier-Transformation oder irgendeine Signaldarstellung ist nur ein (winziger) Schritt in Richtung des Endziels - und meiner Meinung nach möglicherweise der bisher am besten verstandene.
Trotzdem besteht immer noch die Möglichkeit, dass jeder weit über das hinausschaut, was tatsächlich passiert, und dass Sie es in einer einfachen, also eleganten Lösung niederschlagen können! Vergiss nicht, darüber zu veröffentlichen, wenn es fertig ist! :-)
Eine Abtastung von 0,1 s bei 44 kHz reicht aus, um einen großen Frequenzbereich zu enthalten
Fs/ N= 44100 / 4410 = 10 Hz
Die FFT kann dies für niedrige und hohe Frequenzen nicht erkennen, aber Sie sagen, andere Algorithmen können: Was ist der Kompromiss?
Kurze Antwort: Lies meine Doktorarbeit zur Melodienschätzung!
Um es etwas genauer zu beschreiben: Viele Algorithmen zur Tonhöhenschätzung gehen dank der Annahmen über die zu verarbeitenden Klänge über die Grenzen der FT hinaus. Wir erwarten, dass Noten von natürlichen Klängen (menschliche Stimme, Oboe, Saxophon, Klavier ...) komplexer sind als einzelne Sinuskurven. Die meisten Töne sind mehr oder weniger harmonisch, was bedeutet, dass sie als Summen von Sinuskurven modelliert werden können, deren Frequenz ein Vielfaches der Grundfrequenz ist.
Es ist daher nützlich, diese Harmonischen bei der Schätzung der Tonhöhe zu berücksichtigen, wenn Methoden verwendet werden, die Detektionsfunktionen wie Spektralsummen, Spektralprodukte oder Autokorrelationsfunktionen verwenden. Jemand hat kürzlich ein verwandtes Thema gestartet .
Was sind die Kompromisse? Welche Frequenzgenauigkeit kann ich für ein relativ kurzes Fenster erwarten? (Ich verstehe, dass die Fenstergröße in CQT variabel ist - wie viel?) Noch spezieller, wie nahe werde ich in der Lage sein, meine ca. Ziel von 0,5% Frequenzdifferenz bei einem Fenster von 0,005s?
Wie bereits erwähnt, können Sie bei einem Fenster von 0,005 s mit 200 Hz "Frequenzleck" rechnen. Das ist wirklich nur dann ein Problem, wenn Sie 2 Sinuskurven mit Frequenzen haben, die näher als 200 Hz liegen, so dass die FT nicht in der Lage ist, zu zeigen, dass es sich um 2 verschiedene Sinuskurven handelt. Nun, wir sind weit entfernt von Ihren 0,5% (ein Halbton liegt übrigens bei 6% der Frequenz!) Und 0,005s ist für Ihren Zweck wirklich ein bisschen klein. Wenn Sie jedoch alle 0,005 Sekunden eine Schätzung angeben möchten, können Sie auch länger überlappende Frames verarbeiten, wie dies normalerweise bei der Sprach- / Musikverarbeitung der Fall ist. Wollen Sie das wirklich?
Nk= Fsfk( 21 / B- 1 )
BB = 48fk= 100 hzbenötigen etwa 0,7s lange Fenster. Es ist nichts zu sagen, dass wir dann ein wenig von der zeitlichen Auflösung verlieren ... Aber wie bereits erwähnt, ist dies nur dann ein Problem, wenn wir die Struktur des Klangs vergessen. Darüber hinaus ist die Psychoakustik der Ansicht, dass Menschen unter 500 Hz die Sinusoiden nicht wirklich so gut unterscheiden: Selbst Menschen sind dort gefordert. Natürlich können wir hoffen, dass unsere Computer besser sind als wir, aber hier stehen wir vor einem schwierigen Problem!
Beachten Sie schließlich, dass es auch andere Möglichkeiten gibt, eine Zeit-Frequenz-Darstellung eines Klangs zu berechnen, z. B. Gammaton-Filterbänke. Der zuvor erwähnte Vorteil des CQT besteht darin, dass es Software sowohl für die Transformation als auch für deren Invertierung gibt. Persönlich halte ich mich aber immer noch an die STFT, weil sie so einfach ist und ich bisher selbst für die Trennung von Quellen keine bessere Auflösung bei niedrigen Frequenzen brauchte.
[Schoerkhuber2010] Schoerkhuber, C. und Klapuri, A., "Constant-Q transform toolbox for music processing", 7. Konferenz für Sound- und Musik-Computing, Barcelona, Spanien, 2010.