การแปลงฟูริเยร์ลอการิทึม (LFT) บนสัญญาณเสียง


9

ฉันพยายามวิเคราะห์เพลงให้มากที่สุด แน่นอนฉันลอง FFT แต่มีปัญหาบางอย่าง

ฉันพบว่าความถี่ต่ำมีความละเอียดต่ำกว่าการได้ยินของมนุษย์ ฉันลองใช้ FFT เป็นเวลานานเพื่อแก้ไขปัญหานี้ แต่ถึงแม้จะวิเคราะห์ด้วย 8192 ตัวอย่าง / s ในอัตราตัวอย่าง 44100Hz (หมายถึงไม่มีการแก้ปัญหาเวลา) ฉันได้รับความละเอียดไม่เพียงพอสำหรับความถี่ต่ำ

ฉันพบว่ามีวิธีแก้ปัญหาน้อย

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

1. 'ถ้าฉันต้องการหา freqs ระหว่าง freq bins ฉันควรเลือกถังขยะสามอันเพื่อทำการแก้ไข?'
2. 'แม้ฉันจะทำสิ่งนี้ไม่มีข้อมูลเพิ่มเติมที่เกิดขึ้นจริง ฉันรู้ว่าการแก้ไขเป็นวิธีที่ยุ่งยากมาก '

ประการที่สองการดึง freq แต่ละช่องด้วยความถี่ที่ต้องการดังนั้นฉันสามารถแยกลอการิทึมแบบลอการิทึม
แต่มีปัญหาต้นทุนการคำนวณที่สำคัญ: (อาจมากกว่า) N ^ 2

ประการที่สาม LFT (การแปลงลอการิทึมฟูริเยต์)
ผู้ร้องขอนี้ใช้ตัวอย่างระยะห่างแบบลอการิทึมและให้ผลลัพธ์ที่ตรงกับความต้องการของฉันด้วยความเร็วที่รวดเร็วอย่างไม่น่าเชื่อ /programming/1120422/is-there-an-fft-that-uses-a-logarithmic-division-of-frequency

แต่ฉันไม่รู้ด้วยอัลกอริธึมนั้น ฉันพยายามที่จะเข้าใจกระดาษและนำไปใช้ แต่มันเป็นไปไม่ได้เพราะขาดทักษะภาษาอังกฤษและคณิตศาสตร์ของฉัน

ดังนั้นฉันต้องการความช่วยเหลือในการใช้ LFT

คำตอบ:


8

วิธีแก้ปัญหาที่ง่ายที่สุดและจริงจังที่สุดคือการใช้ FFT ปกติที่มีขนาดใหญ่พอที่คุณจะได้รับการแก้ไขความต้องการที่ความถี่ต่ำสุดที่น่าสนใจ เช่นถ้าคุณต้องการความละเอียด 1 Hz ที่ความถี่ต่ำสุดคุณจะต้องใช้หน้าต่าง FFT 1 วินาทีเช่นขนาด FFT จะต้องเท่ากับอัตราตัวอย่างเช่น 44100

โปรดทราบว่าแม้ว่าคุณจะสามารถใช้ FFT แบบลอการิทึมได้มันก็ยังคงถูกผูกมัดโดยกฎของฟิสิกส์ (ทฤษฎีข้อมูล) และคุณยังคงต้องการหน้าต่างตัวอย่างความยาวที่คล้ายกัน - สิ่งที่คุณจะได้รับคือความสะดวกสบาย ) ที่ค่าใช้จ่ายของการปฏิบัติงาน


มันเป็นเรื่องแปลก. ฉันรู้ว่าในทางทฤษฎีไม่มีข้อมูลเพิ่มเติม ถ้าฉันใช้ FFT ขนาดใหญ่มันเป็นความจริงที่ว่ามันไม่สามารถวิเคราะห์ onsets ของเครื่องดนตรีได้อย่างรวดเร็ว และก็เป็นความจริงที่ฉันไม่สามารถรับความละเอียดสูงกว่าในความถี่ต่ำได้ แต่ระบบการได้ยินของมนุษย์ล่ะ? ระบบนั้นได้รับความละเอียดสูงขึ้นทั้งในเวลาและความถี่อย่างไร

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

วิธีการที่ยอดเยี่ยม Goertzel ที่มีความถี่ต่ำเป็นเวลานาน Goertzel ที่มีความถี่สูงในระยะเวลาสั้น ๆ มีเหตุผล. แต่จะต้องมีค่าใช้จ่ายในการคำนวณที่ดี

มันอาจจะมากขึ้นมีประสิทธิภาพกว่าการทำอย่างใดอย่างหนึ่ง FFT ขนาดใหญ่ถึงแม้ว่ามันจะเป็นเรื่องที่ซับซ้อนมากขึ้น เช่นสำหรับลำดับชั้น 4 คู่ที่คุณอาจต้องการ 4 x 2048 จุด FFTs และ 3 ตัวกรองความถี่ต่ำผ่านสำหรับการสุ่มตัวอย่างลง x2 ความละเอียดของ FFT ต่ำสุดจะดีเท่ากับ 16384 จุด FFT ที่อัตราตัวอย่างเต็ม แต่เนื่องจาก FFT เป็น O (n log n) ค่าใช้จ่ายในการคำนวณทั้งหมดจะต่ำกว่ามาก
พอล R

aha, FFT 2048, ลงตัวอย่าง x2, FFT 2048, ลดลงตัวอย่าง x2 .... กว่าที่ฉันมีทั้งความละเอียดเวลาและความถี่, มีค่าใช้จ่ายน้อยกว่า 16384 FFT ยิ่งใหญ่ และตอนนี้ฉันมีวิธีแก้ปัญหาอื่น: ในตัวอย่าง 16384 ตัวอย่าง goertzel แต่ละครั้ง 32 คูณด้วยการสะสมฉันสามารถแยกความถี่ต่ำและสูงด้วยต้นทุนที่น้อยลง ขอบคุณมาก. :)

0

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

แต่ละ bin ของ FFT ให้ผลเป็นจำนวนเชิงซ้อนที่แสดงถึงองค์ประกอบที่แท้จริงและจินตภาพ - หรือหลังจากระยะการจัดการและขนาดเล็กน้อย

ในฐานะความถี่ = dPhi / dt, (พี == เฟส) โดยการเลือกถังขยะที่สอดคล้องกันจากคู่ของสเปกตรัม STFT ต่อเนื่องคุณสามารถคำนวณความถี่

มิติของ DSPมีบทความที่ดีเกี่ยวกับกระบวนการ


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

3
ดูเวอร์ชั่น "constant Q" ของการแปลงฟูริเยร์เวลาสั้น การจัดเรียงของ STFT นี้ให้ความละเอียดความถี่ที่ปรับลอการิทึมเพื่อรองรับข้อกำหนดสำหรับช่วงความถี่ที่แตกต่างกัน
2718

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