Прежде чем кто-то кричит на меня, я полностью осознаю, что этот вопрос задавался много раз. Уверяю вас, что я прочитал существующие вопросы и ответы, но я все еще запутался в части проблемы.
У меня есть источник звука, который играет музыку (A) в закрытом помещении. У меня есть микрофон, который я использую для записи A. У меня осталось два файла wav, которые имеют одинаковые характеристики и длину (количество образцов).
Моя цель - подсчитать, сколько времени понадобилось А, чтобы добраться до микрофона.
Я пытаюсь выполнить расчет с использованием взаимной корреляции (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
? Чтобы оценить задержку, вы хотите взаимно коррелировать ваши сигналы, а не свертывать их. Вы, возможно, получите гораздо большую задержку при свертывании.Ответы:
Вы уверены, что не должны использовать
numpy.correlate
вместоnumpy.convolve
? Чтобы оценить задержку, вы хотите взаимно коррелировать ваши сигналы, а не свертывать их. Вы, возможно, получите гораздо большую задержку при свертывании.Попробовать что-то простое:
источник