2010-01-14 8 views
13

Я хочу сборки нечто похожее на Tunatic или Midomi (попробуйте их, если вы не уверены, что они делают), и мне интересно, что алгоритмы, я должен был бы использовать; Идея у меня есть о работах таких приложений, как-то так:распознавание музыки и обработка сигналов

  1. имеет большую базу данных с несколькими песнями
  2. для каждой песни в 1. снижения качества/скорости передачи в битах (64 кбит например) и вычислить звук «хэш»
  3. есть звук/отрывок из музыки, которую вы хотите определить
  4. на песню в 3. снижают качество/битрейт (опять 64kbps) и вычислить звук «хэш "
  5. , если 4. звук хэш в любом из 2. звуковых хешей возвратить совпавшие музыку

Я, хотя снижения качества/скорости передачи битов из-за шумов окружающей среды и различия кодирования.

Я нахожусь на правильном пути здесь? Может ли кто-нибудь предоставить мне любую конкретную документацию или примеры? Мидори, похоже, даже признает hum's, это довольно впечатляюще! Как они это делают?

Имеются ли звуковые хэши или это что-то, что я только что нарисовал? Если они это сделают, как я могу их вычислить? И что еще более важно, как я могу проверить, child-hash находится в father-hash?

Как мне поступить создание аналогичной системы с Python (возможно, встроенный модуль) или PHP?

Будут оценены некоторые примеры (желательно на Python или PHP). Заранее спасибо!

+1

