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.
- Ich schneide die Daten in Frames von 24576 Bytes (4096 * 6).
- Hamming-Fenster anwenden:
input[i] *= (0.54d - 0.46d*(double) Math.Cos((2d*Math.PI*i)/fs));
- Führen Sie es durch FFTW
Process1D()
. - Konvertieren von komplexen Zahlen:
output[i] = 10.0 * Math.Log10((fout[i * 2] * fout[i * 2]) + (fout[i * 2 + 1] * fout[i * 2 + 1]));
- Aus 6 Werten einen Durchschnitt bilden, um eine vollständige FFT von 4096 Bytes zu erhalten.
- 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.