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