Как работает музыкальная дактилоскопия (для таких сайтов, как Shazam и Lala.com)? - PullRequest
20 голосов
/ 12 января 2010

Моя большая (120 ГБ) музыкальная коллекция содержит много повторяющихся песен, и я пытался отследить следы в надежде обнаружить дубликаты. А так как я майор CS, мне очень интересно, что там делается? Ничто из того, что я делаю, не обладает такой точностью, как Shazam или Lala.com. Как они "хешируют" треки? Я запустил стандартный хэш MD5 для всех своих файлов (26 000 файлов) и обнаружил сотни одинаковых хэшей на разных дорожках, так что это не работает.

Меня больше интересует Lala.com, так как они работают с полными файлами, в отличие от Shazam, но я предполагаю, что оба используют похожую технику. Кто-нибудь может объяснить, как генерировать уникальные идентификаторы для музыки?

Ответы [ 4 ]

10 голосов
/ 18 января 2010

Основным документом по аудиосъемке отпечатков пальцев является работа Haitsma и Kalker в 2002-03 годах.Для каждого кадра аудио он предварительно обрабатывается (различия между временными и частотными диапазонами), а затем сохраняет бинаризованную версию спектра кадра.

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

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

Ознакомьтесь с материалами ISMIR, доступными бесплатно в Интернете.Прикольные вещи.http://www.ismir.net/

5 голосов
/ 12 января 2010

Существует множество алгоритмов акустической дактилоскопии. Вот некоторые из наиболее популярных:

  1. AMG LASSO
  2. AudioID
  3. LibFooID

На самом деле libfooId является открытым исходным кодом, так что вы можете проверить его код в google-code !!

3 голосов
/ 12 января 2010

Взгляните на страницу Акустический отпечаток пальца в Википедии. Он содержит ссылки на некоторые статьи, а также ссылки на реализации (включая открытый исходный код fdmf ).

0 голосов
/ 12 января 2010

После еще нескольких исследований (хотя это и не является окончательным!) Я наткнулся на вики на MusicBrainz.org, где подробно описаны некоторые подходы, которые они используют:

http://musicbrainz.org/doc/Audio_Fingerprint

http://musicbrainz.org/doc/How_PUIDs_Work

...