我有两个不同麦克风(例如WAV格式)录制的同一信号的音频记录,但其中一个录制有延迟,例如数秒。
当在某种波形查看器中查看这些信号时,很容易通过视觉识别出这种延迟 - 即只需在每个信号中找到第一个可见峰,并确保它们具有相同的形状:
(来源: greycat.ru)
但是,如何以编程方式实现 - 找出这个延迟(t)是多少? 两个数字化信号略有不同(因为麦克风不同,位置不同,由于ADC设置等原因)。
我稍微搜索了一下,发现这个问题通常称为“时间延迟估计”,并且有无数的方法可以解决它 - 例如其中之一。
但是否存在任何简单且现成的解决方案,例如命令行实用程序、库或直接的算法?
结论:我没有找到简单的实现方式,因此我自己做了一个简单的命令行工具 - 可在https://bitbucket.org/GreyCat/calc-sound-delay上获得(使用GPLv3许可)。它实现了一个非常简单的搜索最大值算法,该算法在Wikipedia上有描述。