PSOLA หรือ WSOLA ดีกว่าสำหรับการยืด / ปรับแต่งเสียง?
ฉันต้องการใช้อัลกอริทึมการปรับเปลี่ยนระยะห่างของโดเมนเวลาเช่น PSOLA (Pitch Synchronous Overlap and Add) หรือ WSOLA (Waveform Similarity Overlap and Add)
ในขณะนี้ฉันใช้ PSOLA แต่สำหรับฉันแล้วดูเหมือนว่า WSOLA จะมีประสิทธิภาพมากกว่าสำหรับสัญญาณโพลีโฟนิกที่มีรูปคลื่นที่ซับซ้อนในขณะที่ PSOLA ทำงานได้ดีขึ้นกับสัญญาณโมโนโฟนิกเช่นเสียงร้อง ฉันรู้สึกว่ามันน่าจะดีกว่าหากใช้ WSOLA ในอนาคตแม้ว่าฉันจะสนใจแค่สัญญาณโมโนโฟนิกในตอนนี้
ฉันสงสัยว่าการใช้ WSOLA เมื่อเทียบกับ PSOLA มีข้อเสียหรือไม่
ดูเหมือนว่าทั้งสองเทคนิคจะทำงานในรูปแบบที่คล้ายคลึงกันทั้งสองอย่างระบุการทำซ้ำภายในรูปคลื่นแม้ว่า WSOLA จะไม่จำเป็นต้องล็อกไว้ที่พื้นฐาน การล็อคพื้นฐานทำให้ PSOLA เหนือกว่าสำหรับเสียงร้องหรือไม่?
เพื่อให้แม่นยำยิ่งขึ้นฉันพยายามหาข้อดีและข้อเสียของ WSOLA เทียบกับ PSOLA สำหรับงานต่อไปนี้:
- การแก้ไขระดับเสียง
- การแก้ไขเวลา
- การแก้ไข Formant
คำตอบ
เพื่อให้แม่นยำยิ่งขึ้นฉันพยายามหาข้อดีและข้อเสียของ WSOLA เทียบกับ PSOLA สำหรับงานต่อไปนี้:
การแก้ไขระดับเสียง:
- PSOLA - ข้อดีที่คุณสามารถเปลี่ยนระดับเสียงได้โดยตรงตามช่องว่างของอัตราระหว่างธัญพืชรักษาฟอร์มให้เหมือนเดิม ... เพื่อเปลี่ยนระดับเสียงที่คุณไม่ต้องใช้มาตราส่วนเวลาและทำการสุ่มตัวอย่างใหม่หลังจากนั้น
- PSOLA - ข้อเสียคุณต้องการเครื่องตรวจจับสนามพลังพิเศษ
- WSOLA - ข้อเสีย WSOLA ไม่ใช่อัลกอริธึม Pitch Shift เดียว WSOLA เป็นอัลกอริทึม Time Scale หนึ่งในการเปลี่ยนระดับเสียงจะต้องใช้มาตราส่วนเวลาและทำการจำลองใหม่รูปแบบจะหายไปดังนั้นคุณอาจต้องใช้ autocorrelation ประเภทหนึ่งเพื่อค้นหาสถานที่ที่ดี ในการหั่นดังนั้นจึงไม่เหมือนกับข้อมูล Pitch หากคุณกำลังสร้าง Automatic Pitch Correction หนึ่ง autocorrelation จะไม่ให้ข้อมูล Pitch ที่ถูกต้องแก่คุณ
- WSOLA - ข้อดีอย่างหนึ่งที่นี่คือไม่ได้ Pitch ขึ้นอยู่กับ slice เพียงแค่แบ่งความคล้ายคลึงกันที่ดีที่สุดโปรดจำไว้ว่ามันเป็นเพียงอัลกอริธึมมาตราส่วนครั้งเดียวคุณจะต้องทำการ resample เพื่อเปลี่ยนระดับเสียง
การแก้ไขเวลา:
สำหรับมาตราส่วนเวลาฉันคิดว่า WSOLA มีข้อได้เปรียบที่ดีที่สุดที่นี่หรือTDHS
algortihm ตามพื้นฐานบางอย่างใช่คุณสามารถใช้ PSOLA เพื่อปรับมาตราส่วนเวลาและใช้การกะระยะพิทช์ร่วมกันเพียงแค่ปรับระดับเสียงหรือสเกลเวลา แต่ถ้าคุณเป็นเพียงการปรับเวลา WSOLA ก็เป็นหนึ่งในสมาร์ท ทางเลือกไม่จำเป็นต้องสร้างเครื่องตรวจจับ Ultra Pitch ใน WSOLA เพียงรูปคลื่นเดียวที่คล้ายกันจะช่วยแก้ปัญหาของคุณได้ (AutoCorrelation สามารถแก้ ... )
การแก้ไขรูปแบบ:
- PSOLA - โดยค่าเริ่มต้น formants จะไม่สามารถแตะต้องได้ แต่คุณสามารถแปรปรวน formants ได้เช่นกันมันยอดเยี่ยมมากใน PSOLA ...
- WSOLA - หลังจากเวลาสเกลและสุ่มตัวอย่าง formants ของคุณจะหายไปและเพื่อให้ได้ formants ดั้งเดิมคุณจะต้องรับ formants ในซองสเปกตรัมจากสัญญาณต้นฉบับและนำไปใช้ในสัญญาณ Pitch Shifted คุณสามารถทำได้โดยใช้ตัวกรองความถี่ต่ำใน สเปกตรัมใช้การเลือกจุดสูงสุดและสอดแทรกหรือใช้เซพสตรัมเพื่อรับซอง ...
ฉันรู้ว่า PSOLA มีความซับซ้อนมากขึ้นอย่างไม่มีที่สิ้นสุด แต่ฉันคิดว่าอัลกอริทึมนี้ยอดเยี่ยมจริงๆถ้าคุณมี PitchTrack ที่ดีมันจะทำให้คุณมีความเก่งกาจ
ฉันคิดว่าคุณถูกต้องที่ WSOLA ดีกว่าสำหรับโพลีโฟนิก แต่ยังมีข้อบกพร่องในวิธีนั้น สาเหตุที่ดีขึ้นเล็กน้อยเป็นเพราะอัลกอริธึมการตรวจจับพิทช์กำลังมองหาการเคลื่อนที่ของรอยต่อที่ดีเท่านั้น ถ้าเป็นอ็อกเทฟออฟก็จะไม่ทำให้คุณแย่ลงเพราะการประกบยังดีอยู่ อย่างไรก็ตามหากระดับเสียงเปลี่ยนคอร์ดที่ไม่ใช่ฮาร์มอนิก (พูดว่าคอร์ดลดลง) ก็จะไม่มีการเคลื่อนตัวของการประกบที่ดีดังนั้นคุณจะต้องเลือกคอร์ดที่ไม่ดีน้อยที่สุด
ตอนนี้PSOLA ต้องการการรู้ว่าข้อผิดพลาดของpitchและ octave จะดูเหมือนข้อผิดพลาดระดับแปด แต่นั่นเป็นวิธีการเปลี่ยนระดับเสียงที่คุณต้องการสำหรับเสียงร้องและกระดาษที่ฉันชี้ให้อธิบายว่าทำไม
แต่การสเกลเวลาไม่ใช่การขยับระดับเสียงอย่างแน่นอน เมื่อเวลาปรับขนาดอะไรก็ตามรวมถึงเสียงร้องอย่าใช้ PSOLA ใช้ WSOLA หรือวิธีโดเมนความถี่เช่น Phase vocoder