Mikrofon girişinden FFT hesaplıyorum. Daha düşük frekansların her zaman daha yüksek frekanslardan daha fazla güce (daha yüksek dB) sahip olduğunu fark ettim.
- Verileri 24576 bayt (4096 * 6) kareye böldüm.
- Hamming penceresini uygula:
input[i] *= (0.54d - 0.46d*(double) Math.Cos((2d*Math.PI*i)/fs));
- FFTW üzerinden çalıştırın
Process1D()
. - Karmaşık sayılardan dönüştürün:
output[i] = 10.0 * Math.Log10((fout[i * 2] * fout[i * 2]) + (fout[i * 2 + 1] * fout[i * 2 + 1]));
- 4096 baytlık bir FFT elde etmek için 6 değerin ortalamasını alın.
- Güzel resim boya (bir palete eşlenen renkler).
Ortalama alma (pt.5) FFT gürültüsünü azaltmak için yapılır.
Görüntü hem ses hem de mikrofon kapalıyken gösterildiği gibi, düşük frekanslarda daha fazla enerji (ve daha fazla gürültü) vardır. Bu sadece bir mikrofon / alt problemden daha fazlasını gösterir.
Sorularım:
1. Bu bekleniyor mu? Neden?
2. Bunu düzeltmenin standart bir yolu var mı? Neredeyse bazı Math.Tan () büyüsü ait olduğu yerden kaldırabilir.
Amacım, varsayılan olarak daha düşük frekanslar kazanmadan ilk 5 frekansı tanımlayabilmektir.