Здесь мы говорим о награде:)
Чтобы найти конкретный опорный сигнал в большем звуковом фрагменте, вам необходимо использовать алгоритм взаимной корреляции.Основные формулы можно найти в этой статье Википедии .
Кросс-корреляция - это процесс, с помощью которого сравниваются 2 сигнала.Это делается путем умножения обоих сигналов и суммирования результатов для всех выборок.Затем один из сигналов сдвигается (обычно на 1 выборку), и расчет повторяется.Если вы попытаетесь визуализировать это для очень простых сигналов, таких как один импульс (например, 1 сэмпл имеет определенное значение, а остальные сэмплы равны нулю), или чисто синусоидальной волны, вы увидите, что результат взаимной корреляции действительномера того, насколько оба сигнала похожи, и задержка между ними.Другая статья, которая может предоставить более глубокое понимание, может быть найдена здесь
Эта статья Пола Бурка также содержит исходный код для простой реализации во временной области.Обратите внимание, что статья написана для общего сигнала.Аудио обладает тем специальным свойством, что долгосрочное среднее значение обычно равно 0. Это означает, что средние значения, используемые в формуле Пола Буркса (mx и my), могут быть опущены.Существуют также быстрые реализации взаимной корреляции на основе FFT (см. ALGLIB ).
(Максимальное) значение корреляции зависит от значений выборки в аудиосигналах.В алгоритме Пола Бурка, однако, максимум масштабируется до 1,0.В случаях, когда один из сигналов полностью содержится в другом сигнале, максимальное значение достигнет 1. В более общем случае максимум будет ниже, и необходимо будет определить пороговое значение, чтобы решить, достаточно ли похожи сигналы.