Obliczam FFT z wejścia mikrofonu. Zauważam, że niższe częstotliwości zawsze wydają się mieć większą moc (wyższe dB) niż wyższe częstotliwości.
- Tnę dane na ramki 24576 bajtów (4096 * 6).
- Zastosuj okno Hamminga:
input[i] *= (0.54d - 0.46d*(double) Math.Cos((2d*Math.PI*i)/fs));
- Uruchom go przez FFTW
Process1D()
. - Konwertuj z liczb zespolonych:
output[i] = 10.0 * Math.Log10((fout[i * 2] * fout[i * 2]) + (fout[i * 2 + 1] * fout[i * 2 + 1]));
- Uśrednij 6 wartości, aby uzyskać pełne FFT o wartości 4096 bajtów.
- Maluj ładny obrazek (kolory odwzorowane na paletę).
Uśrednianie (pkt 5) odbywa się w celu obniżenia hałasu FFT.
Jak obraz pokazuje zarówno z dźwiękiem, jak i przy wyłączonym mikrofonie, na niższych częstotliwościach jest więcej energii (i więcej szumu). Oznacza to, że jest to więcej niż problem z mikrofonem / subwooferem.
Moje pytania:
1. Czy jest to oczekiwane? Dlaczego?
2. Jakiś standardowy sposób to naprawić? Prawie wygląda na to, że jakaś magia Math.Tan () mogłaby podnieść ją tam, gdzie należy.
Moim celem jest możliwość zidentyfikowania 5 najlepszych częstotliwości bez domyślnego wygrywania niskich częstotliwości.