Как работает дактилоскопия музыки (для таких сайтов, как Shazam и Lala.com)?
-
20-09-2019 - |
Вопрос
Моя большая музыкальная коллекция (120 гб) содержит много дубликатов песен, и я пытался отпечатать треки в надежде обнаружить дубликаты.И поскольку я специализируюсь на CS, мне очень любопытно, что там делается?Ничто из того, что я делаю, и близко не соответствует точности чего-то вроде Shazam или Lala.com .Как они "хэшируют" треки?Я запустил стандартный хэш MD5 для всех своих файлов (26 000 файлов) и обнаружил сотни одинаковых хэшей на разных дорожках, так что это не работает.
Меня больше интересует Lala.com поскольку они работают с полными файлами, в отличие от Shazam, но я предполагаю, что оба используют схожую технику.Кто-нибудь может объяснить, как генерировать уникальные идентификаторы для музыки?
Решение
Основополагающим документом по звуковой дактилоскопии является работа Хайтсмы и Калкера, написанная в 2002-03 годах.Для каждого кадра аудио он выполняет предварительную обработку (различия между временными рамками и частотными диапазонами), а затем сохраняет двоичную версию спектра кадра.
Эта процедура повышает надежность.Если весь сигнал сдвинут во времени, он все еще работает (по крайней мере, можно вывести нижнюю границу снижения производительности).Он довольно устойчив к шуму окружающей среды.С момента его создания было опубликовано много работ о сходстве музыки низкого уровня, так что однозначного ответа нет.
У вас есть абсолютно идентичные файлы, т. е. сигналы выровнены по времени, разрядность одинакова, частота дискретизации одинакова?Тогда я бы подумал, что такой хэш, как MD5, должен работать.Но если какой-либо из этих параметров будет изменен, то изменятся и хэши.В таком случае процедура, подобная упомянутой ранее, сработала бы лучше.
Взгляните на материалы ISMIR, доступные бесплатно онлайн.Забавная штука. http://www.ismir.net/
Другие советы
Существует множество алгоритмов для акустической дактилоскопии.Вот некоторые из наиболее популярных из них:
На самом деле libfooId имеет открытый исходный код , поэтому вы можете ознакомиться с его кодом в google-code!!
Взгляните на него Акустический Отпечаток Пальца страница в Википедии.В нем есть ссылки на некоторые статьи, а также ссылки на реализации (включая открытый исходный код фдмф).
После еще некоторых исследований (хотя это вовсе не является окончательным!) я наткнулся на wiki по адресу MusicBrainz.org в котором подробно описываются некоторые подходы, которые они используют: