ความถี่ที่ต่ำกว่าแข็งแกร่งใน FFT หรือไม่


15

ฉันกำลังคำนวณ FFT จากอินพุตไมโครโฟน ฉันสังเกตเห็นว่าความถี่ที่ต่ำกว่ามักจะมีพลังมากขึ้น (เดซิเบลที่สูงขึ้น) มากกว่าความถี่ที่สูงกว่า

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

ค่าเฉลี่ย (pt. 5) ทำเพื่อลดสัญญาณรบกวน FFT

เมื่อภาพแสดงทั้งเสียงและปิดไมโครโฟนจะมีพลังงานมากขึ้น (และมีเสียงรบกวนมากขึ้น) ในความถี่ต่ำ สิ่งนี้บ่งชี้ว่ามันเป็นมากกว่าแค่ปัญหาไมโครโฟน / ย่อย

คำถามของฉัน:
1. สิ่งนี้คาดหวังหรือไม่? ทำไม?
2. วิธีแก้ไขมาตรฐานแบบใด? เกือบดูเหมือนว่าเวทมนต์บางคนจะสามารถยกมันขึ้นมาได้

เป้าหมายของฉันคือสามารถระบุความถี่สูงสุด 5 อันดับแรกโดยไม่ลดความถี่ที่ชนะโดยค่าเริ่มต้น

FFT


โปรดลองหน้าต่าง Hamming ที่ถูกต้องก่อนเพื่อดูว่าส่วนของหน้าต่างที่ชำรุดนั้นเป็นสาเหตุของเสียงรบกวนความถี่ต่ำหรือไม่
hotpaw2

@Tedd Hansen คุณจะจบลงอย่างไร "ระบุความถี่สูงสุด 5 อันดับแรกโดยไม่ลดความถี่" - 5 อันดับแรกจากความถี่ 1/3 คู่
เดนิส

คำตอบ:


12

ใช่นี่เป็นที่คาดหวังอย่างมาก สิ่งที่คุณเห็นคือสเปกตรัม " สีชมพู " คือพลังงานคงที่ต่อแบนด์วิดท์สัมพัทธ์เมื่อเทียบกับ " ขาว " ซึ่งเป็นพลังงานคงที่ต่อแบนด์วิดธ์สัมบูรณ์ สำหรับสัญญาณสีชมพูพลังงานระหว่าง 1-2kHz นั้นเท่ากับ 2-4kHz (แต่ละอันแสดงแบนด์วิดท์เพิ่มขึ้นเป็นสองเท่าหรือเป็น "อ็อกเทฟ"

สัญญาณเสียงที่เป็นธรรมชาติส่วนใหญ่ (คำพูด, เพลง, ภาพยนตร์, ฯลฯ ) มีสเปกตรัมเหมือนสีชมพู เสียงพื้นหลังส่วนใหญ่ของอะคูสติก (เสียงไมโครโฟน, เสียง HVAC, ความผันผวนของแรงลม, พื้นหลังทั่วไป) มีแนวโน้มที่จะเป็นสีชมพูหรือเอียงไปทางความถี่ที่ต่ำกว่า

ระบบการได้ยินของมนุษย์ก็ทำงานเช่นกัน ในหูชั้นในสัญญาณเสียงจะถูกแบ่งออกเป็นแถบแบนด์วิดท์สัมพัทธ์คงที่ (เรียกว่า "Critical Bands") ซึ่งมีค่าประมาณเดียวกับสเปกตรัมคู่ที่สาม

วิธีที่ดีที่สุดในการดูข้อมูลสเปกตรัมเสียงคือการวางลงบนมาตราส่วนลอการิทึม


คำแถลงว่า "สัญญาณเสียงที่เป็นธรรมชาติมีสเปกตรัมเหมือนสีชมพู" ทำให้ไม่มีการพิจารณาระดับเวลา เป็นเวลานาน (ประมาณ 10 วินาที) ผมเห็นด้วยและแน่นอนในหลายนาทีว่าข้อความนั้นมีแนวโน้มที่จะเป็นจริง แต่สเป็คตรัมที่นี่คำนวณได้มากกว่า 0.55 วินาที หากอินพุตเป็นเช่นดนตรีฉันคาดหวังว่าโครงสร้างโทนเสียงจะมีมากขึ้น
mtrw

2
"tonality" ส่งผลต่อโครงสร้างที่ดีของสเปกตรัม รูปร่างโดยรวม (ในแง่ของพลังงานต่อคู่) จะยังคงเป็นสีชมพูส่วนใหญ่สำหรับเพลงเว้นแต่มันจะเป็นสิ่งที่ "เดี่ยวสำหรับสามเหลี่ยมและความผิดพลาดฉิ่ง"
Hilmar

1
@mtrw: คลื่นสี่เหลี่ยมเป็นเสียงที่แน่นอน แต่เสียงประสานความถี่สูงยังคงตกลงมาในอัตรา 1 / f
endolith

8

ในขั้นตอนที่ 2 สูตรที่ควรจะเป็นinput[i] *= (0.54d - 0.46d*(double) Math.Cos((2d*Math.PI*i)/N));ซึ่งเป็นจำนวนตัวอย่างในบัฟเฟอร์ในกรณีของคุณN24576

ในขั้นตอนที่ 4 และ 5 ฉันจะใช้ค่าเฉลี่ยของ bin-wise ในค่าของขนาดกำลังสองไม่ใช่ค่า dB [4,6]สมมติว่าคุณมีขนาดกำลังสอง โดยเฉลี่ยพวกเขาคือ,5 10*log10(5) ~= 6.99เฉลี่ย10*log10(4)และเป็น10*log10(6)6.90

ปัญหาแรกอาจเป็นสาเหตุของความเอนเอียงไปสู่ความถี่ต่ำเนื่องจากจะทำให้เกิดการรั่วไหลของสเปกตรัมและความถี่ต่ำจะได้รับการปนเปื้อนมากขึ้นจากสาย DC (ซึ่งเป็นค่าประมาณที่ไม่ดีอย่างหลีกเลี่ยงไม่ได้) ปัญหาที่สองอาจไม่สร้างความแตกต่างให้กับความถี่ต่ำ แต่ฉันคิดว่าใกล้ถึงความตั้งใจของการวัดของคุณ


fout[i * 2] * fout[i * 2]) + (fout[i * 2 + 1] * fout[i * 2 + 1]4610เข้าสู่ระบบ10(5)(10เข้าสู่ระบบ10(4)+10เข้าสู่ระบบ10(6))/2

ในคำอธิบายของคุณข้างต้นฉันเชื่อว่าคุณต้องการความกว้างของหน้าต่าง (N) 4096 เนื่องจากนี่คือความกว้างของ FFT ที่ถูกนำไปใช้ หน้าต่างนี้จะต้องนำไปใช้กับตัวอย่าง 4096 ที่ถูกแปลงก่อนแต่ละ fft
จาค็อบ

@Jacob - OP กำลังคำนวณ FFT ของ 6 * 4096 คะแนนจากนั้นเฉลี่ย 6 ช่องติดกันเพื่อลดลงถึง 4096 คะแนน
mtrw

5

เสียงรบกวน 1 / f เกิดขึ้นในหลาย ๆ ระบบทางกายภาพชีวภาพและเศรษฐกิจ นักวิจัยบางคนอธิบายว่ามันเป็นสิ่งที่แพร่หลาย

เสียงสีชมพูและสีขาว

เสียงสีชมพู (ซ้าย) และเสียงสีขาว (ขวา) บน FFT spectrogram ที่มีแกนแนวตั้งความถี่เชิงเส้น (บนเครื่องเสียงทั่วไปหรือเครื่องวิเคราะห์สเปกตรัมที่คล้ายกันเสียงสีชมพูจะแบนไม่เอียงลงและเสียงสีขาวเพิ่มขึ้น)


6
เสียงด้านซ้ายเป็นสีชมพูแน่นอน แต่เสียงทางด้านขวาจะมีสีส้มนิดหน่อย :-)

ในขณะที่เป็นความจริงที่ว่าเสียง 1 / f เป็นที่แพร่หลาย แต่ส่วนหน้าแบบอะนาล็อกที่ออกแบบมาอย่างดีสำหรับเสียงโดยทั่วไปจะมีสัญญาณรบกวน 1 / f อยู่ในระดับต่ำดังกล่าว 10 Hz เสียงสีขาวมีอิทธิพลในแถบที่น่าสนใจ
mtrw

4

คาดหวังหรือไม่ ทำไม?

เสียงที่เป็นธรรมชาติจำนวนมากมีความกลมกลืนดังนั้นจะมีความถี่พื้นฐานที่ต่ำกว่าและจากนั้นพลังงานน้อยลงในการทวีคูณของพื้นฐานที่สูงขึ้น อาจมีอคติ DC ซึ่งหมายถึงพลังงานจำนวนมากทางด้านซ้าย อิทธิพลอีกอย่างคือฟังก์ชั่นหน้าต่างของคุณซึ่งบิดเบือนการตอบสนองความถี่

มีวิธีแก้ไขมาตรฐานแบบใดบ้าง? เกือบดูเหมือนว่าเวทมนต์บางคนจะสามารถยกมันขึ้นมาได้

คุณสามารถจัดการกับ DC bias โดยใช้ตัวกรอง high-pass การปรับใช้อย่างง่ายคือการลบค่าเฉลี่ยระยะยาวจากทุกตัวอย่าง (แก้ไข: หรือง่ายกว่าให้ทิ้งความถี่ที่ต่ำกว่าเช่น <50Hz จากผลลัพธ์ FFT ของคุณ) คุณสามารถทดลองกับฟังก์ชั่นหน้าต่างที่แตกต่างกัน ตรวจสอบให้แน่ใจ (ตามที่ @mtrw ชี้ให้เห็น) ว่าคุณใช้หน้าต่างอย่างถูกต้อง เส้นตรงที่ไม่ใช่เชิงเส้นอื่น ๆ ในการตอบสนองสามารถแก้ไขได้โดยการวัดอินพุตในอุดมคติและทำให้เส้นโค้งเป็นปกติ


ฟังก์ชั่นหน้าต่างไม่ควรส่งผลกระทบต่อการตอบสนองความถี่ควรหรือไม่
endolith

@endolith: มัน - คุณคูณข้อมูลของคุณด้วยฟังก์ชั่นหน้าต่างและฟังก์ชั่นรวมกันมีการตอบสนองที่แตกต่างกัน อ่านบทความ Wikipedia ที่ลิงก์ซึ่งกล่าวถึงสิ่งนี้ในเชิงลึกยิ่งขึ้น ความเป็นจริงของการจัดการกับตัวอย่างในโลกแห่งความจริงก็คือโดยปกติจะมีหน้าต่างบางส่วน (เช่นรูปสี่เหลี่ยมผืนผ้า) และคุณสามารถประมาณการตอบสนองความถี่ของสัญญาณแหล่งที่มา (ไม่ จำกัด ) เท่านั้น
Guy Sirton

บางทีเราคิดว่า "การตอบสนองความถี่" แตกต่างกัน หากสัญญาณหยุดนิ่งและคุณใช้ฟังก์ชั่นหน้าต่างกับคลื่นความถี่นั้นควรมีแอมพลิจูดเดียวกันที่ความถี่เดียวกันไม่ว่าคุณจะใช้ฟังก์ชั่นหน้าต่างประเภทใด ความกว้างของเดือยแต่ละความถี่จะแตกต่างกัน แต่ความสูงของเดือยจะเหมือนกันเมื่อเทียบกับกันและกัน ฟังก์ชั่นการเรียงหน้าต่างไม่ได้ทำหน้าที่เหมือนกับตัวกรองที่ลดทอนความถี่มากกว่าบางอย่าง
endolith

@endolith: ลองจินตนาการถึงคลื่นไซน์ที่ไม่มีที่สิ้นสุดตอนนี้คูณด้วยหน้าต่าง cos ^ 2 คุณจะยังคงมีส่วนประกอบที่ความถี่เดิม แต่แอมพลิจูดของมันจะ "ปิด" และคุณจะมีส่วนประกอบความถี่ใหม่ที่มาจากหน้าต่าง ดูย่อหน้าแรกที่นี่: en.wikipedia.org/wiki/Spectral_leakage
Guy Sirton

ใช่ แต่แอมพลิจูด "ปิด" จะเหมือนกันไม่ว่าความถี่ของคลื่นไซน์ไม่มีที่สิ้นสุดจะเป็นเท่าไหร่?
endolith
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.