Niedrigere Frequenzen stärker in der FFT?


15

Ich berechne die FFT aus dem Mikrofoneingang. Ich bemerke, dass niedrigere Frequenzen immer mehr Leistung (höhere dB) als höhere Frequenzen zu haben scheinen.

  1. Ich schneide die Daten in Frames von 24576 Bytes (4096 * 6).
  2. Hamming-Fenster anwenden: input[i] *= (0.54d - 0.46d*(double) Math.Cos((2d*Math.PI*i)/fs));
  3. Führen Sie es durch FFTW Process1D().
  4. Konvertieren von komplexen Zahlen: output[i] = 10.0 * Math.Log10((fout[i * 2] * fout[i * 2]) + (fout[i * 2 + 1] * fout[i * 2 + 1]));
  5. Aus 6 Werten einen Durchschnitt bilden, um eine vollständige FFT von 4096 Bytes zu erhalten.
  6. Malen Sie ein hübsches Bild (Farben, die einer Palette zugeordnet sind).

Die Mittelung (Punkt 5) wird durchgeführt, um das FFT-Rauschen zu verringern.

Da das Bild sowohl bei Ton als auch bei ausgeschaltetem Mikrofon angezeigt wird, ist in den niedrigeren Frequenzen mehr Energie (und mehr Rauschen) vorhanden. Dies deutet darauf hin, dass es sich nicht nur um ein Mikrofon- / Subproblem handelt.

Meine Fragen:
1. Wird das erwartet? Warum?
2. Irgendeine Standardmethode, um dies zu beheben? Sieht fast so aus, als ob ein bisschen Math.Tan () -Magie es dort anheben könnte, wo es hingehört.

Mein Ziel ist es, die Top 5 Frequenzen zu identifizieren, ohne dass die unteren Frequenzen standardmäßig gewinnen.

FFT


Bitte versuchen Sie zuerst das richtige Hamming-Fenster, um festzustellen, ob ein defektes Fensterfragment dieses Niederfrequenzrauschen verursacht.
hotpaw2

@Tedd Hansen, wie sind Sie zum "Erkennen der Top 5-Frequenzen ohne niedrigere Frequenzen" gekommen - Top 5 aus gewichteten 1/3 Oktavbändern?
Denis

Antworten:


12

Ja, das wird sehr erwartet. Was Sie sehen, ist ein " rosa " Spektrum, dh konstante Energie pro relativer Bandbreite im Vergleich zu " weiß ", was konstante Energie pro absoluter Bandbreite ist. Bei rosa Signalen ist die Energie zwischen 1 und 2 kHz dieselbe wie bei 2 bis 4 kHz (jede repräsentiert eine Verdoppelung der Bandbreite oder eine "Oktave").

Die meisten natürlichen Audiosignale (Sprache, Musik, Filme usw.) haben ein pinkfarbenes Spektrum. Auch die meisten akustischen Hintergrundgeräusche (Mikrofongeräusche, HLK-Geräusche, Luftdruckschwankungen, allgemeine Hintergrundgeräusche) neigen dazu, rosa zu sein oder zu niedrigeren Frequenzen zu tendieren.

Auch das menschliche Hörsystem funktioniert so. Im Innenohr werden die Audiosignale in Bänder mit konstanter relativer Bandbreite (als "kritische Bänder" bezeichnet) zerlegt, die in etwa dem Spektrum einer dritten Oktave entsprechen.

Die beste Möglichkeit, Audiospektrumdaten anzuzeigen, besteht darin, sie auf einer logarithmischen Frequenzskala zu zeichnen.


Die Aussage, dass "natürliche Audiosignale ein rosa-ähnliches Spektrum haben", lässt die Berücksichtigung der Zeitskala unberücksichtigt. Über einen langen Zeitraum (~ 10 Sekunden) stimme ich zu, und sicherlich über mehrere Minuten hinweg ist diese Aussage eher wahr. Die Spektren werden hier jedoch über 0,55 s berechnet. Wenn der Eingang zB Musik ist, würde ich eine viel tonalere Struktur erwarten.
mtrw

2
"Tonalität" beeinflusst eher die Feinstruktur des Spektrums. Die Gesamtform (in Bezug auf die Energie pro Oktave) wird für Musik immer noch größtenteils rosa sein, es sei denn, es ist so etwas wie "Solo für Triangel und Crash-Becken"
Hilmar

1
@mtrw: Eine Rechteckwelle ist sicherlich ein Ton, aber die Hochfrequenzoberwellen fallen immer noch mit einer 1 / f-Rate ab.
Endolith

8

In Schritt 2 sollte die Formel lauten input[i] *= (0.54d - 0.46d*(double) Math.Cos((2d*Math.PI*i)/N));, wo Nin Ihrem Fall die Anzahl der Proben im Puffer ist 24576.

In den Schritten 4 und 5 würde ich die bin-weise Mittelung der quadrierten Größenwerte durchführen, nicht der dB-Werte. Angenommen, Sie haben die quadratischen Größen [4,6]. Ihre durchschnittliche ist 5, 10*log10(5) ~= 6.99. Der Durchschnitt von 10*log10(4)und 10*log10(6)ist 6.90.

