एफएफटी में कम आवृत्तियों को मजबूत?


15

मैं माइक्रोफोन इनपुट से एफएफटी की गणना कर रहा हूं। मुझे लगता है कि कम आवृत्तियों को हमेशा लगता है कि उच्च आवृत्तियों की तुलना में अधिक शक्ति (उच्च डीबी) है।

  1. मैंने डेटा को 24576 बाइट्स (4096 * 6) के फ्रेम में काटा।
  2. हैमिंग विंडो लागू करें: input[i] *= (0.54d - 0.46d*(double) Math.Cos((2d*Math.PI*i)/fs));
  3. इसे FFTW के माध्यम से चलाएं Process1D()
  4. जटिल संख्याओं से परिवर्तित करें: output[i] = 10.0 * Math.Log10((fout[i * 2] * fout[i * 2]) + (fout[i * 2 + 1] * fout[i * 2 + 1]));
  5. 4096 बाइट्स का पूरा एफएफटी प्राप्त करने के लिए 6 मानों का औसत।
  6. सुंदर चित्र पेंट करें (पैलेट पर मैप किए गए रंग)।

औसत (पीटी। 5) एफएफटी शोर को कम करने के लिए किया जाता है।

जैसा कि छवि ध्वनि के साथ और माइक के साथ दिखाती है कि कम आवृत्तियों में अधिक ऊर्जा (और अधिक शोर) है। यह सिर्फ एक mic / उप समस्या से अधिक इंगित करता है।

मेरे प्रश्न:
1. क्या यह अपेक्षित है? क्यों?
2. इसे ठीक करने का कोई मानक तरीका? लगभग कुछ Math.Tan () जादू की तरह लग रहा है जहां यह है इसे उठा सकता है।

मेरा लक्ष्य डिफ़ॉल्ट रूप से जीतने वाली कम आवृत्तियों के बिना शीर्ष 5 आवृत्तियों की पहचान करने में सक्षम होना है।

FFT


कृपया सही हैमिंग विंडो को पहले देखने की कोशिश करें कि क्या टूटी हुई खिड़की का टुकड़ा इस कम आवृत्ति के शोर का कारण है।
हॉटपावर 2

@ टेड हेन्सन, आपने "कम आवृत्तियों के बिना शीर्ष 5 आवृत्तियों की पहचान" कैसे समाप्त की - भारित 1/3 ऑक्टेव बैंड से शीर्ष 5 ??
डेनिस

जवाबों:


12

