อะไรคือความแตกต่างระหว่างการแปลงฟูริเยร์และการแปลงโคไซน์?


75

ในการรู้จำเสียงส่วนหน้าส่วนใหญ่ทำการประมวลผลสัญญาณเพื่อให้สามารถดึงคุณสมบัติออกจากสตรีมเสียง การแปลงฟูริเยร์แบบไม่ต่อเนื่อง (DFT) ถูกนำมาใช้สองครั้งในกระบวนการนี้ ครั้งแรกคือหลังจากการเปิดหน้าต่าง หลังจาก Mel Binning นี้ถูกนำไปใช้และจากนั้นก็แปลงฟูเรียร์อื่น

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


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

คำถามของคุณเกี่ยวข้องกับMel-frequency cepstrumซึ่งถูกถามในคำถามอื่นหรือไม่?
ร.

คำถามของฉันคือ 2 ส่วน: ความแตกต่างระหว่าง DCT และ DFT และทำไม DCT มักใช้สำหรับการประมวลผลสัญญาณหลังจากใช้ DFT และ Mel Binning แทนที่จะใช้ DFT อื่น
เนทเกล็น

ทำไมในการประมวลผลภาพเราไม่ใช้การแปลงแบบไซน์ไม่ต่อเนื่องแทนที่จะเป็นการแปลงแบบโคไซน์แบบไม่ต่อเนื่อง?

สวัสดี rimondo นี่เป็นคำถามที่ดี แต่คุณโพสต์เป็นคำตอบ คุณควรสร้างคำถามใหม่เพื่อถาม
Nate Glenn

คำตอบ:


48

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

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

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


4
@JasonR "ในระดับคุณภาพตัวแทน DCT ของสัญญาณมีแนวโน้มที่จะมีพลังงานมากขึ้นในค่าสัมประสิทธิ์จำนวนเล็กน้อยเมื่อเทียบกับการแปลงอื่น ๆ เช่น DFT" อืม ... ฉันไม่แน่ใจว่าฉันเห็นด้วยกับคุณอย่างสมบูรณ์ - ถ้าเพียงเพราะ DFT ได้รวมโคไซน์ลงไปแล้วซึ่งสัญญาณจะถูกฉายออกมา - DFT จะแสดงความแข็งแกร่งของการฉายภาพนั้นได้อย่างไร และ DCT สามารถ? ขอบคุณ
Spacey

3
นี่เป็นคุณสมบัติที่รู้จักกันดีของ DCT ซึ่งอธิบายการใช้งานในอัลกอริทึมการบีบอัดจำนวนมาก ฉันเชื่อว่ามันเกี่ยวข้องกับเงื่อนไขขอบเขตที่ DCT สันนิษฐานไว้ที่ขอบของสัญญาณซึ่งแตกต่างจาก DFT
Jason R

23

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

โดยเฉพาะอย่างยิ่งเป็นที่ทราบกันดีว่าการหยุดทำงานใด ๆ ในฟังก์ชั่นจะช่วยลดอัตราการบรรจบกันของอนุกรมฟูริเยร์ ... ความราบรื่นของฟังก์ชั่นคือยิ่งต้องใช้เทอมน้อยลงใน DFT หรือ DCT สามารถบีบอัดได้ ... อย่างไรก็ตามระยะเวลาโดยนัยของ DFT หมายถึงความไม่ต่อเนื่องมักจะเกิดขึ้นที่ขอบเขต ... ในทางกลับกัน DCT ที่ขอบเขตทั้งสองยังคงให้การขยายอย่างต่อเนื่องที่ขอบเขต นี่คือเหตุผลที่ DCTs ... โดยทั่วไปทำงานได้ดีกว่าสำหรับการบีบอัดสัญญาณกว่า DFT และ DST ในทางปฏิบัติมักจะต้องการ Type-II DCT สำหรับแอปพลิเคชันดังกล่าวส่วนหนึ่งด้วยเหตุผลของความสะดวกในการคำนวณ

นอกจากนี้คุณอาจพบว่าคำตอบนี้มีประโยชน์เช่นกัน (จาก math.stackexchange.com) มันระบุว่า:

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


19

เหตุผลที่คุณเห็นการแปลงฟูริเยร์นำมาใช้สองครั้งในกระบวนการแยกคุณลักษณะคือคุณลักษณะนั้นขึ้นอยู่กับแนวคิดที่เรียกว่า cepstrum Cepstrum เป็นการเล่นบนคำว่าสเปกตรัม - โดยหลักแล้วความคิดคือการแปลงสัญญาณเป็นโดเมนความถี่โดยการแปลงฟูริเยร์แล้วทำการแปลงอีกครั้งราวกับว่าคลื่นความถี่เป็นสัญญาณ

