Biri bana bağırmadan önce, bu sorunun birçok kez sorulduğunu tamamen anlıyorum. Mevcut soruları ve cevapları okuduğumdan eminim ama yine de sorunun bir kısmı hakkında kafam karıştı.
Kapalı bir ortamda müzik (A) çalan bir ses kaynağım var. A'yı kaydetmek için kullandığım bir mikrofonum var. Aynı özellikleri ve uzunluğu (örnek sayısı) paylaşan iki wav dosyası ile kaldım.
Amacım A'nın mikrofona ulaşması için geçen süreyi hesaplamak.
Çapraz korelasyon (numpy) kullanarak hesaplama yapmaya çalışıyorum:
# 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))
Sürekli olarak 300.000 cm aralığında değerler elde ediyorum. Hoparlör ve mikrofon arasındaki mesafe yaklaşık 2 metredir.
Bu benim için oldukça yeni, bu yüzden bariz bir şeyi kaçırdığımdan eminim.
Şimdiden teşekkürler.
numpy.correlate
Bunun yerine kullanmamanız gerektiğinden emin misiniznumpy.convolve
? Gecikmeyi tahmin etmek için, sinyallerinizi kıvrık değil, çapraz korelasyon yapmak istersiniz. Büyük olasılıkla kıvrım yaparak çok daha büyük bir gecikme yaşayacaksınız.