ไม่สามารถแยกสัญญาณเสียงโดย FastICA จากการบันทึกในโลกแห่งความจริง


12

ฉันได้เขียนโปรแกรมเพื่อทำการ FastICA บนไฟล์สเตอริโอ WAV โดยใช้รหัสในตัวอย่าง Python MDP FastICA

ด้วยตัวอย่างเสียงฉันได้ผลลัพธ์ที่ดีมาก

จากนั้นฉันพยายามบันทึกโลกแห่งความจริงโดยใช้ไมโครโฟนโมโนคอมพิวเตอร์สองเครื่องเชื่อมต่อกับไมโครโฟนสเตอริโอในพีซีของฉันโดยเชื่อมต่อ mic 1 ถึง L channel และ mic 2 ถึง R channel ฉันทดสอบด้วยการเล่นดนตรีที่พื้นหลังขณะที่ฉันกำลังพูดคุยในห้องที่เงียบสงบ

อย่างไรก็ตามการรัน FastICA ไม่ได้เป็นการแยกสัญญาณเลย เป็นไปได้หรือไม่ที่คุณภาพของไมโครโฟนต่ำเกินไป? ฉันต้องทำสิ่งใดกับไฟล์ WAV ที่บันทึกไว้ (16 บิต, PCM ที่ลงนาม, 44100Hz) ก่อนที่จะเรียกใช้ FastICA หรือไม่

คุณสามารถดาวน์โหลดบันทึกที่นี่

คำตอบ:


11

ICA ในรูปแบบ raw เหมาะสำหรับใช้กับชุดผสมการสังเกตแบบซิงโครไนซ์เฟสเท่านั้น การใช้ไมโครโฟนตามที่คุณอธิบายจะทำให้เกิดการหน่วงเวลาเฟสตามที่ผู้โพสต์คนอื่นเห็น อย่างไรก็ตามการล่าช้าเฟสนี้สามารถใช้เพื่อประโยชน์ที่ดีเยี่ยม อัลกอริทึมที่รู้จักกันดีที่สุดที่เกี่ยวข้องกับการแยกสเตอริโอในที่ที่มีความล่าช้าคือ DUET ลิงก์เสีย แต่การอ้างอิงที่คุณกำลังค้นหาอยู่ที่นี่> http://eleceng.ucd.ie/~srickard/bss.html

นี่คือกระดาษที่คุณควรมองหา>
A. Jourjine, S. Rickard และ O. Yilmaz, การแยกสัญญาณ Disjoint Orthogonal แบบแยกสัญญาณตาบอด: Demixing N Sources จาก 2 ส่วนผสม, การประชุม IEEE เกี่ยวกับอะคูสติก, การพูดและการประมวลสัญญาณ (ICASSP2000) เล่มที่ 5, หน้า 2985-2988, อิสตันบูล, ตุรกี, มิถุนายน 2000


2
คำถาม - ถ้าสูตรมาจากมากกว่าหนึ่งไมค์แยกต่างหากตำแหน่ง ... แล้ววิธีที่เราสามารถที่เคยมีบังเอิญเฟส ... ในตำราทั้งหมดที่ฉันดูตัวอย่างของไมโครโฟนหลายนี้จะใช้ ubiquitously แต่ถ้าบังเอิญเฟส? เป็นปัญหาเช่นนี้ทำไมไม่พูดถึง? ฉันแค่พยายามทำความเข้าใจที่นี่ฉันยังใหม่กับฉาก ICA
Spacey

@ โมฮัมหมัด: ฉันสงสัยว่าเฟสซิงโครไนต์มีอยู่ในแอปพลิเคชั่นอื่น ๆ และพวกเขาก็ใช้แอปพลิเคชันเสียงเพื่อทำให้ผู้อ่านคุ้นเคยมากขึ้น
endolith