ในขณะที่คลื่นความถี่อธิบายความกว้างและเฟสของแต่ละย่านความถี่ cepstrum จะอธิบายลักษณะที่แตกต่างกันระหว่างย่านความถี่ คุณสมบัติที่ได้จาก cepstrum นั้นสามารถอธิบายการพูดได้ดีกว่าคุณสมบัติที่ถ่ายโดยตรงจากสเปกตรัมความถี่

มีคำจำกัดความที่แตกต่างกันสองสามข้อ แต่เดิมการแปลงเซฟท์ตัมถูกกำหนดให้เป็นฟูริเยร์การแปลง -> ลอการิทึมแบบซับซ้อน -> การแปลงฟูริเยร์ [1] อีกนิยามคือการแปลงฟูริเยร์ -> ลอการิทึมแบบซับซ้อน -> การแปลงฟูริเยร์ผกผัน [2] แรงจูงใจสำหรับคำจำกัดความหลังคือความสามารถในการแยกสัญญาณที่มีการปรับ (คำพูดของมนุษย์มักจะถูกสร้างแบบจำลองเช่นการบิดของการกระตุ้นและเสียงพูด)

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

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

[1] Bogert, B. , Healy, M. , และ Tukey, J. (1963) Alanysis Quefrency ของ Time Series สำหรับ Echoes: Cepstrum, Pseudo-Autocovariance, Cross-Cepstrum และแคร็ก Saphe ในการประชุมวิชาการเรื่องการวิเคราะห์อนุกรมเวลา 209-243

[2] Oppenheim, A. และ Schafer, R. (1968) การวิเคราะห์เสียงพูด Homomorphic ในธุรกรรม IEEE เกี่ยวกับเสียงและอิเล็กโทรด 221-226

[3] Davis, S. , และ Mermelstein, P. (1980) การเปรียบเทียบการแทนค่าพารามิเตอร์สำหรับการรู้จำคำพยางค์เดียวในประโยคที่พูดอย่างต่อเนื่อง. ในธุรกรรม IEEE เกี่ยวกับอะคูสติกการประมวลผลคำพูดและสัญญาณ 28, p. 357-366


เรื่อง PCA ในการดึงคุณสมบัติ: PCA จริงจะไม่มีจุดหมายที่นี่เพราะมันจะขึ้นอยู่กับข้อมูล! หากคุณคำนวณ PCA ของสัมประสิทธิ์บันทึกเมลความถี่จากชุดข้อมูลหนึ่งจากนั้นอีกชุดหนึ่งคุณจะพบพื้นฐานที่แตกต่าง - ซึ่งหมายความว่าหากใช้ PCA ในกระบวนการแยกคุณลักษณะคุณลักษณะที่แยกจากสัญญาณหนึ่งจะไม่ 't "หมายถึงเหมือนกัน" เป็นคุณสมบัติที่แยกในสัญญาณอื่น ๆ ตอนนี้ทำการทดลองนี้: คำนวณ PCA บนชุดของ log Mel coef สกัดจาก 10 ชั่วโมงของเสียงที่หลากหลายที่สุด พื้นฐานที่คุณจะพบนั้นคล้ายคลึงกับ DCT
pichenettes

3
กล่าวอีกนัยหนึ่ง: เพื่อให้มีประโยชน์ในแอปพลิเคชั่นการรับรู้การแปลงความสัมพันธ์ในตอนท้ายของกระบวนการแยกคุณลักษณะจะต้องเป็นการประนีประนอมที่เหมาะสมกับ "เสียง" โดยทั่วไปแทนที่จะเป็นข้อมูลที่เฉพาะเจาะจง ปรากฎว่าพื้นฐาน DCT นั้นใกล้เคียงกับสิ่งที่คุณได้รับเมื่อคุณใช้ PCA ในชุดเสียงขนาดใหญ่!
pichenettes

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

8

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


1
อย่างไรก็ตามมันเป็นไปได้ที่จะจินตนาการถึง DCT / DST ของลำดับที่ซับซ้อนโดยที่หนึ่งแยกเอา DCT / DST ของชิ้นส่วนจริงและจินตภาพ

เราสามารถพูดได้ว่าถ้าฉันคำนวณ DFT ฉันได้รับ DCT ฟรีสิ่งที่ฉันต้องทำก็คือลบส่วนจินตภาพของเวกเตอร์ โปรดแก้ไขฉันหากฉันผิด
Marek

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