การกำหนดความดังของ AudioClip


10

ฉันมีรหัสบางอย่างที่ใช้GetSpectrumDataจากแหล่งเสียงที่เล่นเพลงเพื่อสร้างเลย์เอาต์ระดับสำหรับผู้เล่นที่จะเล่น ฉันต้องการเพิ่มฟังก์ชั่นที่ผู้เล่นสามารถอัปโหลดเพลงของตัวเองและเล่นระดับที่สร้างขึ้นด้วยข้อมูลจากเพลงเหล่านี้ น่าเสียดายที่เมื่อเปรียบเทียบไฟล์เสียงต่าง ๆ ฉันพบสิ่งนี้:

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

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

คำตอบ:


9

วิธีทำด้วยตนเองคือใช้AudioClip.GetDataเพื่อรับข้อมูลตัวอย่างในอาเรย์ จากนั้นวนรอบข้อมูลและหารูทค่าเฉลี่ยของสแควร์เพื่อค้นหา "ความดัง" ของคลิปเสียง

นอกจากนี้คุณยังสามารถแล้วขนาดอาร์เรย์ทั้งเพื่อให้ค่าสูงสุดคือ 1.0f และเขียนมันกลับไป audioclip กับAudioClip.SetData สิ่งนี้เรียกว่าnormalizing audioและทำให้กลุ่มตัวอย่างมีจุดที่ดังที่สุดไปจนถึงระดับเสียงสูงสุด โปรดทราบว่าสิ่งนี้ไม่ได้คำนึงถึงว่าหากคลิปเสียงของคุณมีระดับเสียงต่ำมาก แต่มียอดเขาสูงมาก มีเทคนิคขั้นสูงเพิ่มเติมสำหรับสิ่งนั้น (ระบุไว้ด้านล่าง)

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


คำตอบที่ยอดเยี่ยมจะดูรายละเอียดทั้งหมดนี้ ขอบคุณ!
สวน

5
ค่าสูงสุดนั้นไม่ใช่ตัวเลือกที่ดีที่สุดเสมอไป (ตามที่คุณพูด) เดือยแหลมสั้นมาก ๆ (เสียงเหมือนการคลิก) ดูเหมือนจะไม่ดังเท่าเสียงต่อเนื่อง หากคุณต้องการความดังที่รับรู้คุณต้องยกกำลังสองค่าทั้งหมดโดยเฉลี่ยแล้วนำสแควร์รูท การทำเช่นนี้เป็นสิ่งที่ทำให้เป็นมาตรฐานได้ดังนั้นหวังว่าจะมีความเป็นเอกภาพในตัว
Jezzamon

2
เสียงดังเกี่ยวข้องกับพลังงานเสียงและวิธีการพิจารณาสิ่งนี้คือ @Jezzamon คำใบ้ที่โดยการคำนวณค่า root-Mean-square (RMS) dsp.stackexchange.com/questions/2951/loudness-of-pcm-stream
Zac Crites
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.