Sebelum ada yang meneriaki saya, saya sepenuhnya menyadari bahwa pertanyaan ini telah ditanyakan berkali-kali. Saya yakinkan Anda bahwa saya sudah membaca seluruh pertanyaan dan jawaban yang ada tetapi saya masih bingung tentang bagian dari masalah.
Saya memiliki sumber suara yang memutar musik (A) di lingkungan tertutup. Saya memiliki mikrofon yang saya gunakan untuk merekam A. Saya memiliki dua file wav yang memiliki karakteristik dan panjang yang sama (jumlah sampel).
Tujuan saya adalah menghitung waktu yang dibutuhkan untuk mencapai mikrofon.
Saya mencoba melakukan perhitungan menggunakan korelasi silang (numpy):
# 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))
Saya secara konsisten mendapatkan nilai dalam kisaran 300.000 cm. Jarak antara speaker dan mik adalah sekitar 2 kaki.
Ini semua baru bagi saya, jadi saya yakin saya kehilangan sesuatu yang jelas.
Terima kasih sebelumnya.
numpy.correlate
bukannumpy.convolve
? Untuk memperkirakan keterlambatan, Anda ingin mengkorelasikan sinyal Anda secara silang, bukan membelitnya. Anda mungkin berakhir dengan penundaan yang jauh lebih besar dengan berbelit-belit.