У меня есть две аудиозаписи одного и того же сигнала на 2 разных микрофонах (например, в формате WAV), но один из них записывается с задержкой, например, несколько секунд.
Легко идентифицировать такую задержку визуально, просматривая эти сигналы в каком-либо средстве просмотра формы сигнала, то есть просто обнаруживая первый видимый пик в каждом сигнале и гарантируя, что они имеют одинаковую форму:
http://www.greycat.ru/temp/time-delay-peaks.png
Но как мне сделать это программно - узнать, что это за задержка (t)? Два оцифрованных сигнала немного отличаются (потому что микрофоны разные, были в разных положениях, из-за настроек АЦП и т. Д.).
Я немного покопался и обнаружил, что эту проблему обычно называют «оценкой задержки по времени» и к ней есть множество подходов - например, один из них .
Но есть ли простые и готовые решения, такие как утилита командной строки, библиотека или простой алгоритм?
Заключение : я не нашел простой реализации и сам выполнил простую утилиту командной строки - доступно по адресу https://bitbucket.org/GreyCat/calc-sound-delay (GPLv3-лицензировано). Он реализует очень простой алгоритм поиска максимума, описанный в Wikipedia .