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