हां, यह बहुत अपेक्षित है। आप जो देख रहे हैं वह " पिंक " स्पेक्ट्रम है, अर्थात प्रति सापेक्ष बैंडविड्थ में निरंतर ऊर्जा, " श्वेत " की तुलना में, जो पूर्ण बैंडविड्थ में निरंतर ऊर्जा है। गुलाबी संकेतों के लिए 1-2kHz के बीच ऊर्जा 2-4kHz से समान है (प्रत्येक बैंडविड्थ के एक दोहरीकरण या "ऑक्टेव" का प्रतिनिधित्व करता है।

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

मानव श्रवण प्रणाली उस तरह से भी काम करती है। आंतरिक कान में ऑडियो सिग्नल निरंतर सापेक्ष बैंडविड्थ (जिसे "क्रिटिकल बैंड्स" कहा जाता है) के बैंड में टूट जाते हैं जो लगभग तीसरे ऑक्टेव स्पेक्ट्रम के समान होते हैं।

ऑडियो स्पेक्ट्रम डेटा को देखने का सबसे अच्छा तरीका यह है कि इसे लॉगरिदमिक फ़्रीक्वेंसी स्केल पर प्लॉट किया जाए।


बयान है कि "प्राकृतिक ऑडियो संकेतों में एक गुलाबी जैसा स्पेक्ट्रम होता है", समय के पैमाने पर विचार करता है। एक लंबे समय में (~ 10 सेकंड के सेकंड) मैं सहमत हूं, और निश्चित रूप से कई मिनटों में यह कथन सच हो जाता है। लेकिन यहाँ के स्पेक्ट्रा की गणना 0.55 सेकंड से अधिक की जाती है। यदि इनपुट उदाहरण के लिए, संगीत है, तो मैं एक बहुत अधिक संरचना की अपेक्षा करता हूं।
mtrw

2
"टनसिटी" स्पेक्ट्रम की ठीक संरचना को अधिक प्रभावित करता है। समग्र आकार (ऊर्जा के संदर्भ में प्रति सप्तक) अभी भी संगीत के लिए ज्यादातर गुलाबी होगा जब तक कि यह "त्रिकोण और दुर्घटना झांझ के लिए एकल" जैसा कुछ नहीं है
हिल्मार नोव

1
@mtrw: एक वर्ग तरंग निश्चित रूप से एक स्वर है, लेकिन उच्च आवृत्ति वाले हार्मोनिक्स अभी भी 1 / f की दर से गिरते हैं।
एंडोलिथ

8

चरण 2 में, सूत्र होना चाहिए input[i] *= (0.54d - 0.46d*(double) Math.Cos((2d*Math.PI*i)/N));, Nआपके मामले में बफर में नमूनों की संख्या कहां है 24576

चरण 4 और 5 में, मैं स्क्वायर्ड परिमाण मूल्यों पर बिन-वार औसत करूंगा, डीबी मानों पर नहीं। कहें कि आपके पास चुकता परिमाण है [4,6]। उनकी औसत है 5, 10*log10(5) ~= 6.99। का औसत 10*log10(4)और 10*log10(6)है 6.90

पहली समस्या कम आवृत्तियों के प्रति पूर्वाग्रह का कारण हो सकती है, क्योंकि यह वर्णक्रमीय रिसाव का कारण होगा, और कम आवृत्तियों को डीसी लाइन (जो अनिवार्य रूप से एक खराब अनुमान है) से अधिक संदूषण मिलेगा। दूसरी समस्या शायद कम आवृत्तियों पर फर्क नहीं करने वाली है, लेकिन मुझे लगता है कि आपके माप के इरादे के करीब हो जाता है।


fout[i * 2] * fout[i * 2]) + (fout[i * 2 + 1] * fout[i * 2 + 1]4610लॉग10(5)(10लॉग10(4)+10लॉग10(6))/2

ऊपर आपके स्पष्टीकरण में, मेरा मानना ​​है कि आप 4096 की विंडो चौड़ाई (एन) चाहते हैं, क्योंकि यह एफएफटी की चौड़ाई लागू है। इस खिड़की को प्रत्येक एफटी से पहले रूपांतरित होने वाले 4096 नमूनों पर लागू करना होगा।
जैकब

@ जैकोब - ओपी 6 * 4096 अंक के एफएफटी की गणना कर रहा है, फिर 6 निकटवर्ती डिब्बे को औसतन 4096 अंक तक कम करने के लिए।
21:39 पर mtrw

5

1 / f शोर कई शारीरिक, जैविक और आर्थिक प्रणालियों में होता है। कुछ शोधकर्ताओं ने इसे सर्वव्यापी होने के रूप में वर्णित किया है।

गुलाबी और सफेद शोर

एक एफएफटी स्पेक्ट्रोग्राम पर पिंक शोर (बाएं) और सफेद शोर (दाएं) रैखिक आवृत्ति ऊर्ध्वाधर अक्ष के साथ (एक विशिष्ट ऑडियो या इसी तरह के स्पेक्ट्रम विश्लेषक पर गुलाबी शोर सपाट होगा, नीचे की ओर ढलान नहीं, और सफेद शोर बढ़ रहा है)


6
बाईं ओर का शोर निश्चित रूप से गुलाबी है, लेकिन दाईं ओर एक नारंगी सा दिखता है :-)

हालांकि यह सच है कि 1 / f शोर सर्वव्यापी है, ऑडियो के लिए एक अच्छी तरह से डिज़ाइन किया गया एनालॉग फ्रंट एंड में आम तौर पर 1 / f शोर के निम्न स्तर होते हैं, 10 हर्ट्ज कहते हैं। ब्याज के बैंड में सफेद शोर हावी है।

