วิธีที่มีประสิทธิภาพมากที่สุดในการแยกส่วนประกอบความถี่ของสัญญาณเสียงด้วยความแม่นยำของมนุษย์ใกล้เคียงแบบเรียลไทม์


14

ฉันกำลังพยายามหาวิธีที่จะแยกส่วนประกอบความถี่ของตัวอย่างเสียงตามอำเภอใจ (โดยทั่วไปคือเพลง) ในลักษณะที่คล้ายกับ FFT แต่ในการวิจัยของฉันเกี่ยวกับอัลกอริทึม FFT ฉันได้เรียนรู้ว่ามันมีบางอย่าง ข้อ จำกัด รุนแรงสำหรับวัตถุประสงค์นี้

มี 3 ปัญหาที่ FFT กำลังนำเสนอ:

  1. เนื่องจากความละเอียดถังขยะ FFT เทียบเท่ากับขนาดหน้าต่างของคุณเพื่อให้ได้ความแม่นยำที่สมเหตุสมผล (พูด 1 Hz) คุณต้องมีหน้าต่างที่ยาวเกินสมควร (พูด 1 วินาที) ซึ่งหมายความว่าคุณไม่สามารถตรวจพบทรานแซคชันหรือความถี่ที่เพิ่งเปิดใหม่ได้อย่างรวดเร็ว นอกจากนี้ยังหมายความว่าปัญหาจะไม่สามารถแก้ไขได้ด้วย CPU ที่เร็วขึ้นและอัตราการสุ่มตัวอย่างที่สูงขึ้น - ข้อ จำกัด ถูกผูกติดอยู่กับเวลา

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

  3. ปัญหาเหล่านี้บางอย่างสามารถแก้ไขได้โดยการสอดแทรกระหว่างถังขยะ FFT สิ่งนี้อาจใช้งานได้กับเสียงดนตรีมากเพราะความถี่มักจะอยู่ห่างกันมากและดังนั้นไม่เกิน 1 ความถี่จะรั่วไหลลงในถังขยะคู่ แต่นี่จะไม่เป็นเช่นนั้นเสมอไปโดยเฉพาะอย่างยิ่งสำหรับเสียงที่น่าสนใจเช่นเครื่องดนตรีประเภทเคาะ ดังนั้นการแก้ไขจึงเป็นการคาดเดาจริงๆ

จากสิ่งที่ฉันเข้าใจเกี่ยวกับอัลกอริทึม DFT / FFT ผลลัพธ์ (แอมพลิจูด bin) เป็นความสัมพันธ์ของไซน์ / โคไซน์ที่ความถี่ของแต่ละ bin มันทำให้ฉันประหลาดใจว่าถ้าอัลกอริทึมสามารถออกแบบใหม่ได้เพื่อให้ความถี่ของช่องเก็บนั้นเว้นระยะแบบไม่เชิงเส้น (นั่นคือเราเชื่อมโยงชุดไซน์ / โคไซน์ต่าง ๆ ) ดังนั้นเราจะได้ความละเอียดของ pyschoacoustically เป็นไปได้หรือไม่หรือมันเป็นความฝันที่ไพเราะจากความเข้าใจที่ไม่สมบูรณ์ของฉันเกี่ยวกับคณิตศาสตร์หรือไม่?

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

มีวิธีที่แตกต่างกันในการทำให้การสลายตัวของความถี่ถูกต้องตามเวลาจริงและแม่นยำยิ่งขึ้นหรือไม่? ประสิทธิภาพของ CPU นั้นเป็นเรื่องที่น่ากังวล แต่ไม่ใช่เรื่องที่น่ากังวลอย่างยิ่ง - ผมสนใจที่จะทำมันในทางทฤษฎีหรือไม่ อย่างไรก็ตามสิ่งที่เป็นไปได้ในแบบเรียลไทม์บนเครื่องเดสก์ท็อปที่ทันสมัยจะเหมาะ


3
คุณกำลังพยายามแก้ไขปัญหาใด การตรวจจับ f0, การตรวจจับหลาย f0 (สำหรับการถอดความ), การจดจำคอร์ด, การสร้างแบบจำลองเวลาต่ำ ... ? มีวิธีแก้ไขปัญหาสำหรับปัญหาเหล่านี้บางส่วน คุณสนใจเรื่องการกลับหัว (เพื่อใช้ในการวิเคราะห์ -> การแปลง -> กรอบการสังเคราะห์ใหม่) หรือไม่?
pichenettes

