कई माइक्रोफोन का उपयोग करके ध्वनि की दिशा का पता लगाना


9

सबसे पहले, मैंने एक समान धागा देखा है, हालांकि यह थोड़ा अलग है जो मैं हासिल करने की कोशिश कर रहा हूं। मैं एक रोबोट का निर्माण कर रहा हूं जो उस व्यक्ति का अनुसरण करेगा जो इसे कहता है। मेरा विचार 3 या 4 माइक्रोफोन का उपयोग करना है - यानी निम्नलिखित दिशा में यह निर्धारित करने के लिए कि रोबोट को किस दिशा से बुलाया गया था:

यहाँ छवि विवरण दर्ज करें

जहाँ S स्रोत है, A, B और C माइक्रोफोन हैं। विचार यह है कि एबी, एसी, बीसी और जोड़े से रिकॉर्ड किए गए संकेतों के चरण सहसंबंध की गणना करें और इसके आधार पर एक वेक्टर का निर्माण करें जो एक तरह के त्रिकोणासन का उपयोग करके स्रोत पर इंगित करेगा। सिस्टम को वास्तविक समय में काम करने की भी आवश्यकता नहीं है क्योंकि यह आवाज सक्रिय हो जाएगा - सभी माइक्रोफोन से सिग्नल एक साथ रिकॉर्ड किए जाएंगे, आवाज केवल एक माइक्रोफोन से सैंपल की जाएगी और यदि यह वॉयस सिग्नेचर फिट बैठता है, तो चरण सहसंबंध की गणना की जाएगी दिशा की गणना करने के लिए दूसरे का अंतिम अंश। मुझे पता है कि यह बहुत अच्छी तरह से काम नहीं कर सकता है यानी जब रोबोट को दूसरे कमरे से बुलाया जाता है या जब कई प्रतिबिंब होते हैं।

यह सिर्फ एक विचार है जो मेरे पास था, लेकिन मैंने कभी भी इस तरह का प्रयास नहीं किया है और मेरे पास वास्तविक हार्डवेयर का निर्माण करने से पहले कई प्रश्न हैं जो काम करेंगे:

  1. क्या यह ऐसा करने का एक विशिष्ट तरीका है? (यानी शोर रद्द करने के लिए फोन में उपयोग किया जाता है?) अन्य संभावित दृष्टिकोण क्या हैं?
  2. क्या चरण सहसंबंध की गणना किसी भी तरह एक साथ 3 स्रोतों के बीच की जा सकती है? (यानी गणना में तेजी लाने के लिए)
  3. इस प्रणाली के लिए 22khz नमूना दर और 12 बिट गहराई पर्याप्त है? मैं विशेष रूप से बिट गहराई के बारे में चिंतित हूं।
  4. क्या अलग होने के लिए माइक्रोफ़ोन को अलग-अलग ट्यूबों में रखा जाना चाहिए?

1
यहाँ एक दिलचस्प लेख है , शायद आपने इसे देखा है। ऐसा लगता है कि लेखक ने ध्वनि के स्रोत से निपटने के लिए अन्य 3 के ऊपर एक चौथा माइक लगाया, ताकि वह सरणी के ऊपर हो। इसके अलावा यह आपकी योजना (मेरी अप्रशिक्षित आंख, कम से कम) के समान सुंदर लगती है।
अतिथि

चरण सहसंबंध भाग के लिए सामान्य शब्द बीमफॉर्मिंग है। एक सामान्य बीमफॉर्मिंग सिस्टम माइक्रोफोन के एक रैखिक सरणी का उपयोग करता है, और मुझे यकीन नहीं है कि आपके माइक्रोफोन के लिए "दृष्टि" का क्षेत्र वास्तव में बहुत अधिक त्रिकोणीयता की अनुमति देगा।
pscheidler

त्रिकोणासन के बारे में, मुझे लगता है कि आप दो या तीन सरणियों को कुछ दूरी पर स्थापित कर सकते हैं और बीमों के प्रतिच्छेदन का पता लगा सकते हैं। "हेम रोबोट ..." (रोबोट आपका सामना करने के लिए बदल जाता है) के साथ 2-बीम पतित मामले को हल कर सकता है ... "यहाँ आओ!"
अतिथि

