การจัดรูปแบบข้อมูลเสียงของเครื่องเสียงระดับต่ำ - อัตราตัวอย่างและการแปลงความลึกบิต
ก่อนอื่นดูเหมือนว่าจะมีแบบฝึกหัดการเขียนโปรแกรมเสียงระดับต่ำอยู่จำนวนหนึ่งดังนั้นหากใครรู้แหล่งข้อมูลที่ดีฉันจะขอบคุณมาก ตอนนี้ไปที่หัวข้อในมือ!
ฉันใช้ WASAPI สำหรับเอ็นจิ้นเสียงที่ฉันพยายามพัฒนาและฉันมีปัญหาในการฟอร์แมตข้อมูลไฟล์เสียงที่อ่านแล้วให้อยู่ในรูปแบบที่อุปกรณ์เสียงเตรียมรับ โดยเฉพาะฉันสงสัยว่าจะแปลงอัตราการสุ่มตัวอย่างและความลึกบิตของไฟล์เสียงที่อ่านเป็นรูปแบบที่ร้องขอของอุปกรณ์ได้อย่างไร ฉันเห็นตัวอย่างที่ใช้การแก้ไขเชิงเส้น แต่อ่านจากที่อื่นว่าตัวกรองดังกล่าวแนะนำสิ่งประดิษฐ์มากเกินไปเช่นนามแฝงดังนั้นอีกครั้งฉันสงสัยว่าอัลกอริทึมที่ใช้งานได้จริงคืออะไรในการฟอร์แมตข้อมูลเสียงในแอปพลิเคชันแบบเรียลไทม์
คำตอบ
การแก้ไขด้วย Sinc ไม่แนะนำสิ่งประดิษฐ์นามแฝงให้กับข้อมูลที่เดิมถูก จำกัด แบนด์อย่างเหมาะสมก่อนการสุ่มตัวอย่าง (แต่ต้องมีการแก้ไขเล็กน้อยเนื่องจากเคอร์เนล Sinc หรือ Dirichlet มีระยะเวลาไม่สิ้นสุด)
ข้อมูลอ้างอิงที่เป็นที่ยอมรับว่าเหตุใดจึงมีการสร้างใหม่และวิธีการแก้ไขอยู่ที่นี่: https://ccrma.stanford.edu/~jos/resample/
ฉันมีการใช้งานพื้นฐานอย่างง่ายที่นี่: http://www.nicholson.com/rhn/dsp.html#3
วิธีการทั่วไปอื่น ๆ คือการสุ่มตัวอย่างอัตราส่วนจำนวนเต็มกรองแบบ low-pass ตามด้วยการลดการสุ่มตัวอย่างอัตราส่วนจำนวนเต็มแบบ low-pass ด้วยอัตราส่วนสองอัตราส่วนที่เหมาะสม วิธีการทั่วไปอีกวิธีหนึ่งคือการสร้างธนาคารตัวกรองโพลีเฟส FIR (ของหลายขั้นตอนของเมล็ดการแก้ไข Sinc ที่มีหน้าต่าง (หรือตัวกรอง FIR ที่ได้รับการปรับให้เหมาะสมที่สุด) วิธีการทั่วไปอีกวิธีหนึ่งคือการใช้ตัวกรองโพลีโนเมียลของ humps ของเคอร์เนลของ Sinc ซึ่งส่งผลให้ธนาคารกรอง Farrow .
คุณต้องพกพาบิตของค่ากลางเลขคณิตให้เพียงพอเพื่อที่จะรักษาระดับเสียงเชิงปริมาณของคุณให้ต่ำกว่าที่คุณต้องการ