2010-10-07 14 views
31

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

+0

मेरे पास एक डेल स्ट्रीक है और एंड्रॉइड टूल्स इंस्टॉल हैं। अगर आपको बीटा टेस्टर को किसी भी चीज़ के लिए चाहिए तो मुझे मारो :-) – CiscoIPPhone

उत्तर

15

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

व्हाइट शोर लाइन के अप्रत्याशित झटकों है, जो कभी-कम काफी तीव्रता में निरंतर है (आरएमएस, पूर्ण मतलब ..) ध्वनिक सामग्री आवर्तक wiggling और सामयिक आश्चर्य (कूदता है, आती है) है:]

पीसीएम स्ट्रीम की चलती खिड़की पर त्वरित गणना करके एक सिग्नल की सामग्री की तरह गैर शोर का अनुमान लगाया जा सकता है।

उदाहरण के लिए, शोर को गैर-शोर की तुलना में इसके व्युत्पन्न के पूर्ण अभिन्न अंग के लिए उच्च मूल्य होना चाहिए। मुझे लगता है कि यह कह के शैक्षणिक तरीका है:

loop(n+1 to n.length) 
{ sumd0+= abs(pcm[n]); 
    sumd1+= abs(pcm[n]-pcm[n-1]); 
} 

wNoiseRatio = ?0.8; //quite easily discovered, bit tricky to calculate. 

if((sumd1/sumd0)<wNoiseRatio) 
{ /*not like noise*/ } 

इसके अलावा, से अधिक ~ सफेद शोर के 16 ~ 30 नमूने कम भिन्नता है जाएगा चल पूर्ण औसत, ध्वनिक संकेत से सफेद शोर से अधिक:

loop(n+24 to n.length-16) 
{ runAbsAve1 += abs(pcm[n]) - abs(pcm[n-24]); } 

loop(n+24+16 to n.length) 
{ runAbsAve2 += abs(pcm[n]) - abs(pcm[n-24]); } 

unusualDif= 5; //a factor. tighter values for longer measures. 

if(abs(runAbsAve1-runAbsAve2)>(runAbsAve1+runAbsAve2)/(2*unusualDif)) 
{ /*not like noise*/ } 

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

इसके अलावा, रूट माध्य वर्ग को औसत पूर्ण योग से विभाजित किया जा सकता है जो एक और अनुपात प्रदान करता है जो सफेद शोर के लिए विशेष होना चाहिए, हालांकि मैं यह नहीं समझ सकता कि यह अभी क्या है। सिग्नल डेरिवेटिव्स के अनुपात भी अनुपात अलग-अलग होंगे।

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

+0

+1 मुझे लगता है कि यह सबसे आसान और सबसे अधिक प्रदर्शन समाधान है। व्युत्पन्न करके, यह वास्तव में शोर की यादृच्छिक प्रकृति का पता लगाएगा। और यह छोटे नमूना समय के साथ भी काम करता है, जिसका अर्थ है तेज़ स्कैनिंग। –

+0

यह एक अच्छा मुद्दा होना चाहिए क्योंकि मेरी व्याख्या/इतनी गन्दा है। मैंने इसे थोड़ा तय करने की कोशिश की है। – strainer

+0

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

3

सफेद शोर पहचान के लिए आपको एफएफटी करना होगा और देखें कि इसमें कम या ज्यादा स्थिर स्पेक्ट्रम है। लेकिन एफएम से रिकॉर्डिंग एक समस्या हो सकती है।

14

फास्ट फूरियर ट्रांसफॉर्म का उपयोग करें।

यही वह है जिसे आप फास्ट फूरियर ट्रांसफॉर्म का उपयोग कर सकते हैं। यह सिग्नल का विश्लेषण करता है और विभिन्न आवृत्तियों पर सिग्नल की ताकत को निर्धारित करता है। यदि एफएफटी वक्र में कोई स्पाइक है, तो यह संकेत देना चाहिए कि सिग्नल केवल सफेद शोर नहीं है।

Here एक पुस्तकालय है जो एफएफटी का समर्थन करता है। इसके अलावा, here एक कोड है जिसमें स्रोत कोड है यदि आप एफएफटी के बारे में जानना चाहते हैं।

+0

उपयोग करने योग्य एफएफटी लागू करने में सक्षम होने से पहले आपको कितने मिलीसेकंड एकत्र करने की आवश्यकता है? –

+0

आप यहां ईएम सिग्नल के बारे में बात कर रहे हैं। एफएफटी मदद कर सकता है लेकिन पीएलएल बेहतर होगा। दुर्भाग्यवश आपके पास यह सिग्नल नहीं है ... – BenoitParis

+0

लगभग 32 नमूनों पर कोई भी एफएफटी विंडो आकार शोर के परीक्षण के लिए पूरी तरह से उपयोग करने योग्य मूल्य प्रदान करेगा (सफेद उदाहरण शोर एंट्रॉपी के लिए ध्वनिक विवरण की तुलना में पर्याप्त औसत के लिए पर्याप्त है)। मैं पूरी सिग्नल के लगभग 1/10 वें और खिड़की को 200 नमूनों के नीचे रखने के लिए थोड़ी देर के लिए ffting की सिफारिश करेंगे, यह अपशिष्ट प्रसंस्करण मांगों से परहेज करता है और आकस्मिक रूप से स्थानीय/पर्क्यूसिव प्रकार की आवाजों को अत्यधिक लंबे माप में धो नहीं देता है। – strainer

7