वास्तव में, यह एक और mic जोड़कर काम कर सकता है। इसे देखें , यह हैरी के समाधान की विविधता है। समबाहु त्रिभुज एक समकोण त्रिभुज बनता है, और एक अन्य त्रिभुज बनाने के लिए एक और mic जोड़ा जाता है। प्रत्येक त्रिकोण से हम एक बीम डालते हैं, और एक सटीक दिशा वेक्टर प्राप्त करने के लिए उन दो बीमों का औसत लेते हैं। डेमो में दो "आँखें" पर ध्यान दें। उन्हें रखा जाता है ताकि उनके माध्यम से चलने वाले बीम स्थिति को त्रिकोणित करें जब स्रोत सीधे रोबोट के सामने या पीछे होगा। किसी भी y = 0 पर स्रोत के साथ इसे आज़माएं।
अतिथि

1
@FilipePinto क्या आपने उत्तर और समस्या के वर्णन को अच्छी तरह से पढ़ा है? यह वास्तव में उस तरह से काम नहीं कर सकता है जब से आप यह नहीं जान सकते कि प्रत्येक माइक्रोफोन से प्रत्येक ऊर्जा चोटी को अन्य माइक्रोफोन के साथ कैसे संबद्ध किया जाता है - इसीलिए आपको चरण सहसंबंध, पुनरावृत्त निकटतम बिंदु या कुछ अन्य पंजीकरण एल्गोरिथ्म की आवश्यकता होती है (पंजीकरण रिकॉर्डिंग का संदर्भ नहीं देता है यहाँ, लेकिन दूसरे के खिलाफ एक संकेत मिलान करने के लिए) रिकॉर्ड किए गए तरंगों का मिलान करने के लिए और कुछ समय खिड़की के भीतर उनकी पारस्परिक पारी का पता लगाने के लिए
मैक्स वॉल्ज़क

जवाबों:


7

मुलर के उत्तर का विस्तार करने के लिए,

  1. क्या अलग होने के लिए माइक्रोफ़ोन को अलग-अलग ट्यूबों में रखा जाना चाहिए?
  1. नहीं, आप स्रोत की दिशा की पहचान करने की कोशिश कर रहे हैं, ट्यूब जोड़ने से केवल ट्यूब के अंदर ध्वनि में उछाल आएगा जो निश्चित रूप से नहीं चाहता है।

    कार्रवाई का सबसे अच्छा तरीका उन्हें सीधा सामना करना होगा, इस तरह से वे सभी समान ध्वनि प्राप्त करेंगे और केवल एक चीज जो उनके बारे में अद्वितीय है, वे हैं उनके भौतिक प्लेसमेंट जो सीधे चरण को प्रभावित करेंगे। एक 6 kHz साइन लहर की तरंग दैर्ध्य हैspeed of soundsound frequency=343 m/s6 kHz=5.71 mm। इसलिए यदि आप 6 kHz तक साइन तरंगों के चरणों की विशिष्ट रूप से पहचान करना चाहते हैं, जो मानव बात करने के लिए विशिष्ट आवृत्तियों हैं, तो आपको माइक्रोफ़ोन को सबसे अधिक 5.71 मिमी से अलग करना चाहिए। यहां एक आइटम है जिसमें एक व्यास है जो 5.71 मिमी से कम है। लगभग 6-10 kHz पर कट-ऑफ आवृत्ति के साथ एक कम पास फिल्टर जोड़ना न भूलें।

संपादित करें

मुझे लगा कि यह # 2 प्रश्न मजेदार लग रहा है इसलिए मैंने इसे अपने दम पर हल करने की कोशिश करने का फैसला किया।

  1. क्या चरण सहसंबंध की गणना किसी भी तरह एक साथ 3 स्रोतों के बीच की जा सकती है? (यानी गणना में तेजी लाने के लिए)

यदि आप अपने रैखिक बीजगणित को जानते हैं, तो आप कल्पना कर सकते हैं कि आपने माइक्रोफोन को एक त्रिभुज में रखा है जहाँ प्रत्येक माइक्रोफोन एक दूसरे से 4 मिमी की दूरी पर प्रत्येक आंतरिक कोण को बनाते हैं ।60°

तो चलिए मान लेते हैं कि वे इस विन्यास में हैं:

       C
      / \
     /   \
    /     \
   /       \
  /         \
 A - - - - - B