1
@ Mohammad มีความเป็นไปได้ที่ไมโครโฟนที่มีระยะห่างจะมีเฟส sychronicity สำหรับแหล่งเดียว ลองจินตนาการถึงแหล่งที่มาที่ถูกจับด้วยไมโครโฟน 2 ตัวที่วางอยู่ทั้งสองด้านเท่ากันทั้งสองข้าง ความยาวเส้นทางจากต้นทางไปยังไมโครโฟนจะเท่ากันในแต่ละกรณีและสัญญาณจะได้รับในเฟสที่ไมโครโฟนทั้งสอง แต่สำหรับแหล่งนั้นเท่านั้น คุณสามารถเพิ่มไมโครโฟนได้มากขึ้นเท่า ๆ กันในมิติเชิงพื้นที่ที่แตกต่างกันเพื่อปฏิเสธสัญญาณที่ไม่ต้องการต่อไป เทคนิคการวิเคราะห์ EEG มีประโยชน์สำหรับเรื่องนี้ คุณควรทราบว่าการหน่วงเวลาระหว่างแต่ละไมโครโฟนจะเป็นฟังก์ชั่นของความถี่ (เนื่องจากความยาวคลื่น)
Dan Barry

@DanBarry Thanks Dan - จุดที่น่าสนใจเกี่ยวกับ EEG ให้ฉันอธิบาย - แน่นอนฉันรู้อย่างชัดเจนว่าถ้าเซ็นเซอร์มีความยาวเท่ากันจากแหล่งที่เราได้รับความล่าช้าเดียวกัน ... :-) สิ่งที่ฉันพยายามที่จะได้รับคือสำหรับการใช้งานที่สิ่งต่าง ๆ ไม่สามารถควบคุมได้ (ลำโพงใน ห้องที่มีเซ็นเซอร์จำนวนหนึ่ง) ICA ได้รับการกล่าวถึงว่าทำงานได้ในกรณีดังกล่าว แต่ 99% ของเวลาที่เราไม่ได้มีการซิงโครไนซ์เฟส - ถ้ามันถูกขนานนามว่าเป็นอัลกอริทึมการทำงานในกรณีนี้ สิ่งที่หายไปที่นี่ ... ขอบคุณ!
Spacey

1
@ ท้ายด้วยใช่มันเป็นทางออกที่ดีและใช้งานได้! ฉันยังคิดถึงวิธีการแก้ปัญหาที่คล้ายกันย้อนกลับไปในปี 2003 และรู้สึกผิดหวังที่พบสิ่งที่คล้ายกัน แต่ของฉันแตกต่างกันมากพอที่ฉันสามารถจดสิทธิบัตรได้ ฉันโชคดีที่สามารถเป็นคนแรกที่พัฒนาอัลกอริทึมการแยกแหล่งเรียลไทม์กลับมาในปี 2004 การสาธิตของต้นฉบับที่นี่> audioresearchgroup.com/main.php?page=Demosและการปรับปรุงใหม่ที่สามารถเห็นได้ในการสาธิตวิดีโอ ที่นี่> riffstation.com
Dan Barry

6

ตามที่ฉันพูดลงไปอีกหน้า:

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

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

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


ฉันพยายามแล้ว. มันควรจะเป็นปัญหาความล่าช้าตามที่คุณแนะนำ โดยการผสมการบันทึกแยกต่างหาก FastICA ให้ผลลัพธ์ที่สมบูรณ์ ฉันต้องหาวิธีที่จะรับมือกับความล่าช้า ....
Jeremy

@ Jeremy: ฉันคิดว่าคุณจะต้องมีอัลกอริทึมที่แตกต่างกันแล้ว
endolith

คุณรู้จัก bss algo ที่สามารถรับมือกับความล่าช้าได้หรือไม่?
Jeremy

จริง ๆ แล้วเมื่อฉันบันทึกและปรบมือของฉันให้เกิดเสียงดังแหลมฉันไม่สามารถสังเกตเห็นความล่าช้าในความกล้า
Jeremy

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

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