Das erste Problem könnte die Ursache der Vorspannung in Richtung niedriger Frequenzen sein, da dies zu spektralen Leckströmen führt und die niedrigen Frequenzen mehr Verschmutzung von der Gleichstromleitung erhalten (was unvermeidlich eine schlechte Schätzung ist). Das zweite Problem wird sich wahrscheinlich nicht auf die tiefen Frequenzen auswirken, aber ich denke, es kommt der Absicht Ihrer Messung näher.


fout[i * 2] * fout[i * 2]) + (fout[i * 2 + 1] * fout[i * 2 + 1]4610Log10(5)(10Log10(4)+10Log10(6))/2

In Ihrer obigen Erklärung glaube ich, dass Sie eine Fensterbreite (N) von 4096 wünschen, da dies die Breite der angewendeten FFT ist. Dieses Fenster müsste auf die 4096 Samples angewendet werden, die vor jedem fft transformiert werden.
Jacob

@Jacob - Das OP berechnet die FFT aus 6 * 4096 Punkten und berechnet dann den Durchschnitt aus 6 benachbarten Fächern, um sie auf 4096 Punkte zu reduzieren.
14.

5

1 / f-Lärm tritt in vielen physikalischen, biologischen und wirtschaftlichen Systemen auf. Einige Forscher beschreiben es als allgegenwärtig.

rosa und weiße Geräusche

Rosa Rauschen (links) und weißes Rauschen (rechts) in einem FFT-Spektrogramm mit linearer vertikaler Frequenzachse (in einem typischen Audio- oder ähnlichen Spektrumanalysator wäre das rosa Rauschen flach, nicht abfallend, und das weiße Rauschen steigt an)


6
Das Geräusch auf der linken Seite ist definitiv rosa, aber das auf der rechten Seite sieht ein bisschen orange aus :-)

Obwohl 1 / f-Rauschen allgegenwärtig ist, weist ein gut konzipiertes analoges Front-End für Audio im Allgemeinen einen niedrigen Pegel von 1 / f-Rauschen oberhalb von beispielsweise 10 Hz auf. In den interessierenden Bereichen dominiert weißes Rauschen.
Mittwoch,

4

Wird das erwartet? Warum?

Viele natürliche Klänge haben Harmonische , daher gibt es niedrigere Grundfrequenzen und dann weniger Energie in höheren Vielfachen der Grundfrequenz. Möglicherweise liegt eine Gleichstromvorspannung vor, die ganz links viel Energie bedeuten würde. Ein weiterer Einfluss ist Ihre Fensterfunktion , die den Frequenzgang verzerrt.

Gibt es eine Standardmethode, um dies zu beheben? Sieht fast so aus, als ob ein bisschen Math.Tan () -Magie es dort anheben könnte, wo es hingehört.

Sie können mit der Gleichstromvorspannung umgehen, indem Sie einen Hochpassfilter verwenden. Eine einfache Implementierung besteht darin, den Langzeitdurchschnitt von jedem Sample zu subtrahieren (EDIT: oder noch einfacher, die niedrigeren Frequenzen, z. B. <50 Hz, von Ihrem FFT-Ergebnis zu verwerfen). Sie können auch mit verschiedenen Fensterfunktionen experimentieren. Stellen Sie sicher (wie @mtrw darauf hinweist), dass Sie das Fenster richtig anwenden. Alle anderen Nichtlinearitäten in der Antwort können korrigiert werden, indem eine ideale Eingabe gemessen und auf diese Kurve normiert wird.


Die Fensterfunktion sollte den Frequenzgang nicht beeinflussen, oder?
Endolith

@endolith: Sie multiplizieren Ihre Daten mit der Fensterfunktion, und die kombinierte Funktion reagiert anders. Lesen Sie den verlinkten Wikipedia-Artikel, der dies ausführlicher behandelt. Die Realität beim Umgang mit Samples aus der realen Welt ist, dass normalerweise ein Fenster (z. B. ein Rechteck) vorhanden ist und Sie daher nur den Frequenzgang des (unendlichen) Quellensignals approximieren können.
Guy Sirton

Vielleicht denken wir über "Frequenzgang" anders. Wenn ein Signal stationär ist und Sie ihm eine Fensterfunktion zuweisen, sollte das Spektrum unabhängig von der verwendeten Fensterfunktion die gleichen Amplituden bei den gleichen Frequenzen haben und sich nur durch einen Skalierungsfaktor unterscheiden, der alle Frequenzen gleichermaßen beeinflusst. Die Breite jeder Frequenzspitze ist unterschiedlich, aber die Höhe der Spitzen ist im Verhältnis zueinander gleich. Die Fensterfunktion wirkt nicht wie ein Filter, der einige Frequenzen stärker abschwächt als andere.
Endolith

@endolith: Stellen Sie sich eine unendliche Sinuswelle vor, die jetzt mit einem cos ^ 2-Fenster multipliziert wird. Sie haben immer noch eine Komponente mit der ursprünglichen Frequenz, aber ihre Amplitude ist "aus" und Sie haben neue Frequenzkomponenten, die aus dem Fenster kommen. Siehe den ersten Absatz hier: en.wikipedia.org/wiki/Spectral_leakage
Guy Sirton

Ja, aber die "Aus" -Amplitude ist unabhängig von der Frequenz der unendlichen Sinuswelle gleich. Nein?
Endolith
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.