मे लूँगा...

  • नामकरण उपयोग करें जो से तक की ओर इशारा करते हुए एक वेक्टर हैबी¯बी
  • मेरे मूल को बुलाओ
  • सभी नंबरों को mm में लिखें
  • 3D गणित का उपयोग करें लेकिन एक 2D दिशा के साथ समाप्त होता है
  • माइक्रोफोन की ऊर्ध्वाधर स्थिति को उनके वास्तविक तरंग रूप में सेट करें। तो ये समीकरण एक ध्वनि तरंग पर आधारित हैं जो कुछ इस तरह दिखती है ।
  • अपनी स्थिति और तरंग के आधार पर इन माइक्रोफोन के क्रॉस उत्पाद की गणना करें, फिर इस क्रॉस उत्पाद से ऊंचाई की जानकारी को अनदेखा करें और स्रोत की वास्तविक दिशा के साथ आने के लिए आर्कटन का उपयोग करें।
  • फोन स्थान पर माइक्रोफोन के उत्पादन में , कॉल की स्थिति में माइक्रोफोन के उत्पादन में , कॉल स्थिति में माइक्रोफोन के उत्पादन मेंबीसीसी

तो निम्नलिखित बातें सच हैं:

  • =(0,0,)
  • बी=(4,0,)
  • सी=(2,42-22=23,सी)

यह हमें देता है:

  • बी¯=(4,0,-)
  • सी¯=(2,23,-सी)

और क्रॉस उत्पाद बसबी¯×सी¯

बी¯×सी¯=(40-)×(223-सी)=(0(-सी)-(-)23(-)2-4(-सी)423-02)=(23(-)-2-2-4सी83)

Z सूचना, सिर्फ कबाड़ है, हमारे लिए शून्य ब्याज है। जैसे-जैसे इनपुट सिग्नल बदल रहे हैं, क्रॉस वेक्टर स्रोत की ओर आगे और पीछे स्विंग होगा। तो समय का आधा यह सीधे स्रोत (प्रतिबिंब और अन्य परजीवी की अनदेखी) को इंगित करेगा। और समय का दूसरा आधा स्रोत से 180 डिग्री दूर इंगित करेगा।83

मैं जिस बारे में बात कर रहा हूं, वह है जिसे को सरल बनाया जा सकता है , और फिर रेडियन को डिग्री में बदल दें।arctan(-2-2-4सी23(-))arctan(++2सी3(-))

तो क्या आप के साथ समाप्त होता है निम्नलिखित समीकरण है:

arctan(++2सी3(-))180π


लेकिन आधे समय की जानकारी शाब्दिक रूप से 100% गलत है, तो कैसे .. एक .... इसे सही समय का 100% बनाना चाहिए?

खैर अगर अग्रणी है , तो स्रोत बी के करीब नहीं हो सकता है।

दूसरे शब्दों में, बस कुछ इस तरह से सरल बनाएं:

source_direction=atan2(a+b+2c,\sqrt{3}*(a-b))*180/pi;
if(a>b){
   if(b>c){//a>b>c
     possible_center_direction=240; //A is closest, then B, last C
   }else if(a>c){//a>c>b
     possible_center_direction=180; //A is closest, then C last B
   }else{//c>a>b
     possible_center_direction=120; //C is closest, then A last B
   }
}else{
   if(c>b){//c>b>a
     possible_center_direction=60; //C is closest, then B, last A
   }else if(a>c){//b>a>c
     possible_center_direction=300; //B is closest, then A, last C
   }else{//b>c>a
     possible_center_direction=0; //B is closest, then C, last A
   }
}

//if the source is out of bounds, then rotate it by 180 degrees.
if((possible_center_direction+60)<source_direction){
  if(source_direction<(possible_center_direction-60)){
    source_direction=(source_direction+180)%360;
  }
}

और शायद आप केवल प्रतिक्रिया करना चाहते हैं यदि ध्वनि स्रोत एक विशिष्ट ऊर्ध्वाधर कोण से आ रहा है, अगर लोग माइक्रोफोन के ऊपर बात करते हैं => 0 चरण परिवर्तन => कुछ भी नहीं करते हैं। लोग इसके बगल में क्षैतिज रूप से बात करते हैं => कुछ चरण बदलते हैं => प्रतिक्रिया करते हैं।

|पी|=पीएक्स2+पीy2=3(-)2+(++2सी)2

इसलिए आप उस सीमा को कुछ कम, जैसे कि 0.1 या 0.01 पर सेट करना चाह सकते हैं। मैं पूरी तरह से निश्चित नहीं हूं, मात्रा और आवृत्ति और परजीवी पर निर्भर करता है, इसे स्वयं परखें।

निरपेक्ष मान समीकरण का उपयोग करने के लिए एक और कारण शून्य क्रॉसिंग के लिए है, जब दिशा गलत दिशा में इंगित करेगी, तो इसके लिए थोड़ा सा समय हो सकता है। हालांकि यह केवल 1% समय के लिए होगा, यदि ऐसा है भी। तो आप दिशा में एक पहले आदेश एलपी फ़िल्टर संलग्न करना चाह सकते हैं।

