ฉันกำลังคำนวณ FFT จากอินพุตไมโครโฟน ฉันสังเกตเห็นว่าความถี่ที่ต่ำกว่ามักจะมีพลังมากขึ้น (เดซิเบลที่สูงขึ้น) มากกว่าความถี่ที่สูงกว่า
- ฉันตัดข้อมูลออกเป็นเฟรมของ 24576 ไบต์ (4096 * 6)
- ใช้หน้าต่าง Hamming:
input[i] *= (0.54d - 0.46d*(double) Math.Cos((2d*Math.PI*i)/fs));
- เรียกใช้ผ่าน
Process1D()
FFTW - แปลงจากจำนวนเชิงซ้อน:
output[i] = 10.0 * Math.Log10((fout[i * 2] * fout[i * 2]) + (fout[i * 2 + 1] * fout[i * 2 + 1]));
- หาค่าเฉลี่ย 6 ค่าเพื่อรับ FFT ที่สมบูรณ์ 4096 ไบต์
- วาดภาพสวย (สีที่แมปกับจานสี)
ค่าเฉลี่ย (pt. 5) ทำเพื่อลดสัญญาณรบกวน FFT
เมื่อภาพแสดงทั้งเสียงและปิดไมโครโฟนจะมีพลังงานมากขึ้น (และมีเสียงรบกวนมากขึ้น) ในความถี่ต่ำ สิ่งนี้บ่งชี้ว่ามันเป็นมากกว่าแค่ปัญหาไมโครโฟน / ย่อย
คำถามของฉัน:
1. สิ่งนี้คาดหวังหรือไม่? ทำไม?
2. วิธีแก้ไขมาตรฐานแบบใด? เกือบดูเหมือนว่าเวทมนต์บางคนจะสามารถยกมันขึ้นมาได้
เป้าหมายของฉันคือสามารถระบุความถี่สูงสุด 5 อันดับแรกโดยไม่ลดความถี่ที่ชนะโดยค่าเริ่มต้น