निम्न स्तर का ऑडियो इंजन ऑडियो डेटा रिफॉर्मेटिंग - नमूना दर और बिट गहराई रूपांतरण

Aug 17 2020

सबसे पहले, वहाँ कम स्तर ऑडियो प्रोग्रामिंग ट्यूटोरियल की एक विरल संख्या वहाँ से बाहर लगता है तो अगर किसी को कुछ अच्छे संसाधनों के बारे में पता है कि मैं बहुत सराहना की जाएगी। अब हाथ में विषय पर!

मैं ऑडियो इंजन के लिए WASAPI का उपयोग कर रहा हूं जिसे मैं विकसित करने की कोशिश कर रहा हूं और मुझे ऑडियो फ़ाइल डेटा को एक प्रारूप में पढ़ने में कठिनाई हो रही है जिसे ऑडियो डिवाइस प्राप्त करने के लिए तैयार है। विशेष रूप से मैं सोच रहा हूं कि कैसे मक्खी पर डिवाइस के अनुरोधित प्रारूप में एक पढ़ी गई ऑडियो फ़ाइल की नमूना दर और बिट गहराई को परिवर्तित किया जाए। मैंने एक उदाहरण देखा, जहां रैखिक प्रक्षेप का उपयोग किया गया था, लेकिन कहीं और पढ़ा कि इस तरह के फ़िल्टर से एलियासिंग जैसी कई कलाकृतियों का परिचय होता है, इसलिए फिर से मैं सोच रहा हूं कि वास्तविक समय में ऑडियो डेटा के सुधार के लिए व्यावहारिक एल्गोरिदम क्या होगा।

जवाब

1 hotpaw2 Aug 17 2020 at 15:44

Sinc प्रक्षेप डेटा के लिए कोई अलियासिंग कलाकृतियों का परिचय नहीं देता है जो कि नमूना लेने से पहले मूल रूप से ठीक से बंद किए गए थे। (लेकिन Sinc या Dirichlet कर्नेल की अनंत अवधि होने के कारण इसे थोड़ा संशोधित करने की आवश्यकता है।)

पुनर्निर्माण कार्य क्यों और कैसे प्रक्षेपित करना है, इस पर एक विहित संदर्भ: https://ccrma.stanford.edu/~jos/resample/

मैं यहाँ बेसिक में एक सरल कार्यान्वयन है: http://www.nicholson.com/rhn/dsp.html#3

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

आपको अपने मात्राकरण शोर को नीचे रखने के लिए अंकगणित मध्यवर्ती मूल्यों के पर्याप्त बिट्स को ले जाने की आवश्यकता है जो भी आपकी कल्पना हो सकती है।