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


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.