Перш ніж хтось кричить на мене, я цілком усвідомлюю, що це питання задавали не раз. Я запевняю вас, що я прочитав існуючі питання та відповіді, але все ще плутаю частину проблеми.
У мене є джерело звуку, яке відтворює музику (A) у закритому середовищі. У мене є мікрофон, який я використовую для запису А. Мені залишаються два файли wav, які мають однакові характеристики та довжину (кількість зразків).
Моя мета - обчислити час, необхідний A для досягнення мікрофона.
Я намагаюся виконати обчислення, використовуючи перехресну кореляцію (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))
Я послідовно отримую значення в діапазоні 300 000 см. Відстань між динаміком та мікрофоном приблизно 2 фути.
Це все для мене досить нове, так що я впевнений, що я пропускаю щось очевидне.
Заздалегідь спасибі.
numpy.correlate
замість цього не слід користуватисяnumpy.convolve
? Для оцінки затримки потрібно перехресно співвіднести свої сигнали, а не перекручувати їх. Ви, можливо, закінчите набагато більшу затримку, зробивши згортання.