ปัญหาที่ฉันพยายามแก้ไขนั้นเป็นที่ยอมรับค่อนข้างเปิดกว้าง ฉันมีความสนใจทั่วไปในเพลงดิจิทัลที่ครอบคลุมรายการส่วนใหญ่ของคุณ แต่ความไม่ชัดเจนของฉันคือส่วนหนึ่งเนื่องจากการขาดความรู้ในสิ่งที่สามารถทำได้และสิ่งที่เป็นที่เฉพาะเจาะจงมาตรฐานอุตสาหกรรมหรือวิธีที่ดีที่สุดของการแก้ปัญหาที่คุณพูดถึงแต่ละ (จนถึงฉันถามคำถามนี้ผมมักจะสันนิษฐาน FFT เป็นมัน ) แต่รายการในรายการที่คุณสนใจมากที่สุดสำหรับฉันคือการสร้างแบบจำลองเวลาต่ำ ฉันยังต้องการหาวิธีในการแยก Timbres ที่ซับซ้อนให้เสียงพร้อมกันในการบันทึก การสังเคราะห์ใหม่น่าตื่นเต้น อัลกอริทึม AI เป็นที่สนใจ
bryhoyt

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

"อัลกอริธึมสามารถออกแบบใหม่ได้เพื่อให้ความถี่ของช่องเก็บมีระยะห่างแบบไม่เป็นเชิงเส้นจากนั้นเราสามารถบรรลุความละเอียด pyschoacoustically - เท่ากันทุกความถี่" เสียงเหมือนการแปลงเวฟเล็ต Morlet อย่างต่อเนื่อง
endolith

คำตอบ:


5

ขณะที่ผมแสดงความคิดเห็นในโพสต์ก่อนหน้านี้เวลาความถี่วิธีการวิเคราะห์ที่เรียกว่า "ในระยะสั้นฟูเรียร์" เทียบเท่ากับธนาคารกรองการวิเคราะห์สัญญาณของคุณx สำหรับหน้าต่างการวิเคราะห์ที่ระบุw n , ขนาดN , ตัวกรองที่ความถี่k / Nคือ: h n = w - n - e j 2 π n kXxwnNk/N

hn=wnej2πnkN

สำหรับหน้าต่างการวิเคราะห์ตามปกติ (Hann, Hamming หรือสี่เหลี่ยมผืนผ้า) สิ่งนี้สอดคล้องกับตัวกรองความถี่ต่ำผ่านโดยมีความถี่ตัดรอบซึ่ง "เลื่อน" เป็นความถี่ถังk (เนื่องจากการมอดูเลตเชิงเลขชี้กำลังเชิงซ้อน) จึงนำไปสู่ตัวกรองแบนด์ - พาส1/ยังไม่มีข้อความk

ณ จุดนี้เพื่อตอบข้อกังวลของคุณโดยตรงเกี่ยวกับการสะท้อนการรับรู้ของมนุษย์บางคนได้รับ ["การแปลงค่าคงที่ Q" (CQT)] [Brown91] มันอาศัยหลักการเดียวกันกับ FT ในการตีความตัวกรองธนาคาร อย่างไรก็ตามศูนย์ไม่ได้เว้นระยะเชิงเส้นสำหรับ FT "ปกติ" แต่จะเว้นระยะ log2 ขนาดก็จะเกี่ยวข้องกับระดับดนตรีตะวันตก: หากเลือกk + 1 = 2 1 / 12kแล้วเราได้ 12 เที่ยวบินต่อคู่ (แหวนระฆัง :-)?) และแบนด์วิดธ์ที่ถูกกำหนดเป็น พูด, 2 1 / 12 - 1kk+1=21/12k. นอกจากนี้คุณยังสามารถเลือกศูนย์อื่น ๆ ตามที่คุณต้องการ21/12-12k

คุณสามารถค้นหาการใช้งานของ CQT ที่นี่และมีหนึ่งเมื่อเร็ว ๆ นี้โดยศ Klapuri มากับผกผันค่อนข้างดีสามารถพบได้ที่นี่ กลุ่มเสียงที่ Telecom ParisTech มีการนำไปใช้โดย Prof. Prado แต่ฉันยังไม่ได้ลอง

