2 つの異なるマイク (たとえば、WAV 形式) による同じ信号の 2 つのオーディオ録音がありますが、そのうちの 1 つは、たとえば数秒の遅延で録音されます。
これらの信号をある種の波形ビューアーで表示すると、このような遅延を視覚的に簡単に識別できます。つまり、すべての信号で最初に目に見えるピークを見つけて、それらが同じ形状であることを確認するだけです。
(出典:greycat.ru)
しかし、プログラムでそれを行うにはどうすればよいですか - この遅延 (t) が何であるかを調べますか? 2 つのデジタル化された信号はわずかに異なります (マイクロフォンが異なる、ADC のセットアップが原因で位置が異なるなど)。
少し調べてみたところ、この問題は通常「時間遅延推定」と呼ばれ、無数のアプローチがあることがわかりました。たとえば、そのうちの1つです。
しかし、コマンドライン ユーティリティ、ライブラリ、簡単なアルゴリズムなど、簡単で既製のソリューションはありますか?
結論: 簡単な実装が見つからず、簡単なコマンドライン ユーティリティを自分で実行しました。https ://bitbucket.org/GreyCat/calc-sound-delay (GPLv3 ライセンス) で入手できます。Wikipediaで説明されている非常に単純な最大値検索アルゴリズムを実装しています。