इससे पहले कि कोई मुझ पर चिल्लाता है मुझे पूरी तरह से पता है कि यह सवाल कई बार पूछा गया है। मैं आपको विश्वास दिलाता हूं कि मैंने मौजूदा प्रश्नों और उत्तरों के माध्यम से पढ़ा है लेकिन मैं अभी भी समस्या के भाग को लेकर उलझन में हूं।
मेरे पास एक ध्वनि स्रोत है जो एक बंद वातावरण में संगीत (ए) निभाता है। मेरे पास एक माइक है जिसे मैं रिकॉर्ड करने के लिए उपयोग कर रहा हूं। मैं दो wav फ़ाइलों के साथ छोड़ दिया गया हूं जो समान विशेषताओं और लंबाई (नमूनों की संख्या) साझा करते हैं।
मेरा लक्ष्य माइक तक पहुंचने के लिए ए के लिए लगने वाले समय की गणना है।
मैं क्रॉस-सहसंबंध (संख्यात्मक) का उपयोग करके गणना करने की कोशिश कर रहा हूं:
# Delay estimation
corr = numpy.convolve(original_audio, recorded_audio, 'full')
delay = int(len(corr)/2) - numpy.argmax(corr)
distance = delay / sample_rate * 343 # sample_rate == 22050, m/s = speed of sound
print("Distance full: %.2f cm" % (distance * 100))
मैं लगातार 300,000 सेमी रेंज में मान प्राप्त करता हूं। स्पीकर और माइक के बीच की दूरी लगभग 2 फीट है।
यह सब मेरे लिए बहुत नया है तो मुझे यकीन है कि मुझे कुछ स्पष्ट याद आ रहा है।
अग्रिम में धन्यवाद।
numpy.correlate
इसके बजाय उपयोग नहीं कर रहे हैंnumpy.convolve
? देरी का अनुमान लगाने के लिए, आप अपने संकेतों को क्रॉस-सहसंबंधित करना चाहते हैं, न कि उन्हें हल करना। आप संभवतः समापन के द्वारा बहुत अधिक विलंब के साथ समाप्त होंगे।