[Brown91] J. Brown, "การคำนวณการแปลงสเปกตรัมคิวคงที่", วารสารสมาคมอะคูสติกแห่งอเมริกา, 1991, 89, 425-434

แก้ไข 20121014: คำตอบและความเห็นสำหรับคำถาม (bryhoyt) ของคุณ

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

    พิจารณาจำนวนนักวิจัยชั้นนำ ( F. Pachetและทีมงาน repmus ที่ IRCAM ประเทศฝรั่งเศสเพื่ออ้างถึงบางส่วน) กำลังทำงานในหัวข้อการปรับตัวอัตโนมัติและการประกอบโดยอัตโนมัติ: งานนี้เป็นไปไม่ได้ เพื่อสรุประบบทั่วไปจำเป็นต้องเลียนแบบระบบการได้ยินของมนุษย์ (อย่างน้อย) ใช้การรับรู้เสียง / ดนตรี / พิท / จังหวะ / จังหวะการรับรู้เกี่ยวกับทฤษฎีดนตรีและการตัดสินใจขึ้นอยู่กับการประเมินขั้นตอนก่อนหน้านี้ทั้งหมด การแปลงฟูริเยร์หรือการแสดงสัญญาณใด ๆ เป็นเพียงหนึ่งก้าวเล็ก ๆ ไปสู่เป้าหมายสุดท้ายและในความคิดของฉัน

    ที่กล่าวว่ายังคงมีความเป็นไปได้ที่ทุกคนมองไกลเกินกว่าสิ่งที่เกิดขึ้นจริงและคุณอาจปราบปรามในวิธีที่ง่ายและสง่างาม! อย่าลืมเผยแพร่เมื่อทำเสร็จแล้ว! :-)

  2. ตัวอย่างของ 0.1s ที่ 44kHz นั้นเพียงพอที่จะมีช่วงความถี่ที่กว้างใหญ่

    Fs/N=44100/4410=10Hz

  3. FFT ไม่สามารถตรวจจับสิ่งนี้สำหรับความถี่ต่ำและสูง แต่คุณบอกว่าอัลกอริธึมอื่นสามารถ: สิ่งที่ได้ผล?

    คำตอบสั้น ๆ : อ่านวิทยานิพนธ์ของฉันเกี่ยวกับการประมาณทำนอง!

    เพื่ออธิบายเพิ่มเติมอีกเล็กน้อย: อัลกอริธึมการประมาณพิตช์จำนวนมากไปไกลกว่าข้อ จำกัด ของ FT ขอบคุณด้วยสมมติฐานของเสียงที่จะประมวลผล เราคาดว่าโน้ตจากเสียงที่เป็นธรรมชาติ (เสียงมนุษย์โอโบแซ็กโซโฟนเปียโน ... ) จะซับซ้อนกว่าไซนัสเดี่ยว เสียงแหลมส่วนใหญ่เป็นเสียงฮาร์มอนิกมากหรือน้อยซึ่งหมายความว่าพวกมันสามารถจำลองเป็นผลรวมของไซนัสด้วยซึ่งความถี่นั้นเป็นความถี่พื้นฐานหลายเท่า

    ดังนั้นจึงเป็นประโยชน์ที่จะต้องคำนึงถึงฮาร์มอนิกเหล่านี้เมื่อทำการประมาณระดับเสียงด้วยวิธีการที่ใช้ฟังก์ชั่นตรวจจับเช่นผลรวมของสเปกตรัมผลิตภัณฑ์สเปกตรัมหรือฟังก์ชันสัมพันธ์อัตโนมัติ มีคนเริ่มหัวข้อที่เกี่ยวข้องเมื่อเร็ว ๆ นี้

  4. การแลกเปลี่ยนคืออะไร? โดยเฉพาะอย่างยิ่งความแม่นยำของความถี่ในระดับใดที่ฉันสามารถคาดหวังสำหรับหน้าต่างสั้น ๆ ที่สมเหตุสมผล? (ฉันเข้าใจว่าขนาดของหน้าต่างใน CQT นั้นแปรผันเท่าไร) ยิ่งกว่านั้นโดยเฉพาะฉันจะเข้าใกล้ประมาณเท่าไร เป้าหมายความแตกต่างของความถี่ 0.5% กับหน้าต่าง 0.005s หรือไม่

    ดังที่ได้กล่าวไว้ก่อนหน้านี้ด้วยหน้าต่าง 0.005s คุณสามารถคาดหวังบางอย่างเช่น "ความถี่รั่ว" 200Hz นั่นเป็นปัญหาจริงๆเมื่อคุณมีไซนัสด์ 2 ตัวที่มีความถี่ที่ใกล้กว่า 200Hz เช่นว่า FT จะไม่สามารถแสดงได้ว่ามันเป็นไซนัสด์ 2 แบบที่แตกต่างกัน เราอยู่ห่างจาก 0.5% ของคุณ (โดยวิธี semitone อยู่ที่ 6% ของความถี่!) และ 0.005s นั้นค่อนข้างเล็กสำหรับวัตถุประสงค์ของคุณ อย่างไรก็ตามหากคุณต้องการประมาณการทุก ๆ 0.005s คุณยังสามารถประมวลผลเฟรมที่ทับซ้อนกันได้นานกว่าซึ่งมักจะทำในการประมวลผลคำพูด / เพลง นั่นคือสิ่งที่คุณต้องการจริงเหรอ?

    Nk=Fsfk(21/B1)
    BB=48fk=100Hzต้องใช้หน้าต่างยาวประมาณ 0.7 วินาที ไม่มีอะไรจะพูดเลยว่าเราสูญเสียการแก้ปัญหาทางโลกไปเล็กน้อย ... แต่ดังที่ได้กล่าวไว้ก่อนหน้านี้นี่เป็นปัญหาเฉพาะเมื่อเราลืมโครงสร้างของเสียง นอกจากนี้ psychoacoustics ยังพิจารณาว่าต่ำกว่า 500 Hz มนุษย์ไม่ได้แยกไซนัสออกจากกันอย่างแท้จริง: แม้แต่มนุษย์ก็ถูกท้าทายที่นั่น แน่นอนเราสามารถหวังว่าคอมพิวเตอร์ของเราสามารถทำได้ดีกว่าเรา แต่ที่นี่เราเผชิญกับปัญหาที่ยาก!

    ในที่สุดโปรดทราบว่าวิธีอื่นในการคำนวณการแสดงความถี่เสียงให้พิจารณาเช่น gammatone filter-banks ข้อได้เปรียบของ CQT ที่ฉันกล่าวถึงก่อนหน้านี้คือมีซอฟต์แวร์สำหรับทั้งการแปลงและการกลับด้าน โดยส่วนตัวแล้วฉันยังคงติดอยู่กับ STFT แต่สำหรับความเรียบง่ายและเพราะจนถึงตอนนี้ฉันไม่เคยต้องการความละเอียดที่ดีกว่าในความถี่ต่ำแม้แต่ในการแยกแหล่งข้อมูล

    [Schoerkhuber2010] Schoerkhuber, C. และ Klapuri, A. , "กล่องเครื่องมือแปลงค่า Q-Constant สำหรับการประมวลผลเพลง", การประชุมทางเสียงและดนตรีครั้งที่ 7 ที่บาร์เซโลนา, สเปน, 2010


