Wie beeinflussen Fenstergröße und Abtastrate die Schätzung der FFT-Tonhöhe?

  • Ich versuche, ein Tonhöhenerkennungsprogramm zu erstellen, das die Frequenzen von Peaks in einem von einer FFT erhaltenen Leistungsspektrum (fftpack) extrahiert. Ich extrahiere die Spitzenfrequenzen aus meinem Spektrum mit dem ersten Schätzer von Quinn , um zwischen Abteilungsnummern zu interpolieren. Dieses Schema scheint unter bestimmten Bedingungen gut zu funktionieren. Bei Verwendung einer rechteckigen Fensterfunktion mit einer Fenstergröße von 1024 und einer Abtastrate von 16000 identifiziert mein Algorithmus die Häufigkeit eines reiner A440-Ton als 440.06 mit einer zweiten Teilfrequenz von 880.1. Unter anderen Bedingungen führt dies jedoch zu ungenauen Ergebnissen. Wenn ich die Samplerate (z. B. auf 8000) oder die Fenstergröße (z. B. auf 2048) ändere, wird der erste Part immer noch als 440 erkannt, der zweite Part liegt jedoch um 892. Das Problem wird bei inharmonischen Tönen wie diesen noch schlimmer produziert von einer Gitarre oder einem Klavier.

    Meine allgemeine Frage ist: In welcher Weise beeinflussen Abtastrate, Fenstergröße und Fensterfunktion die Frequenzschätzung von FFT-Peaks? Meine Vermutung war, dass allein die Erhöhung der Auflösung des Spektrums die Genauigkeit der Peakfrequenzschätzung erhöhen würde, aber dies ist eindeutig nicht meine Erfahrung (Nullabstand hilft auch nicht). Ich gehe auch davon aus, dass die Wahl der Fensterfunktion keine großen Auswirkungen haben wird, da der spektrale Verlust die Position des Peaks nicht ändern sollte (obwohl ich jetzt darüber nachdenke, könnte der spektrale Verlust die interpolierte Frequenzschätzung potenziell beeinflussen wenn die Beträge der an den Peak angrenzenden Fächer durch Austritt aus anderen Peaks künstlich erhöht werden ...).

    Irgendwelche Gedanken?

    03 June 2016
    GilleshRob
3 answers
    1. Verwenden Sie ein Gauß-Fenster - die Fourier-Transformation eines Gaußschen Ganges ist ein Gaußscher
    2. Log-Skalieren Sie das Spektrum, um die Peaks hervorzuheben und die Gaußschen Peaks umzuwandeln Parabelspitzen
    3. Verwenden Sie die parabolische Interpolation, um die wahren Peaks zu finden.

    Beachten Sie, dass Wie in §D.1 erwähnt, ist die Größe der Gaußschen Fenstertransformation genau eine Parabel auf dB-Skala. Folglich ist die quadratische spektrale Peakinterpolation genau unter dem Gaußschen Fenster. Natürlich müssen wir die unendlich langen Schwänze des Gaußschen Fensters in der Praxis irgendwie entfernen, was jedoch nicht zu einer großen Abweichung von einer Parabel führt, wie in Abb. 3.30 gezeigt.

    https://ccrma.stanford.edu/~jos/ sasp / Quadratic_Interpolation_Spectral_Peaks.html

    Wie beeinflussen Fenstergröße und Abtastrate die Schätzung der FFT-Tonhöhe?

    Ich schätze 1000.000004 Hz für eine 1000 Hz-Wellenform folgendermaßen: https://gist.github.com/255291#file_parabolic.py

    Wenn Sie Probleme haben, plotten Sie das Spektrum und verwenden Sie Ihre Augen, um zu sehen, warum es nicht funktioniert.

    08 November 2011
    Michael Haren
  • Erstens sind die Peakfrequenzschätzung und die Tonhöhenschätzung zwei verschiedene Dinge. Pitch ist ein psychoakustisches Phänomen. Menschen können eine Tonhöhe hören, selbst wenn die Grundfrequenz völlig fehlt oder relativ schwach ist, verglichen mit den meisten anderen Peaks, wie in den tiefen Tönen, die von einigen Instrumenten erzeugt werden.

    Zweitens, kein Fenster Bei einer FFT entspricht dies der Verwendung eines rechteckigen Fensters, das Ihr Spektrum mit der Sinc-Funktion faltet. Die Sinc-Funktion weist viele Buckel auf, die weit vom Peak entfernt sind und für alle Frequenzen angezeigt werden, die in der FFT-Länge nicht exakt periodisch sind (auch als "Spektralverlust" bezeichnet). Alle diese Energieverluste von einer starken Frequenz beeinträchtigen die Positionsschätzung anderer Frequenzspitzen. Eine geeignetere Fensterfunktion (Hamming oder von Hann) könnte dazu beitragen, diese Interferenz zwischen Peaks zu reduzieren.

    Eine längere FFT verringert die Delta-Frequenz zwischen Bin-Zentren, wodurch die Interpolation und erhöht werden daher Frequenzschätzgenauigkeit für stationäre Spektren. Wenn die FFT jedoch so lang ist, dass sich das Spektrum innerhalb des FFT-Fensters ändert, werden alle diese geänderten Frequenzen in einer längeren FFT zusammen verwischt.

    30 December 2011
    Leigh Riffel
  • Sie benötigen auf jeden Fall eine geeignete Fensterfunktion - die Auswirkungen des spektralen Streuverlusts hängen stark von der Beziehung zwischen der Tonhöhenperiode und der FFT-Fensterlänge ab - wenn Sie einen großen Übergang zwischen dem letzten und dem ersten Abtastwert des FFT-Fensters erhalten dann wird das Spektrum sehr unangenehm verschmieren. Wenn Sie jedoch Glück haben und diese Diskontinuität klein ist, wird das Spektrum wesentlich sauberer. Dies ist wahrscheinlich der Grund, warum Inkonsistenzen auftreten, wenn Sie Parameter wie die FFT-Größe ändern. Mit einer geeigneten Fensterfunktion erhalten Sie ein konsistentes Spektrum, wenn sich die Tonhöhe ändert.

    07 November 2011
    GillesTimeless