Оценка временной задержки между двумя звуковыми сигналами
У меня есть две аудиозаписи одного и того же сигнала двумя разными микрофонами (например, в формате WAV), но одна из них записывается с задержкой, например, несколько секунд.
легко идентифицировать такую задержку визуально при просмотре этих сигналов в каком - то средстве просмотра формы волны-т. е. просто обнаруживая первый видимый пик в каждом сигнале и гарантируя, что они одинаковы форма:
http://www.greycat.ru/temp/time-delay-peaks.png
но как это сделать программно-выяснить, что такое задержка (t)? Два оцифрованных сигнала немного отличаются (потому что микрофоны разные, были в разных положениях, из-за настроек АЦП и т. д.).
Я немного покопался и обнаружил, что эта проблема обычно называется "оценка задержки по времени", и у нее есть мириады подходов к ней-например,один из их!--6-->.
но существуют ли простые и готовые решения, такие как утилита командной строки, библиотека или прямой алгоритм?
вывод: я не нашел простой реализации и сам сделал простую утилиту командной строки-доступно в https://bitbucket.org/GreyCat/calc-sound-delay (GPLv3-лицензировано). Он реализует очень простой алгоритм поиска максимума, описанный в Википедия.
2 ответов
техника, которую вы ищете, называется кросс-корреляции. Это очень простой, если несколько вычислить интенсивный метод, который может быть использован для решения различных задач, включая измерение разницы во времени (ака ЛАГ) между двумя аналогичными сигналами (сигналы не должны быть идентичными).
Если у вас есть разумное представление о вашем значении лага (или, по крайней мере, диапазон значений лага, которые ожидаются), то вы можете уменьшить общее количество вычисление значительно. То же самое, если вы можете поставить определенный предел тому, сколько точности вам нужно.
очень прямая вещь todo-это просто проверить, превышают ли пики некоторый порог, время между высоким пиком на линии A и высоким пиком на линии B, вероятно, ваша задержка. Просто попробуйте немного поработать с порогами, и если графики обычно так же ясны, как изображение, которое вы опубликовали, тогда вы должны быть в порядке.