คำพูดเล็ก ๆ น้อย ๆ : CQT อาจช่วยแก้จุดที่ 1 และ 2 ของคุณได้ แต่ไม่ใช่จุด 3 สำหรับจุดที่ 3 จะมีการแลกเปลี่ยนระหว่างเวลาและความละเอียดของความถี่เสมอและหากคุณต้องการความละเอียดความถี่ต่ำ ส่วนประกอบความถี่คุณอาจต้องยอมรับการแก้ไขเวลา ตอนนี้สำหรับการประมาณระดับเสียงอาจจะมีวิธีแก้ปัญหาอื่น ๆ คุณสามารถอ่านของฉันในวิทยานิพนธ์ปริญญาเอกของฉันหากคุณสนใจ: D
Jean-louis Durrieu

ฉันไม่ค่อยเข้าใจ ฉันรู้ว่าคุณไม่ได้รับอะไรเลยฟรี - ฉันไม่สามารถคาดหวังอัลกอริทึมในการตรวจจับความถี่ที่ไม่ได้รับการสุ่มตัวอย่างอย่างแม่นยำด้วยความละเอียดที่ดีเป็นเวลาอย่างน้อยสองสามช่วงความถี่ต่ำสุด แต่ตัวอย่างของ 0.1s ที่ 44kHz นั้นเพียงพอที่จะมีความถี่ที่หลากหลายซึ่งมนุษย์สามารถแยกแยะได้อย่างถูกต้อง (ในแง่สัมพัทธ์ - "นี่คืออันดับ 5", "มีการลดลงของแบน 4" ฯลฯ ) เพื่อพิสูจน์ข้อมูล อยู่ในนั้นบางแห่ง FFT ตรวจไม่พบสิ่งนี้สำหรับความถี่ต่ำและสูง แต่คุณบอกว่าอัลกอริธึมอื่น ๆ สามารถ: สิ่งที่ได้ผล?
bryhoyt

