2017-11-01 29 views
5

पहली बार पोस्टिंग, महान समुदाय के लिए धन्यवाद!डीबी में ऑडियोकिट एफएफटी रूपांतरण?

मैं AudioKit का उपयोग कर रहा हूं और माइक्रोफ़ोन इनपुट में आवृत्ति भारोत्तोलन फ़िल्टर जोड़ने की कोशिश कर रहा हूं और इसलिए मैं ऑडियोकिट AKFFTTap से बाहर आने वाले मानों को समझने की कोशिश कर रहा हूं।

वर्तमान में मैं सिर्फ FFT बफर डीबी में परिवर्तित कर मुद्रित करने के लिए कोशिश कर रहा हूँ महत्व देता

for i in 0..<self.bufferSize { 
    let db = 20 * log10((self.fft?.fftData[Int(i)])!) 
    print(db) 
} 

के बारे में मैं -128 0 की रेंज में लेकर मूल्यों उम्मीद कर रहा था, लेकिन मैं लगभग की अजीब मूल्यों हो रही है -200dB और जब मैं रीडिंग को बाहर निकालने के लिए माइक्रोफ़ोन पर उड़ता हूं तो यह केवल -60 तक पहुंचता है। क्या मैं इसे सही तरीके से नहीं देख रहा हूं? मैं मान रहा था कि EZAudioFFT इंजन से आउटपुट होने वाले मान सादे आयाम मान होंगे और सामान्य डीबी रूपांतरण गणित काम करेगा। क्या किसी के भी पास कोई सुझाव है?

इस मुद्दे के बारे में किसी भी चर्चा के लिए अग्रिम धन्यवाद!

उत्तर

2

आप (जोड़ने से पहले सकारात्मक को नकारात्मक मूल्यों को बदलने पर विचार) self.fft?.fftData से सभी मान जोड़ने और फिर बदल कि

+0

मैंने 'self.fft? .fftData' में पूर्ण मानों को एकत्रित करने के आपके विचार की कोशिश की है और मुझे निश्चित रूप से एक और उचित परिणाम मिलता है, हालांकि, परिणाम अभी भी बहुत संवेदनशील हैं। इसका परीक्षण करने के लिए मैं अपने डेस्क पर एक समर्पित एसपीएल मीटर से मेल खाने के लिए रीडिंग प्राप्त करने के लिए ऑफसेट मान जोड़ रहा हूं। और अगर मैं बात करता हूं, सीटी, झटका, या गुलाबी शोर उत्पन्न करता हूं और परिणामों की तुलना करता हूं, तो मेरा ऐप 40 डीबी + कूदता है जबकि एसपीएल मीटर केवल 7-10 डीबी तक बढ़ता है। मैंने कुछ आईओएस ऐप्स की तुलना डीबी रीडिंग देखने के लिए की है और ऐसा लगता है कि एसपीएल मीटर के साथ समान परिणाम हैं। कोई विचार क्यों यह इतना संवेदनशील होगा? –

+0

एक गणना के लिए आप कितने नमूने उपयोग कर रहे हैं? पूर्ण बफर? मैं मानक टैप का उपयोग कर रहा था, मुझे AKFFTTap के साथ कोई अनुभव नहीं है, इसलिए शायद मुझे कुछ याद आ रहा है –

3

सरणी में मानों FFT में डिब्बे के मूल्यों के अनुरूप डेसीबल तक की जरूरत है। एक बिन होने के बाद 1 के करीब एक परिमाण मान होता है जिसका अर्थ यह होगा कि उस संकीर्ण आवृत्ति बैंड में बड़ी मात्रा में ऊर्जा होती है। एक बहुत जोरदार साइनसॉइड (एक आवृत्ति के साथ एक संकेत)।

सामान्य ध्वनियां, जैसे कि आप mic पर उड़ने के कारण, पूरे स्पेक्ट्रम में अपनी ऊर्जा फैलते हैं, यानी, केवल एक के बजाय कई डिब्बे में। इस कारण से, एफएफटी आकार बढ़ने के साथ आम तौर पर परिमाण कम हो जाते हैं।

एक बिन पर -40 डीबी का आवृत्ति काफी जोरदार है। यदि आप एक स्वर खेलने की कोशिश करते हैं, तो आपको डिब्बे में से एक में एक स्पष्ट चोटी देखना चाहिए।

+0

ऑडियोकिट में, बिन मान 0-1 के पैमाने पर नहीं हैं, वे परिमाण हैं जिनमें शून्य से 700-1000 के मान हो सकते हैं । अगर मैं इसे 0-1 के पैमाने पर प्राप्त कर सकता हूं जो बहुत मदद करेगा, लेकिन मुझे नहीं लगता कि संदर्भ के लिए स्पष्ट अधिकतम मूल्य के बिना इसे कैसे किया जाए। मैं उस संदर्भ को कोशिश करने और प्राप्त करने के लिए माइक पर उड़ रहा था, लेकिन एफएफटी द्वारा उत्पादित परिमाणों का लगातार ऊपरी अंत कभी नहीं था। –

+0

आपका प्रश्न इंप्रेशन देता है कि मान 0.1 के दायरे में हैं, केवल अपेक्षा के मुकाबले 0 के करीब हैं। –

संबंधित मुद्दे