Sto calcolando FFT dall'ingresso del microfono. Ho notato che le frequenze più basse sembrano sempre avere più potenza (dB più alti) rispetto alle frequenze più alte.
- Ho tagliato i dati in frame di 24576 byte (4096 * 6).
- Applica la finestra di Hamming:
input[i] *= (0.54d - 0.46d*(double) Math.Cos((2d*Math.PI*i)/fs));
- Esegui tramite FFTW
Process1D()
. - Converti da numeri complessi:
output[i] = 10.0 * Math.Log10((fout[i * 2] * fout[i * 2]) + (fout[i * 2 + 1] * fout[i * 2 + 1]));
- Media di 6 valori per ottenere una FFT completa di 4096 byte.
- Dipingi un'immagine carina (colori associati a una tavolozza).
La media (punto 5) viene eseguita per ridurre il rumore FFT.
Come l'immagine mostra sia con l'audio sia con il microfono spento c'è più energia (e più rumore) nelle frequenze più basse. Questo indica che non è solo un problema mic / sub.
Le mie domande:
1. È previsto? Perché?
2. Qualche modo standard per risolvere questo problema? Sembra quasi che un po 'di magia Math.Tan () possa sollevarlo dove appartiene.
Il mio obiettivo è essere in grado di identificare le prime 5 frequenze senza che le frequenze più basse vincano per impostazione predefinita.