マイク入力からFFTを計算しています。低い周波数は常に高い周波数よりもパワーが大きい(dBが高い)ように見えることに気付きます。
- データを24576バイト(4096 * 6)のフレームにカットしました。
- ハミングウィンドウの適用:
input[i] *= (0.54d - 0.46d*(double) Math.Cos((2d*Math.PI*i)/fs));
- FFTWを通してそれを実行します
Process1D()
。 - 複素数から変換する:
output[i] = 10.0 * Math.Log10((fout[i * 2] * fout[i * 2]) + (fout[i * 2 + 1] * fout[i * 2 + 1]));
- 6つの値を平均して、4096バイトの完全なFFTを取得します。
- きれいな絵(パレットにマッピングされた色)を塗ります。
平均化(pt。5)は、FFTノイズを低減するために行われます。
画像は、音とマイクをオフにした状態で表示されるため、低周波数ではより多くのエネルギー(およびノイズ)が発生します。これは、マイク/サブの問題だけではないことを示しています。
私の質問:
1.これは予想されますか?どうして?
2.これを修正する標準的な方法はありますか?いくつかのMath.Tan()マジックが、それが属する場所を持ち上げることができるように見えます。
私の目標は、デフォルトで低い周波数が勝つことなく、上位5つの周波数を識別できるようにすることです。