จากคำตอบที่ดีทั้งหมดข้างต้น CQT ดูเหมือนจะพอดีกับคำถามที่ฉันถาม การแลกเปลี่ยนคืออะไร? โดยเฉพาะอย่างยิ่งระดับความแม่นยำของความถี่ที่ฉันสามารถคาดหวังสำหรับหน้าต่างสั้น ๆ ที่มีเหตุผลคืออะไร? (ฉันเข้าใจว่าขนาดของหน้าต่างใน CQT นั้นแปรผันเท่าไร) ยิ่งกว่านั้นโดยเฉพาะฉันจะเข้าใกล้ประมาณเท่าไร เป้าหมายความแตกต่างของความถี่ 0.5% กับหน้าต่าง 0.005s หรือไม่ (นั่นคือการคาดเดาคร่าวๆของฉันเมื่อมนุษย์สามารถเริ่มได้ยินบางสิ่งบางอย่างที่
ผิดเพี้ยน

5

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

srFFT_size

มีวิธีการบังคับแบบเดรัจฉานอีกวิธีหนึ่งที่ใช้งานได้: "สอบสวน" สัญญาณของคุณด้วยเลขชี้กำลังเชิงซ้อนแบบซับซ้อน (Gabor wavelets) สิ่งเหล่านี้มีลักษณะเป็นความถี่กลางเวลากลางและแบนด์วิดท์ (ซึ่งวัดว่าเวฟเล็ตแพร่กระจายในช่วงเวลาหรือความถี่สูง) คุณจะต้องประเมินความสัมพันธ์ระหว่างสัญญาณของคุณกับเวฟเล็ตเหล่านี้เป็นจำนวนมากจำนวนมากและมีความสัมพันธ์กันในเวลาออฟเซ็ตความถี่และแบนด์วิดท์ที่คุณต้องการ ผลลัพธ์จะเหมือนกับ STFT "แบบปูกระเบื้อง" ที่มีความยืดหยุ่นสูงซึ่งมีการเลือกขนาดหน้าต่างที่เหมาะสมสำหรับแต่ละช่วงเวลาและแต่ละช่วงความถี่ นอกเหนือจากค่าใช้จ่ายในการคำนวณข้อเสียคือไม่มีอัลกอริธึมที่มีประสิทธิภาพและไม่มีอัลกอริธึมเชิงสาเหตุ หากคุณต้องการทดสอบด้วยเทคนิคเหล่านี้MPTK

k

  • k
  • พวกมันทำงานได้ดีในที่ที่มีสัญญาณรบกวนสีขาว - สิ่งนี้ต้องการสัญญาณที่จะขาวก่อนการวิเคราะห์; ทำการวิเคราะห์ในแต่ละช่องทางของตัวกรองธนาคารช่วย

สิ่งเหล่านี้มีราคาแพง แต่สามารถทำงานออนไลน์โดยมีหน้าต่างสั้น ๆ หากคำสั่งซื้อรุ่นและ / หรือเสียงรบกวนต่ำ


4

ความถี่หรือระดับเสียง? มีงานวิจัยและหนังสือมากมายเกี่ยวกับการรับรู้ระดับมนุษย์ แต่ IIRC มนุษย์มีแนวโน้มที่จะไม่ดีที่ความถี่ "แยก" อย่างถูกต้องเว้นแต่ว่าพวกเขาจะเป็นพื้นฐานระดับเสียง และความถี่สูงสุดหลายจุดภายใน "แถบความถี่วิกฤต" มักถูกมองว่าเป็นเสียงรบกวน ดังนั้นวิธีใดก็ตามที่มี "ความแม่นยำของมนุษย์ใกล้เคียง" ก็อาจจะต้องรวมถึงความล้มเหลวในการรับรู้ของมนุษย์ด้วยเช่นกัน

FFT เป็นเพียงธนาคารแห่งฟิลเตอร์ที่ไม่เหมาะสำหรับวัตถุประสงค์หลายอย่างเว้นแต่ความตั้งฉากและการย้อนกลับเป็นข้อกำหนด ธนาคารกรองอื่น ๆ เป็นไปได้หากคุณไม่ต้องการสองคน (และการรับรู้ของมนุษย์ไม่ชัดเจน) เช่นธนาคารกรองความถี่ MEL เมื่อระบุความถี่สูงสุดโดยตัวกรองความถี่ของ MEL แล้วการวิเคราะห์เพิ่มเติมโดยการแก้ไข FFT หรือเทคนิคของนักร้องเฟสอาจมีประโยชน์ในการปรับแต่งการประมาณความถี่ของยอดความถี่คลื่นความถี่ใด ๆ ที่แยกได้

โปรดทราบว่าไม่มีการรวบรวมข้อมูลเพิ่มเติมใด ๆ โดยเทคนิคการกรองเหล่านี้ที่ใช้ในช่วงเวลาเดียวกันกับข้อมูลโดเมนเวลาเทียบกับ FFT สิ่งที่เกิดขึ้นจริงอาจเป็นการสูญเสียข้อมูลเพื่อให้ตรงกับ "ความไม่ถูกต้อง" หรือความผิดปกติของระบบการได้ยินของมนุษย์

และการประมาณระดับเสียงจากชุดความถี่เป็นปัญหาที่แตกต่างกันอย่างสิ้นเชิงอีกครั้งมีหัวข้อที่มีงานวิจัยและบทมากมายในหนังสือเกี่ยวกับโสตสัมผัสวิทยาและอื่น ๆ

คำถามสุดท้ายของคุณเกี่ยวกับการแสดงอาจเป็นปลาเฮอริ่งแดง เราสามารถทำ FFT หลายสิบตัวและธนาคารตัวกรองที่แตกต่างกันหลายสิบแห่งแบบเรียลไทม์บนโปรเซสเซอร์โทรศัพท์มือถือในปัจจุบัน ด้วยห้องสมุด FFT ที่มีประสิทธิภาพมากจากผู้จำหน่าย CPU FFT ที่มีถังขยะ“ เกิน” จำนวน 1,000 ถังอาจมีประสิทธิภาพมากกว่าธนาคารกรองที่มีขนาดเล็กลง แต่มีรหัสที่ไร้เดียงสามากกว่า


คำตอบที่ให้ข้อมูลมากขอบคุณ ฉันทราบถึงความแตกต่างระหว่างระดับเสียงและความถี่ แต่คำตอบของคุณช่วยเน้นความถูกต้องของมนุษย์มากขึ้นอยู่กับเสียงที่ตรงตามข้อกำหนดบางประการ มันดังจริงสำหรับความรู้ของฉันของความสามัคคีที่มนุษย์ค่อนข้างไม่ดีในการแยกความถี่ที่ไม่ใช่พื้นฐานระดับเสียง ฉันสามารถแยกความแตกต่างในช่วงเวลาในการปรับแต่งอย่างถูกต้องจากช่วงเวลาที่ไม่สอดคล้องกัน แต่ฉันมีปัญหาในการแยกความแตกต่างของช่วงเวลาสองช่วง (นอกเหนือจาก "แบน", "แบนมาก", "คมชัด" ฯลฯ )
bryhoyt

2

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

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

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

มีเครื่องมืออื่น ๆ อีกมากมายสำหรับการใช้งานเฉพาะเช่นกัน


1
xnXkmwn
Xfm=nxn+mwnej2πnkN
Nxnm
Xม.=ΣพีxพีWพี-ม.อี-J2π(พี-ม.)kยังไม่มีข้อความ=Σพีxพีชั่วโมงม.-พี
ชั่วโมงn=W-nอีJ2πnkยังไม่มีข้อความ

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