นี่เป็นการตีความที่ถูกต้องของขั้นตอน DCT ในการคำนวณ MFCC หรือไม่


9

นี่คือความต่อเนื่องของการอภิปรายที่นี่ ฉันจะแสดงความคิดเห็นที่นั่น แต่ฉันไม่มีตัวแทน 50 คนฉันจึงถามคำถามใหม่

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

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

DCT-ified magnitude spectral spectral (เช่น MFCCs) เทียบกับขนาด log-spectral เพียง ???


ฉันจะดาวน์โหลดรหัสของคุณเพื่อทดสอบได้ที่ไหน
auraham

ภาพด้านล่าง? ไม่มีภาพในโพสต์
Eric Platon

คำตอบ:


16

ผมขอเริ่มจากจุดเริ่มต้น วิธีการคำนวณ cepstrum มาตรฐานมีดังต่อไปนี้:

(x(เสื้อ))=F-1[เข้าสู่ระบบ(F[x(เสื้อ)])]

ในกรณีของกรณีสัมประสิทธิ์ MFCC แตกต่างกันเล็กน้อย แต่ก็ยังคล้ายกัน

หลังจากเน้นก่อนและหน้าต่างคุณคำนวณ DFT ของสัญญาณของคุณและใช้ตัวกรองธนาคารของตัวกรองรูปสามเหลี่ยมที่ทับซ้อนกันแยกในระดับเมล (แม้ว่าในบางกรณีขนาดเชิงเส้นจะดีกว่า Mel):

ป้อนคำอธิบายรูปภาพที่นี่

ในส่วนที่เกี่ยวกับคำจำกัดความ cepstrum ตอนนี้คุณได้แสดงซองจดหมายของสเปกตรัม (ลดสเปกตรัม) ในระดับ mel-frequency หากคุณเป็นตัวแทนของนั้นคุณจะเห็นว่ามันคล้ายกับสเปกตรัมสัญญาณเดิมของคุณ

ขั้นต่อไปคือการคำนวณลอการิทึมของค่าสัมประสิทธิ์ที่ได้รับข้างต้น นี่เป็นเพราะความจริงที่ว่าเซพสตัมควรจะเป็นการเปลี่ยนแปลงโฮโมมอร์ฟิคที่แยกสัญญาณจากการตอบสนองของแรงกระตุ้นของระบบเสียง ฯลฯ ได้อย่างไร

สัญญาณเสียงพูดต้นฉบับ s(เสื้อ) ส่วนใหญ่จะเชื่อมั่นกับการตอบสนองแรงกระตุ้น ชั่วโมง(เสื้อ) ของระบบเสียง:

s^(เสื้อ)=s(เสื้อ)ชั่วโมง(เสื้อ)

ในโดเมนความถี่สังวัตนาคือการคูณของสเปกตรัม:

S^()=S()H()

ที่สามารถย่อยสลายเป็นสองส่วนตามคุณสมบัติต่อไปนี้: เข้าสู่ระบบ(a)=เข้าสู่ระบบ(a)+เข้าสู่ระบบ().

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

ขั้นตอนสุดท้ายในนิยาม cepstrum คือ Inverse Fourier Transform F-1. ปัญหาคือเรามีเพียง log-energies ของเราเท่านั้นไม่มีข้อมูลเฟสดังนั้นหลังจากใช้ifftเราจะได้ค่าสัมประสิทธิ์ที่มีค่าเชิงซ้อน - ไม่ได้สวยงามมากนักสำหรับความพยายามทั้งหมดนี้เพื่อเป็นตัวแทนที่กะทัดรัด แม้ว่าเราจะสามารถใช้การแปลงแบบไม่ต่อเนื่องโคไซน์ซึ่งเป็น FT เวอร์ชัน 'ง่าย' ของ FT และรับค่าสัมประสิทธิ์มูลค่าจริง! ขั้นตอนนี้สามารถมองเห็นเป็นโคไซน์ที่ตรงกับค่าสัมประสิทธิ์การใช้พลังงานของเรา คุณอาจจำได้ว่า cepstrum เรียกอีกอย่างว่า 'สเปกตรัมของสเปกตรัม'? นั่นเป็นขั้นตอนที่สำคัญมาก - เรากำลังค้นหาช่วงเวลาใด ๆ ในค่าสัมประสิทธิ์ซองจดหมายพลังงานของเรา

ป้อนคำอธิบายรูปภาพที่นี่