आप FFT उपकरण उपलब्ध है, बस एक जंगली सुझाव नहीं है, तो:
कोशिश ऑडियो के कुछ ही मिलीसेकेंड को संपीड़ित

शोर की एक विशिष्ट विशेषता यह है कि यह स्पष्ट सिग्नल से बहुत कम संपीड़ित करता है।

+1

यह करने का एक दिलचस्प तरीका है लेकिन मुझे संदेह है ... क्या यह उस चैनल को पहचानने में सक्षम होगा जिसमें कम मात्रा में शोर था? इसके अलावा यह संपीड़न एल्गोरिदम पर बहुत निर्भर होगा - एक अच्छा एल्गोरिदम क्या होगा? – CiscoIPPhone

+0

यह वास्तव में एक जंगली सुझाव है। क्या आप लापरवाही संपीड़न (ज़िप) या एमपी 3 या ओग जैसे ऑडियो संपीड़न के बारे में सोचते हैं? –

+0

वास्तव में बहुत जंगली! मैं ज़िप की तरह कुछ सोच रहा था, लेकिन अब आप यह कहते हैं, एमपी 3/ओग वास्तव में एक एफएफटी करने के करीब, एक बहुत ही रोचक विचार है। –

1

क्या आपके पास आईईईई एक्सप्लोर लाइब्रेरी की सदस्यता है? इस विषय पर अनगिनत कागजात (one यादृच्छिक रूप से चुने गए हैं) हैं।

बिजली spectral density की "समतलता" का निरीक्षण करने के लिए एक बहुत ही सरल विधि होगी। कोई समय डोमेन में सिग्नल के Fast Fourier Transform का उपयोग करके इसे ले सकता है और स्पेक्ट्रल घनत्व के standard deviation को ढूंढ सकता है। यदि यह कुछ सीमा से नीचे है, तो आपका सफेद शोर है।

0

यहां मुख्य प्रश्न यह है कि: किस प्रकार के सिग्नल तक पहुंच है?

मुझे यकीन है कि आपके पास सीधे एनालॉग ईएम सिग्नल तक सीधे पहुंच नहीं है। तो इस सिग्नल पर एफएफटी का कोई उपयोग संभव नहीं है। आप phased-lock loop बनाने का भी प्रयास नहीं कर सकते हैं, जिस तरह से आपका मानक पुराना रेडियो ट्यूनर काम करता है (आपके मामले में "स्कैनिंग")।

आपका एकमात्र विकल्प वास्तव में एक आवृत्ति चुनना है और इसे भी सुनना है (और ध्वनि पर एफएफटी के साथ शोर होने पर पता लगाने का प्रयास करें)। आपको केवल एफएफटी सिग्नल तक पहुंच हो सकती है।

समस्या यहां: यदि आप सफेद शोर का उपयोग करके संभावित आवृत्ति का पता लगाना चाहते हैं तो आप सिग्नल को आसानी से उठाएंगे।

डबल एकीकृत spectral density की autocorrelation ऑडियो के एक दूसरे के एक अंश से अधिक:


वैसे भी, यहाँ मैं इस रणनीति के साथ क्या करने की कोशिश करेंगे क्या है। और यह प्रत्येक आवृत्ति के लिए।

फिर एफएम आवृत्ति की तलाश करें जहां यह संख्या अधिकतम है।

लिटिल यहाँ स्पष्टीकरण:

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

इंटीग्रल को सामान्य करने के लिए भी सावधान रहें: एक हल्के सफेद शोर सिग्नल को स्पष्ट लेकिन कम ऑडियो सिग्नल की तुलना में उच्च स्कोर नहीं मिलना चाहिए।

+0

संपीड़न भी मदद कर सकता है (शायद गहन ressource?) – BenoitParis

5

जहां तक ​​मुझे पता है कि Android SDK में एफएम रेडियो के लिए कोई एपीआई या ड्राइवर नहीं है और जब तक डेल रिलीज़ नहीं करता है तो आपको अपना खुद का रोल करना होगा। यह वास्तव में उससे भी बदतर है। सभी (?) नया chipsets में एफएम रेडियो है लेकिन not all phones में FM Radio application है।

पुराना विंडोज मोबाइल एक ही problem था।

0

कई लोगों ने एफएफटी का उल्लेख किया है, जिसे आप करना चाहते हैं, लेकिन फिर सफेद शोर का पता लगाने के लिए यह सुनिश्चित करने की आवश्यकता है कि आयाम ऑडियो आवृत्तियों की सीमा पर अपेक्षाकृत स्थिर है। आप केवल परिमाण को देखना चाहते हैं, आप चरणों को फेंक सकते हैं। आप ओ (एन) समय में परिमाण के लिए औसत और मानक विचलन की गणना कर सकते हैं। सफेद शोर के लिए, आपको औसत विचलन औसत के अपेक्षाकृत छोटे अंश होने चाहिए। अगर मुझे अपने आंकड़े सही याद हैं, तो यह औसत के बारे में (1/वर्ग (एन)) होना चाहिए।

2

बस उच्च पास फ़िल्टरिंग यह एक अच्छा विचार देगा, और कभी-कभी एफएम रेडियो पर स्क्वाल्च के लिए उपयोग किया जाता है।

ध्यान दें कि यह व्युत्पन्न सुझाव प्राप्त करने के लिए तुलनीय है - व्युत्पन्न लेना उच्च पास फ़िल्टर का एक सरल रूप है, और उस शक्ति का मापने का एक कच्चा तरीका है।

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

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