Определить аудио образец в файле - PullRequest
2 голосов
/ 13 августа 2011

Я хочу иметь возможность идентифицировать аудиофрагмент (предоставленный пользователем) в аудио-файле, который я получил (mp3).

Файл mp3 - это радиопоток, который я сохранил для тестирования, и у меня есть предварительный ролик шоу. Я хочу идентифицировать его в файле и получить временную метку, в которой он воспроизводится в файле.

Примечание. Решение может быть на любом из следующих языков программирования: Java, Python или C ++. Я не знаю, как проанализировать видеофайл, и любая ссылка на эту тему поможет.

Ответы [ 2 ]

3 голосов
/ 14 августа 2011

Эта проблема подпадает под категорию аудио-дактилоскопии.Если вы сопоставили сэмпл с песней, вы наверняка будете знать временную метку, в которой сэмпл встречается в песне.За Shazam стоит отличная статья, в которой описывается их техника: http://www.ee.columbia.edu/~dpwe/papers/Wang03-shazam.pdf Они в основном выбирают локальные максимумы на спектрограмме и создают хэш на основе их относительных положений.

Вот хороший обзор алгоритмов дактилоскопии: http://mtg.upf.edu/files/publications/MMSP-2002-pcano.pdf

В любом случае, вы, вероятно, будете много работать с БПФ и спектрограммами. В этом посте рассказывается, как это сделать в Python.

2 голосов
/ 13 августа 2011

Я бы начал с вычисления спектрограммы БПФ файлов стога сена и иголки (так сказать). Тогда вы можете попытаться (нечетко) сопоставить спектрограммы - если вы отформатируете их как изображения, вы даже можете использовать для этого готовые алгоритмы.

Не уверен, что это канонический или оптимальный способ, но я чувствую, что он должен работать.

...