ดังนั้นตอนนี้คุณจะเห็นว่าตอนนี้มันค่อนข้างยากที่จะเข้าใจว่าคลื่นเดิมมีลักษณะอย่างไร นอกจากนี้เรามักจะรับ 12 MFCC ตัวแรกเท่านั้นเนื่องจากค่าที่สูงกว่ากำลังอธิบายการเปลี่ยนแปลงอย่างรวดเร็วของพลังงานบันทึกซึ่งมักทำให้อัตราการรู้จำแย่ลง ดังนั้นเหตุผลในการทำ DCT มีดังต่อไปนี้:

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

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

  • อีกวิธีหนึ่งในการหาค่าสัมประสิทธิ์ความถี่เมลด้วยการตกแต่งก็คือ PCA (การวิเคราะห์องค์ประกอบหลัก) เทคนิคที่ใช้เพื่อการนี้โดยเฉพาะ สำหรับโชคของเรานั้นได้รับการพิสูจน์แล้วว่า DCT นั้นดีมากสำหรับ PCA เมื่อเทียบกับสัญญาณที่เกี่ยวข้องกันดังนั้นข้อดีอีกอย่างของการใช้ Discrete Cosine Transform


บางวรรณกรรม:

Hyoung-Gook Kim, Nicolas Moreau, Thomas Sikora - MPEG-7 Audio and Beyond: การจัดทำดัชนีเนื้อหาเสียงและการสืบค้น


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

1
@ acannon828: โปรดดู 3 คะแนนสุดท้ายของคำตอบที่แก้ไขของฉัน ฉันหวังว่าตอนนี้มันจะอธิบายทุกอย่าง
jojek

การตอบสนองที่ยอดเยี่ยม .. วรรณกรรมใด ๆ ที่คุณสามารถแนบมาได้
บ๊อบเบิร์ต

1
@ BobBurt: ไปแล้ว!
jojek

ขอบคุณสำหรับหนังสือ สิ่งต่าง ๆ ส่วนใหญ่ดูเหมือนจะอธิบายในสิ่งนั้น หนังสือเล่มนี้ครอบคลุมทฤษฎีเกี่ยวกับระบบเสียงด้วยหรือไม่ - ฉันดูเหมือนจะไม่สามารถค้นหาสิ่งที่เกี่ยวข้องกับสิ่งนั้นได้
บ๊อบเบิร์ต

3

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


ขอบคุณ สิ่งนี้ช่วยให้ฉันเข้าใจความหมายของ @pichenettes จากการลดขนาดข้อมูล
acannon828

3

เหตุผลที่อยู่เบื้องหลังคือการแยกความสัมพันธ์ในขนาดบันทึกการทำงาน (จากตัวกรอง) เนื่องจากการซ้อนทับของตัวกรอง โดยพื้นฐานแล้ว DCT ทำให้การแสดงสเปกตรัมเป็นไปอย่างราบรื่นโดยขนาดของ log-spectral

สิ่งนี้ไม่ถูกต้อง มีความสัมพันธ์กันระหว่างขนาดของ log-spectral ไม่ใช่เพียงเพราะพวกมันเหลื่อมกัน แต่ยังเป็นเพราะไม่มีลำดับของตัวเลขใด ๆ ที่แสดงถึง "ความหมาย" (ใน, เกิดขึ้นในการพูดตามธรรมชาติและเสียง) ของขนาด log-spectral "ความหมาย" ขนาดของท่อนซุง - สเปคตรัมมีแนวโน้มที่จะค่อนข้างราบเรียบโดยรวมพลังงานลดลงในความถี่ที่สูงขึ้น ฯลฯ ใครจะบอกว่าขนาดของพื้นที่ของเวกเตอร์ขนาดความหมายของ log-spectral นั้นมีขนาดเล็กกว่า 40 หรือ แล้วแต่จำนวนวงที่คุณใช้ และ DCT สามารถเห็นได้ว่าเป็นการลดมิติข้อมูลเพื่อทำแผนที่ข้อมูล 40 ช่องสัญญาณลงบนพื้นที่ขนาดเล็กกว่านี้

โดยพื้นฐานแล้ว DCT ทำให้การแสดงสเปกตรัมเป็นไปอย่างราบรื่นโดยขนาดของ log-spectral

DCT ไม่ปรับให้เรียบ คุณเห็นการปรับให้เรียบเมื่อสร้างขึ้นใหม่จากข้อมูล DCT การปรับให้เรียบนั้นเกิดจากการสูญเสียข้อมูลโดย DCT และการตัดค่าสัมประสิทธิ์ที่ตามมา

แต่ค่าสัมประสิทธิ์เอ็มเอฟซีไม่ได้เก็บสเปกตรัมเรียบ - มันเก็บลำดับของสัมประสิทธิ์ DCT uncorrelated

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