Ответ 1
Это называется звуковой отпечаток пальца. Существуют некоторые проекты с открытым исходным кодом, из которых вы можете получить некоторые идеи. Посмотрите здесь: Отпечаток аудио - MusicBrainz.
Я хочу программно сравнивать 2 аудиофайла. Например: у меня есть звуковой файл в приложении для iPhone, а затем я записываю еще один. Я хочу проверить, соответствует ли существующий звук записанному звуку или нет (- похоже на распознавание голоса).
Как я могу это сделать?
Это называется звуковой отпечаток пальца. Существуют некоторые проекты с открытым исходным кодом, из которых вы можете получить некоторые идеи. Посмотрите здесь: Отпечаток аудио - MusicBrainz.
У вас есть сервер, делающий звуковые отпечатки пальцев, которые в любом случае не подходят для мобильных устройств. Затем ваше мобильное приложение загружает ваши файлы на сервер и получает результат анализа для отображения. Поэтому я не думаю, что язык программирования, реализующий его, имеет большое значение. Ниже приведены несколько реализаций AF.
Java: http://www.redcode.nl/blog/2010/06/creating-shazam-in-java/
Я знаю, что вопрос задан давно, но ясный ответ может помочь кому-то другому.
библиотеки Echoprint (веб-сайт: echoprint.me/start) помогут решить следующие проблемы:
PS: Для более музыкальных функций вы можете проверить список API здесь.
Если вы хотите внедрить Fingerprinting самостоятельно, вы должны прочитать документы, перечисленные в качестве ссылок здесь, и, вероятно, посмотрите на musicip-libofa в коде Google
Надеюсь, это поможет;)
Похоже, Shazam может помочь.
В Интернете есть несколько статей об этом, в том числе этот, который я прочитал некоторое время назад.
Использование техники Shazam для анализа обеспечит отличную отправную точку для сравнения по бокам.
Мне стало интересно, и я нашел другое решение в Java над кузницей. yo может извлечь код из SVN.
http://sourceforge.net/projects/comparisong/
дайте ему взглянуть и сообщите мне, если бы это сработало для вас.
веселит
Это может быть довольно интенсивно Mhz.
Детали DSP находятся в хорошо известном тексте:
Я также думаю, что вы можете попробовать выбрать несколько секунд с обеих звуковых дорожек, изменить их по амплитуде и уменьшить шум с помощью фильтра полосы пропускания и попытаться использовать коррелятор.
например, вы можете взять 5-секундный образец одного из thwo и сделать его скольжением по второму, вычисляя кросс-корреляцию для любого сдвига. (будьте осторожны: если вы возьмете слишком маленький пашет, вы можете иметь высокую корреляцию, если не выполнить его, и вы уменьшите побочный эффект из-за кручения сигнала и перекрестной корреляции). После yo может собрать массив с результатами перекрестной корреляции и получить индекс максимуна.
Затем вы должны установить экспериментально вверх, чтобы решить, когда вы принимаете pachet равным b. это изменится в зависимости от качества аудиодорожки, которую вы сравниваете.
Я внедрил средство для получения и отличия преамбулы в беспроводной связи. Мой script на самом деле выполняется в Matlab. если вы заинтересованы, я могу попытаться найти общую часть и отправить ее вам.
Это был бы слишком длинный код, который будет вставлен hene на форуме. если вы хотите, просто дайте мне знать, и я пошлю его к вам как можно скорее.
веселит