4

क्या यह अपेक्षित है? क्यों?

बहुत सारी प्राकृतिक ध्वनियों में हार्मोनिक्स है , इसलिए मौलिक मूलभूत आवृत्तियों में कम और फिर उच्चतर गुणकों में कम ऊर्जा होगी। एक डीसी पूर्वाग्रह हो सकता है जिसका अर्थ बहुत बाईं ओर बहुत अधिक ऊर्जा होगा। एक और प्रभाव आपके विंडोिंग फ़ंक्शन का है जो आवृत्ति प्रतिक्रिया को विकृत करता है।

इसे ठीक करने का कोई मानक तरीका? लगभग कुछ Math.Tan () जादू की तरह लग रहा है जहां यह है इसे उठा सकता है।

आप हाई-पास फिल्टर का उपयोग करके डीसी पूर्वाग्रह से निपट सकते हैं। एक सरल कार्यान्वयन हर नमूने (EDIT: या यहां तक ​​कि सरल से लंबी अवधि के औसत को कम करने के लिए है, कम आवृत्तियों को त्यागें, उदाहरण के लिए <50Hz अपने एफएफटी परिणाम से)। आप विभिन्न विंडो फ़ंक्शंस के साथ भी प्रयोग कर सकते हैं। सुनिश्चित करें कि (@mtrw बताते हैं) कि आप विंडो को ठीक से लागू कर रहे हैं। प्रतिक्रिया में किसी भी अन्य गैर-रैखिकता को कुछ आदर्श इनपुट को मापने और उस वक्र को सामान्य करने से ठीक किया जा सकता है।


विंडोिंग फ़ंक्शन को आवृत्ति प्रतिक्रिया को प्रभावित नहीं करना चाहिए, इसे करना चाहिए?
एंडोलिथ

@endolith: यह करता है- आप अपने डेटा को विंडोिंग फ़ंक्शन द्वारा गुणा करते हैं और संयुक्त फ़ंक्शन की एक अलग प्रतिक्रिया होती है। जुड़े विकिपीडिया लेख को पढ़ें जो इस पर अधिक गहराई से चर्चा करता है। वास्तविक दुनिया के नमूनों से निपटने की वास्तविकता यह है कि आमतौर पर कुछ खिड़की (जैसे एक आयत) होती है और आप केवल (अनंत) स्रोत संकेत की आवृत्ति प्रतिक्रिया का अनुमान लगा सकते हैं।
गाय सिरटन

शायद हम "आवृत्ति प्रतिक्रिया" के बारे में अलग तरह से सोच रहे हैं। यदि कोई सिग्नल स्थिर है, और आप उस पर विंडो फ़ंक्शन लागू करते हैं, तो स्पेक्ट्रम में समान आवृत्तियों पर समान आयाम होना चाहिए, चाहे आप किसी भी विंडो फ़ंक्शन का उपयोग करें, केवल एक स्केल फैक्टर द्वारा भिन्न होना जो सभी आवृत्तियों को समान रूप से प्रभावित करता है। प्रत्येक आवृत्ति स्पाइक की चौड़ाई अलग-अलग होगी, लेकिन स्पाइक्स की ऊंचाई एक-दूसरे के सापेक्ष समान होगी। विंडोिंग फ़ंक्शन एक फिल्टर की तरह काम नहीं करता है जो दूसरों की तुलना में कुछ फ्रीक्वेंसी को बढ़ाता है।
एंडोलिथ

@endolith: अनंत साइन वेव की कल्पना करें, जो अब cos ^ 2 विंडो से गुणा करता है। आपके पास अभी भी मूल आवृत्ति पर एक घटक होगा लेकिन इसका आयाम "बंद" होगा और आपके पास खिड़की से आने वाले नए आवृत्ति घटक होंगे। पहला पैराग्राफ यहां देखें: en.wikipedia.org/wiki/Spectral_leakage
Guy Sirton

हां, लेकिन "बंद" आयाम वही होगा जो अनंत साइन लहर की आवृत्ति, नहीं?
21:39 पर एंडोलिथ
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.