Связанные вопросы: [Звуковая библиотека распознавания образцов/код] (http://stackoverflow.com/questions/2817663/sound-sample-recognition-library-code), [Акустический отпечаток отпечатка пальца?] (Http: // stackoverflow .com/вопросы/2462410/акустико-отпечатков пальцев с открытым исходным кодом). Хороший обзор wiki от MusicBrainz (http://wiki.musicbrainz.org/Fingerprinting). – Albert

+0

Вот отличный вариант для Python: https://github.com/worldveil/dejavu – lollercoaster

ответ

10

Я работал на периферии классной рамки, которая реализует несколько методов поиска информации в музыке. Я вряд ли эксперт (редактирование: на самом деле я нигде не близок к эксперту, просто чтобы уточнить), но я могу сказать, что быстрое преобразование Фурье используется повсеместно с этим материалом. Анализ Фурье дурацк, но его применение довольно прямолинейно. В основном вы можете получить много информации об аудио, когда вы анализируете его в частотной области, а не во временной области. Это то, что дает вам анализ Фурье.

Это может быть немного не по теме из того, что вы хотите сделать. В любом случае в проекте есть несколько интересных инструментов, а также просмотр исходного кода для самой основной библиотеки: http://marsyas.sness.net

+0

Как я могу определить, кто-то свистнет на iPhone-микрофон ..? – iDeveloper

1

Его было время, так как я последний раз обрабатывал обработку сигнала, но вместо понижающей дискретизации вы должны посмотрите на представления частотной области (например, FFT или DCT). Затем вы можете сделать хэш и искать песню с этой последовательностью.

Трудная часть делает этот поиск быстро (возможно, некоторые статьи по поиску генов могут представлять интерес). Я подозреваю, что iTunes также обнаруживает инструменты для сужения поиска.

3

MFCC, извлеченный из музыки, очень полезен при поиске сходства тембралов между песнями. Это чаще всего используется для поиска похожих песен. Как указал Даррен, Марсиас - это инструмент, который можно использовать для извлечения MFCC и поиска похожих песен путем преобразования MFCC в одно векторное представление.

Помимо MFCC, Rhythm также используется для поиска схожести песен. Есть несколько работ, представленных в Mirex 2009

, который даст вам хороший обзор различных алгоритмов и функций, которые наиболее полезны при обнаружении сходства музыки.

+0

+1 для MFCC – keyboardP

1

Я прочитал статью о методе, в котором определенная служба поиска музыкальной информации (без названий имен) делает это, вычисляя короткое преобразование Фурье по образцу аудио. Затем алгоритм выбирает «пики» в частотной области, то есть временные положения и частоты, которые являются особенно высокой амплитудой, и использует время и частоту этих пиков для генерации хэша. Оказывается, хэш имеет удивительно мало столкновений между различными образцами, а также противостоит примерно 50% потери данных пиковой информации .....

11

Я занимаюсь исследованиями в поиске музыкальной информации (MIR). Основным документом по снятию отпечатков пальцев является тот факт, что Хайцма и Калкер в 2002-03 годах. Google должен получить это.

Я прочитал раннюю (действительно раннюю, до 2000 года) белую книгу о методе Шазама. В этот момент они только в основном обнаружили спектрально-временные пики, а затем хэшировали пики. Я уверен, что эта процедура развилась.

Оба эти метода определяют сходство музыки на уровне сигнала, то есть оно устойчиво к искажениям окружающей среды. Я не думаю, что это хорошо работает для запроса по ходу (QBH). Однако это другая (все же связанная) проблема с различными (но связанными) решениями, поэтому вы можете найти решения в литературе. (Слишком много, чтобы назвать здесь.)

Процедуры ISMIR свободно доступны в Интернете. Вы можете найти ценный материал там: http://www.ismir.net/

Я согласен с использованием существующей библиотеки, такой как Marsyas. Зависит от того, чего вы хотите. Думаю, здесь здесь незаменим. Простые материалы могут быть написаны на Python самостоятельно. Черт, если вам нужны такие вещи, как STFT, MFCC, я могу написать вам код.

+1

Я знал, что что-то забыл: сходство на уровне ноты часто достигается путем вычисления хромаграммы. Для каждого временного интервала вы вычисляете, сколько C, C#, D, D #, ..., A #, B находится в сигнале. Следовательно, хромаграмма имеет размерность 12 по времени. Многие методы сходства используют это. –

+0

Спасибо за ваш вклад. Не могли бы вы написать мне код? Мне сложно найти это, какой-то примерный код будет полезен. –

+0

@Steve Tjoa можно определить звук Whistle ..? – iDeveloper

1

В настоящее время я разрабатываю музыкальную поисковую систему с использованием ActionScript 3. Идея анализирует аккорды в первую очередь и маркирует кадры (в настоящий момент она ограничена mp3-файлами), где частота изменяется кардинально (мелодия изменяется и игнорирует шумы) , После этого я делаю то же самое с входным звуком и сопоставляю результаты с инвертированными файлами. Соответствующий определяет подходящую песню.

Для метода Акселя, я думаю, вам не стоит беспокоиться о том, является ли это пением или просто напевая, поскольку вы не реализуете программу распознавания речи. Но мне интересен ваш метод, который использует хэш-функции. Не могли бы вы объяснить это мне?

1

MusicBrainz project хранит такую ​​базу данных. Вы можете делать запросы к нему на основе отпечатка пальца.

Проект существует уже давно, и в прошлом он использовал разные отпечатки пальцев. См. here для списка.

Последний отпечаток, используемый ими, - AcoustId. Существует библиотека Chromaprint (также с привязками Python), где вы можете создавать такие отпечатки пальцев. Вы должны подать его необработанные данные PCM.

Недавно я написал библиотеку в Python, которая выполняет декодирование (с использованием FFmpeg) и предоставляет такие функции, как генерация отпечатка AcoustId (с использованием Chromaprint) и других вещей (также для воспроизведения потока через PortAudio). См. here.

4

Я недавно портировал мое аудио знаковой системы на основе отпечатков пальцев на Python:

https://github.com/dpwe/audfprint

Он может распознавать небольшие (5-10 сек) выдержки из справочной базы данных 10БА тысяч треков, и достаточно устойчивы к шуму и искажениям каналов. Он использует комбинации локальных спектральных пиков, подобных системе Шазама.

Это может соответствовать только одному и тому же треку, так как он опирается на тонкие детали частот и временных разниц - он даже не будет соответствовать различным требованиям, конечно же, не распространяется на версии или гудения. Насколько я понимаю, Midomi/SoundHound работает, сопоставляя гулы друг с другом (например, через dynamic time warping), а затем имеет набор человеческих связей между наборами гул и намеченной музыкальной дорожкой.

Соответствие гуру прямо на музыкальный трек («Query by humming») - постоянная исследовательская проблема в поиске музыки, но все еще довольно сложно. Вы можете увидеть тезисы для набора систем, оцененных в прошлом году на MIREX 2013 QBSH Results.

0

Для запроса напевая функции, это больше, чем усложняет аудио решения дактилоскопии, трудные приходит от:

  • как эффективно собирать базу данных мелодии в реальном приложении? многие демо-системы используют midi для наращивания, но стоимость midi-решения крайне недоступна для компании.
  • Как бороться с временной дисперсией, например, гул пользователя может быть быстрым или медленным. использовать DTW? да, DTW - очень хорошее решение для работы с временными рядами с временной дисперсией, но это слишком дорого для загрузки процессора.
  • как сделать временные ряды индекс?

Это демо-запрос, созданный проектом с открытым исходным кодом, https://github.com/EmilioMolina/QueryBySingingHumming, может быть ссылкой.

 Смежные вопросы

  • Нет связанных вопросов^_^