डेल स्ट्रैक को एक एफएम रेडियो रखने के लिए खोजा गया है जिसमें बहुत कच्चे नियंत्रण हैं। 'स्कैनिंग' डिफ़ॉल्ट रूप से अनुपलब्ध है, इसलिए मेरा सवाल यह है कि किसी को भी पता है कि एंड्रॉइड पर जावा का उपयोग करके, कोई एफएम रेडियो को 'सुन' सकता है क्योंकि हम सफेद शोर (या एक अच्छा सिग्नल) का पता लगाने की आवृत्ति सीमा के माध्यम से फिर से शुरू होते हैं। एक सामान्य रेडियो की तलाश समारोह की तरह काम करने के लिए?क्या आप प्रोग्रामिंग रूप से सफेद शोर का पता लगा सकते हैं?
उत्तर
मैंने इस विशिष्ट क्षेत्र पर कुछ व्यावहारिक कार्य किया है, तो मैं 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*/ }
यह चिंता करता है कि कैसे सफेद शोर अपने एंट्रॉपी को औसत करने के लिए पर्याप्त पर्याप्त अवधि में गैर-स्पोरैडिक होता है। ध्वनिक सामग्री स्पोरैडिक (स्थानीयकृत शक्ति) और आवर्ती (दोहराव शक्ति) है। सरल परीक्षण कम आवृत्तियों के साथ ध्वनिक सामग्री पर प्रतिक्रिया करता है और उच्च आवृत्ति सामग्री द्वारा बाहर निकाला जा सकता है। लोपास फिल्टर लागू करने के लिए सरल हैं जो मदद कर सकते हैं (और इसमें कोई संदेह नहीं है)।
इसके अलावा, रूट माध्य वर्ग को औसत पूर्ण योग से विभाजित किया जा सकता है जो एक और अनुपात प्रदान करता है जो सफेद शोर के लिए विशेष होना चाहिए, हालांकि मैं यह नहीं समझ सकता कि यह अभी क्या है। सिग्नल डेरिवेटिव्स के अनुपात भी अनुपात अलग-अलग होंगे।
मैं इन्हें शोर के सरल सूत्र हस्ताक्षर के रूप में सोचता हूं। मुझे यकीन है कि और भी हैं .. अधिक विशिष्ट नहीं होने के लिए खेद है, यह अस्पष्ट और अपमानजनक सलाह है, लेकिन एक एफएफटी के उत्पादन पर सरल परीक्षण कर रहा है।बेहतर व्याख्या और अधिक विचारों के लिए शायद विकिपीडिया आदि पर एंट्रॉपी और यादृच्छिकता के सांख्यिकीय और स्टोकास्टिक (?) मापों की जांच करें
+1 मुझे लगता है कि यह सबसे आसान और सबसे अधिक प्रदर्शन समाधान है। व्युत्पन्न करके, यह वास्तव में शोर की यादृच्छिक प्रकृति का पता लगाएगा। और यह छोटे नमूना समय के साथ भी काम करता है, जिसका अर्थ है तेज़ स्कैनिंग। –
यह एक अच्छा मुद्दा होना चाहिए क्योंकि मेरी व्याख्या/इतनी गन्दा है। मैंने इसे थोड़ा तय करने की कोशिश की है। – strainer
इसके लिए धन्यवाद - एंड्रॉइड के बारे में नीचे दी गई टिप्पणी में कोई एपीआई एक्सेस नहीं हो सकती है (और शायद यह है) एक ठोकर ब्लॉक हो सकता है, लेकिन अगर मेरे पास कोई पहुंच है तो मैं शायद इस विधि को अपनाएगा। –
सफेद शोर पहचान के लिए आपको एफएफटी करना होगा और देखें कि इसमें कम या ज्यादा स्थिर स्पेक्ट्रम है। लेकिन एफएम से रिकॉर्डिंग एक समस्या हो सकती है।
फास्ट फूरियर ट्रांसफॉर्म का उपयोग करें।
यही वह है जिसे आप फास्ट फूरियर ट्रांसफॉर्म का उपयोग कर सकते हैं। यह सिग्नल का विश्लेषण करता है और विभिन्न आवृत्तियों पर सिग्नल की ताकत को निर्धारित करता है। यदि एफएफटी वक्र में कोई स्पाइक है, तो यह संकेत देना चाहिए कि सिग्नल केवल सफेद शोर नहीं है।
Here एक पुस्तकालय है जो एफएफटी का समर्थन करता है। इसके अलावा, here एक कोड है जिसमें स्रोत कोड है यदि आप एफएफटी के बारे में जानना चाहते हैं।
उपयोग करने योग्य एफएफटी लागू करने में सक्षम होने से पहले आपको कितने मिलीसेकंड एकत्र करने की आवश्यकता है? –
आप यहां ईएम सिग्नल के बारे में बात कर रहे हैं। एफएफटी मदद कर सकता है लेकिन पीएलएल बेहतर होगा। दुर्भाग्यवश आपके पास यह सिग्नल नहीं है ... – BenoitParis
लगभग 32 नमूनों पर कोई भी एफएफटी विंडो आकार शोर के परीक्षण के लिए पूरी तरह से उपयोग करने योग्य मूल्य प्रदान करेगा (सफेद उदाहरण शोर एंट्रॉपी के लिए ध्वनिक विवरण की तुलना में पर्याप्त औसत के लिए पर्याप्त है)। मैं पूरी सिग्नल के लगभग 1/10 वें और खिड़की को 200 नमूनों के नीचे रखने के लिए थोड़ी देर के लिए ffting की सिफारिश करेंगे, यह अपशिष्ट प्रसंस्करण मांगों से परहेज करता है और आकस्मिक रूप से स्थानीय/पर्क्यूसिव प्रकार की आवाजों को अत्यधिक लंबे माप में धो नहीं देता है। – strainer
आप FFT उपकरण उपलब्ध है, बस एक जंगली सुझाव नहीं है, तो:
कोशिश ऑडियो के कुछ ही मिलीसेकेंड को संपीड़ित।
शोर की एक विशिष्ट विशेषता यह है कि यह स्पष्ट सिग्नल से बहुत कम संपीड़ित करता है।
यह करने का एक दिलचस्प तरीका है लेकिन मुझे संदेह है ... क्या यह उस चैनल को पहचानने में सक्षम होगा जिसमें कम मात्रा में शोर था? इसके अलावा यह संपीड़न एल्गोरिदम पर बहुत निर्भर होगा - एक अच्छा एल्गोरिदम क्या होगा? – CiscoIPPhone
यह वास्तव में एक जंगली सुझाव है। क्या आप लापरवाही संपीड़न (ज़िप) या एमपी 3 या ओग जैसे ऑडियो संपीड़न के बारे में सोचते हैं? –
वास्तव में बहुत जंगली! मैं ज़िप की तरह कुछ सोच रहा था, लेकिन अब आप यह कहते हैं, एमपी 3/ओग वास्तव में एक एफएफटी करने के करीब, एक बहुत ही रोचक विचार है। –
क्या आपके पास आईईईई एक्सप्लोर लाइब्रेरी की सदस्यता है? इस विषय पर अनगिनत कागजात (one यादृच्छिक रूप से चुने गए हैं) हैं।
बिजली spectral density की "समतलता" का निरीक्षण करने के लिए एक बहुत ही सरल विधि होगी। कोई समय डोमेन में सिग्नल के Fast Fourier Transform का उपयोग करके इसे ले सकता है और स्पेक्ट्रल घनत्व के standard deviation को ढूंढ सकता है। यदि यह कुछ सीमा से नीचे है, तो आपका सफेद शोर है।
यहां मुख्य प्रश्न यह है कि: किस प्रकार के सिग्नल तक पहुंच है?
मुझे यकीन है कि आपके पास सीधे एनालॉग ईएम सिग्नल तक सीधे पहुंच नहीं है। तो इस सिग्नल पर एफएफटी का कोई उपयोग संभव नहीं है। आप phased-lock loop बनाने का भी प्रयास नहीं कर सकते हैं, जिस तरह से आपका मानक पुराना रेडियो ट्यूनर काम करता है (आपके मामले में "स्कैनिंग")।
आपका एकमात्र विकल्प वास्तव में एक आवृत्ति चुनना है और इसे भी सुनना है (और ध्वनि पर एफएफटी के साथ शोर होने पर पता लगाने का प्रयास करें)। आपको केवल एफएफटी सिग्नल तक पहुंच हो सकती है।
समस्या यहां: यदि आप सफेद शोर का उपयोग करके संभावित आवृत्ति का पता लगाना चाहते हैं तो आप सिग्नल को आसानी से उठाएंगे।
डबल एकीकृत spectral density की autocorrelation ऑडियो के एक दूसरे के एक अंश से अधिक:
वैसे भी, यहाँ मैं इस रणनीति के साथ क्या करने की कोशिश करेंगे क्या है। और यह प्रत्येक आवृत्ति के लिए।
फिर एफएम आवृत्ति की तलाश करें जहां यह संख्या अधिकतम है।
लिटिल यहाँ स्पष्टीकरण:
- वर्णक्रमीय घनत्व आप एक संकेत है जो सबसे अधिक इस्तेमाल किया आवृत्तियों maxed रहे हैं देता है।
- यदि कुछ समय बाद समान आवृत्तियों को अधिकतम किया जाता है तो आपके पास कुछ स्पष्ट रूप से स्पष्ट ऑडियो होता है। आप ऑटो सहसंबंध एक दूसरे के एक अंश के लिए एक ऑडियो आवृत्ति के लिए वर्णक्रमीय घनत्व को एकीकृत
- (कुछ समारोह है कि बड़े बढ़ता रैखिक से भी काम कर सकते हैं का उपयोग कर) आप तो बस सभी ऑडियो आवृत्तियों के लिए इस एकीकृत करने के लिए है के द्वारा इस मिल
इंटीग्रल को सामान्य करने के लिए भी सावधान रहें: एक हल्के सफेद शोर सिग्नल को स्पष्ट लेकिन कम ऑडियो सिग्नल की तुलना में उच्च स्कोर नहीं मिलना चाहिए।
संपीड़न भी मदद कर सकता है (शायद गहन ressource?) – BenoitParis
जहां तक मुझे पता है कि Android SDK में एफएम रेडियो के लिए कोई एपीआई या ड्राइवर नहीं है और जब तक डेल रिलीज़ नहीं करता है तो आपको अपना खुद का रोल करना होगा। यह वास्तव में उससे भी बदतर है। सभी (?) नया chipsets में एफएम रेडियो है लेकिन not all phones में FM Radio application है।
पुराना विंडोज मोबाइल एक ही problem था।
कई लोगों ने एफएफटी का उल्लेख किया है, जिसे आप करना चाहते हैं, लेकिन फिर सफेद शोर का पता लगाने के लिए यह सुनिश्चित करने की आवश्यकता है कि आयाम ऑडियो आवृत्तियों की सीमा पर अपेक्षाकृत स्थिर है। आप केवल परिमाण को देखना चाहते हैं, आप चरणों को फेंक सकते हैं। आप ओ (एन) समय में परिमाण के लिए औसत और मानक विचलन की गणना कर सकते हैं। सफेद शोर के लिए, आपको औसत विचलन औसत के अपेक्षाकृत छोटे अंश होने चाहिए। अगर मुझे अपने आंकड़े सही याद हैं, तो यह औसत के बारे में (1/वर्ग (एन)) होना चाहिए।
बस उच्च पास फ़िल्टरिंग यह एक अच्छा विचार देगा, और कभी-कभी एफएम रेडियो पर स्क्वाल्च के लिए उपयोग किया जाता है।
ध्यान दें कि यह व्युत्पन्न सुझाव प्राप्त करने के लिए तुलनीय है - व्युत्पन्न लेना उच्च पास फ़िल्टर का एक सरल रूप है, और उस शक्ति का मापने का एक कच्चा तरीका है।
- 1. एसक्यूएल त्रुटि का पता नहीं लगा सकते हैं
- 2. क्या आप फंक्शन तर्कों में एक सरणी लगा सकते हैं?
- 3. क्या आप प्रोग्रामिंग रूप से j2ee एप्लिकेशन को पुनरारंभ कर सकते हैं?
- 4. आप Java में किसी छवि ऑब्जेक्ट पर माउस-क्लिक ईवेंट का पता कैसे लगा सकते हैं?
- 5. आप कैसे पता लगा सकते हैं कि उपकरण में किसी ऑब्जेक्ट को बनाए रखना क्या है?
- 6. माडेलिका (SystemModeler) में सफेद शोर
- 7. क्या आप यह पता लगा सकते हैं कि एक Django मॉडल उदाहरण "गंदा" है या नहीं?
- 8. क्या आप पता लगा सकते हैं कि दिए गए संख्या में गोरौटाइन कितने धागे बनाएंगे?
- 9. क्या आप परीक्षण से पहले किसी एप्लिकेशन के प्रदर्शन का अनुमान लगा सकते हैं?
- 10. iPhone - मैं कैसे पता लगा सकते हैं एक युक्ति क्रम
- 11. विंडोज डेस्कटॉप एप्लिकेशन में जावास्क्रिप्ट सक्षम/अक्षम होने पर आप प्रोग्रामेटिक रूप से कैसे पता लगा सकते हैं? (वेबब्रोसर कंट्रोल)
- 12. रेल - रेल कंसोल में, जब आप सहेजते हैं और झूठे होते हैं, तो आप कैसे पता लगा सकते हैं क्यों?
- 13. एनएसओब्जेक्ट की एक निश्चित संपत्ति होने पर आप कैसे पता लगा सकते हैं?
- 14. क्या आप एक सफेद सूचक शैली का उपयोग करने के लिए UIWebView बता सकते हैं?
- 15. क्या आप पता लगा सकते हैं कि पीसी पर जावास्क्रिप्ट के माध्यम से क्लीयरटाइप सक्षम है या नहीं?
- 16. आप प्रोग्रामिंग रूप से एनएसएसएनयू कैसे प्रदर्शित करते हैं?
- 17. क्या टर्मिनल <Shift-Enter> या <Control-Enter> का पता लगा सकते हैं?
- 18. क्या आप "अदृश्य सीमा" बना सकते हैं?
- 19. क्या आप पता लगा सकते हैं कि सी # फ़ील्ड को डिफ़ॉल्ट मान असाइन किया गया है या नहीं?
- 20. संभावित स्मृति अनुकूलन की पहचान करने के लिए आप .NET अनुप्रयोग में प्रबंधित ढेर का पता कैसे लगा सकते हैं?
- 21. प्रोग्रामिंग के रूप में आप असेंबली संदर्भ कैसे जोड़ते हैं?
- 22. यूयूआईडी से आप किस प्रकार का डेटा निकाल सकते हैं?
- 23. हम रोशनी शोर को कैसे हटा सकते हैं?
- 24. डब्ल्यूपीएफ, क्या आप डिफ़ॉल्ट विंडोज रंग प्राप्त कर सकते हैं?
- 25. आप कैसे पता लगा सकते हैं कि तारों में दो नियमित अभिव्यक्ति ओवरलैप हो सकती हैं या नहीं?
- 26. का पता लगा रहा मनमाना आकार
- 27. क्या आप कमांड लाइन से एआईआर ऐप्स चला सकते हैं?
- 28. क्या आप प्रोग्राम-आधारित सर्विसिंग (विश्वसनीय इंस्टॉलर) के साथ प्रोग्रामेटिक रूप से बातचीत कर सकते हैं?
- 29. क्या गिट पता लगा सकता है कि दो स्रोत फाइलें अनिवार्य रूप से एक दूसरे की प्रतियां हैं?
- 30. क्या आप रूबी में अर्धविराम का उपयोग कर सकते हैं?
मेरे पास एक डेल स्ट्रीक है और एंड्रॉइड टूल्स इंस्टॉल हैं। अगर आपको बीटा टेस्टर को किसी भी चीज़ के लिए चाहिए तो मुझे मारो :-) – CiscoIPPhone