在有人对我大喊之前,我完全意识到这个问题已经被问过无数次了。我向您保证,我已经阅读了现有的问题和答案,但是对于部分问题我仍然感到困惑。
我有一个在封闭环境中播放音乐(A)的声源。我有一个用来录制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英尺。
这对我来说都是很新的,所以我确定我缺少明显的东西。
提前致谢。
PeterK可能是正确的。请注意,您可以先对时间之一进行时间反转和共轭,然后通过卷积实现相关性。这可以让您使用快速卷积算法(例如重叠保存)进行关联。
—
杰森R
numpy.correlate
代替numpy.convolve
吗?为了估计延迟,您想对信号进行互相关,而不是对其进行卷积。卷积可能会导致更大的延迟。