true_true_direction = true_true_direction*0.9+source_direction*0.1;

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


मुझे कोड को C / C # / C ++ या JS या किसी अन्य के रूप में चिह्नित करने में समस्या आ रही है, इसलिए दुख की बात है कि कोड सफेद पर काला होगा, मेरी इच्छा के विरुद्ध। ओह अच्छा, अपने उद्यम पर शुभकामनाएँ। सुनने में अच्छा लग रहा हैं।

इसके अलावा 50/50 संभावना है कि दिशा 99% समय के स्रोत से 180 दूर होगी। मैं ऐसी गलतियाँ करने में माहिर हूँ। हालांकि इसके लिए एक सुधार सिर्फ 180 डिग्री जोड़ने के लिए बयानों को उलटने के लिए होगा।


मुझे आश्चर्य है कि क्या चरण की बात वास्तव में आवश्यक है, या यदि प्रत्येक माइक बस कुछ पहचानने योग्य विशेषता की तलाश कर सकता है। यदि सभी mics "हे रोबोट" सुनते हैं, तो क्या वे उस "बाह" ध्वनि की शुरुआत नहीं कर सकते हैं और चरण को अनदेखा कर सकते हैं? फिर आपको
अतिथि

1
@HarrySvensson, मैं देख रहा हूं कि आपका क्या मतलब है। मैं सोच रहा था कि आप अपने दृष्टिकोण जैसी किसी चीज़ का उपयोग कर सकते हैं, सिवाय इसके , और कई मिलीसेकंड होंगे जब से पहले माइक ने आवाज़ सुनी थी। मैं इसके साथ चारों ओर खेला यहाँ , लेकिन यह पूरी तरह से अस्तर नहीं कर रहा है जब स्रोत, एक मिक, और रोबोट के केंद्र सभी एक लाइन में नहीं कर रहे हैं। मुझे लगता है कि यह "ठीक" हो सकता है, हालांकि इसे देखें। त्रुटि जब स्रोत mics से दूर है के रूप में बुरा नहीं है। मुझे यकीन है कि इसे ठीक किया जा सकता है, लेकिन गणित मुझे बचता है। सी
अतिथि

1
मुझे यकीन नहीं है कि मैंने कभी SE.DSP पर यहाँ काम करने वाले कोड को देखा है। मुझे शिक्षक के लाउंज के साथ देखने दें और देखें कि वे क्या कहते हैं। ऐसा लगता है कि किसी ने कुछ समय पहले मेटा पर पूछा, लेकिन कोई कार्रवाई नहीं की गई: dsp.meta.stackexchange.com/questions/133/…
पीटर के।

1
कृपया जाएं और Meta.DSP पर उस पोस्ट को अपग्रेड करें। मैंने टैग <kbd> सुविधा-अनुरोध </ kbd> जोड़ा है, जिसे कम से कम कुछ जुड़ाव देखना चाहिए, लेकिन हमें वोटों की आवश्यकता है। यदि केमिस्ट्री। ई साइट ने इसे सक्षम किया है, तो हमें निश्चित रूप से करना चाहिए! :-) dsp.meta.stackexchange.com/questions/133/...
पीटर के.एच.

1
@endolith आप सही हैं, मैंने अब उस हिस्से को हटा दिया है। धन्यवाद।
हैरी स्वेनसन

4
  1. हां, यह उचित और विशिष्ट लगता है।
  2. आप बस एक ही बार में तीन माइक्रोफोन संकेतों का उपयोग कर सकते हैं (अपने तीन जोड़ी सहसंबंधों के माध्यम से "चक्कर" नहीं)। "म्यूजिक" और "ईएसपीआरआईटी" के लिए दिशा-निर्देश के अनुप्रयोगों को देखें।
  3. बहुत संभावना है। आप उच्च ऑडियो गुणवत्ता के लिए लक्ष्य नहीं कर रहे हैं, आप अच्छे corss- सहसंबंध गुणों के लिए लक्ष्य कर रहे हैं, और यहां कुछ बिट्स हैं और शायद सिस्टम नहीं बना या तोड़ देगा। दूसरी ओर बहुत ही सामान्य 44.1 kHz या 48 kHz की तरह एक उच्च नमूनाकरण दर, एक ही वेधशाला की लंबाई पर कोणीय परिशुद्धता को दोगुना कर देगा, बहुत संभावना है।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.