यह निर्धारित करना कि एक ऑडियोक्लिप कितनी जोर से है


10

मेरे पास कुछ कोड है जो GetSpectrumDataएक ऑडियोस्रोस से एक गाना बजाने के लिए उपयोग करता है ताकि खिलाड़ी को खेलने के लिए एक लेवल लेआउट बनाया जा सके। मैं एक कार्यक्षमता जोड़ना चाहता हूं जहां खिलाड़ी अपने गाने अपलोड कर सकते हैं और इन गीतों के डेटा के साथ बनाए गए स्तरों को खेल सकते हैं। दुर्भाग्य से, विभिन्न ऑडियो फाइलों की तुलना करते समय, मुझे इसका सामना करना पड़ा:

यहाँ छवि विवरण दर्ज करें

जैसा कि आप देख सकते हैं, आयाम क्लिप से क्लिप में काफी भिन्न होता है, बाद में ऐसे स्तर बना रहा है जो पूर्ण या लगभग असंभव हैं। मैं इस "लाउडनेस" को निर्धारित करने का एक तरीका खोजना चाहता हूं, ताकि मैं इसे गाने से डेटा प्राप्त करने के बाद इसे कई गुना बढ़ा सकूं या इसे गुणा कर सकूं। इसके अलावा, क्या बिना गाना बजाए इस डेटा को निकालने का कोई तरीका है?

जवाबों:


9

ऐसा करने के लिए एक मैन्युअल तरीका ऑडियोक्लिप.गेटडाटा का उपयोग करके एक सरणी में नमूना डेटा प्राप्त करना है। फिर डेटा के माध्यम से लूप करें और ऑडियो क्लिप के "लाउडनेस" को खोजने के लिए रूट मीन स्क्वायर का पता लगाएं।

फिर आप पूरे ऐरे को भी स्केल कर सकते हैं ताकि अधिकतम मूल्य 1.0f हो और उसे ऑडियोक्लिप.पेटडेटा के साथ वापस आडियोक्लिप में लिखें । इसे ऑडियो को सामान्य करना कहा जाता है , और यह नमूने को अधिकतम मात्रा में सबसे ऊंचा बिंदु बनाता है। ध्यान दें कि यह ध्यान में नहीं रखता है कि यदि आपकी ऑडियो क्लिप बहुत कम मात्रा में हैं, लेकिन बहुत ऊंची चोटियां हैं। उसके लिए और अधिक उन्नत तकनीकें हैं (नीचे उल्लेखित हैं)।

एकता भी डिफ़ॉल्ट रूप से सामान्यीकरण कर रही है। इसलिए यदि आपने आयात सेटिंग्स को नहीं छुआ है, तो यह ऑपरेशन स्वचालित रूप से किया जाता है और आपको इसके बारे में चिंता करने की आवश्यकता नहीं है। यदि आपके पास अभी भी समस्या है, भले ही आप सुनिश्चित हों कि ऑडियो सामान्यीकृत है, तो आपको संभवतः डायनेमिक रेंज कम्प्रेशन के साथ ऑडियो को संपीड़ित करने की आवश्यकता है (ध्यान दें: डेटा संपीड़न से बहुत अलग चीज, फ़ाइल आकार या मेमोरी उपयोग से कोई लेना-देना नहीं है) बाहरी सॉफ़्टवेयर के साथ अपनी आवश्यकताओं को फिट करें।


बहुत बढ़िया जवाब, अधिक विस्तार के साथ इस सब पर गौर करेंगे। धन्यवाद!
माली

5
अधिकतम मूल्य हमेशा सबसे अच्छा विकल्प नहीं होता है (जैसा कि आपने कहा)। बहुत कम जोर से चलने वाले स्पाइक्स (ये ध्वनि जैसे क्लिक) एक निरंतर ध्वनि के रूप में जोर से नहीं लगते हैं। यदि आप कथित जोर चाहते हैं, तो आपको सभी मानों को औसत करने की आवश्यकता है, औसत, और उसके बाद वर्गमूल लें। इसे इस तरह से करना सामान्यीकरण करता है, इसलिए उम्मीद है कि इसके लिए एक एकता बनाई गई है।
जेजामोन

2
लाउडनेस ध्वनि ऊर्जा से संबंधित है, और यह निर्धारित करने का तरीका है, जैसा कि @Jezzamon संकेत देता है, रूट-मीन-स्क्वायर (RMS) की गणना करके। dsp.stackexchange.com/questions/2951/loudness-of-pcm-stream
Zac
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.