Ещё со времён появления первых компьютеров со звуковой картой, способных проигрывать mp3, многие пытались собрать свою музыкальную коллекцию на винчестере или СD-дисках.
Поначалу больших проблем с сортировкой не возникало. СD-диски вмещали мало, а жесткие диски, по объёму, далеко их не обгоняли. В коллекцию, как правило, собиралась только хорошо известная любимая музыка. Каждый mp3 файл можно было переименовать и вбить ID3-тэги вручную. Но объёмы винчестеров быстро росли, и покупая новый "огромный" винт, возникало желание "скопировать музыкальную подборку друга целиком", или "по быстрому перекатать себе несколько СD". Но не все программы для "грабления" CD умели опознавать названия треков через CDDB, да и интернет, нужный для этого, был доступен единицам. В результате и появлялись файлы "Track01.mp3" и т.п., в папках с названием "Unknown artist". Естественно, если человек сам помнил, что за CD он переписал, или мог на слух легко опознать знакомые композиции, проблему можно было ещё решить. Но когда, переписанная от друга музыка, содержала незнакомые безымянные mp3, при этом приятно звучавшие, приходилось искать среди друзей тех, кто её мог узнать на слух. Мне лично встречались папки с названием типа "Моя любимая музыка", где лежали просто нумерованные mp3, не содержащие тэгов.
Время шло, винчестеры во много раз выросли в объёмах, и у некоторых людей скопились фонотеки, превышающие 300 или даже 500гб. Такую коллекцию сортировать вручную уже очень проблематично и затратно по времени. При этом в подобных больших коллекциях возникает сразу целый ряд проблем, начиная от полных дупликатов
(байт в байт) и одинаковых mp3, у которых просто вбиты разные тэги, до "безымянных" фонограмм, у которых в отличие от оригинала отрезаны начало/конец, изменена громкость, или которые, возможно, подвергались повторному конвертированию в mp3, после записи в CD-Audio формате.
Так например многие диджеи (из-за того, что до сих пор, большая часть DJ-CD проигрывателей не читают mp3 диски и требуют только CD-Audio), вынуждены резать свежие mp3 в аудио-СD формате. А потом, берут друг у друга эти диски переписать, и, частенько, опять сохраняют в mp3 формате, при этом не заботясь вбивать названия треков с самодельной распечатки (которая может вообще отсутствовать). В результате, скопировав музыку у нескольких диджеев, можно получить у себя в коллекции две разные папки (например "Новый клубняк март 2008" и "Колбасные треки"), при этом они будут содержать одни и те же треки, но отличающиеся по битрейту и длительности (например изза обрезки/добавления тишины между треками). При этом, естественно, файлы могут не содержать названия песни ни в имени файла ни в ID3-тэгах, или даже иметь неправильные тэги (например артист-"Клубняк", название трека-"Дудки"). С проблемой полных или частичных дупов уже давно и успешно справляется множество программ. При этом они используют весь набор частичного сравнения, от совпадения части файла, до частичного совпадения названий треков и данных в ID3-тэгах. Но, до недавнего времени, распознавание безымянных и изменённых mp3 (другой битрейт, громкость, обрезка), возможно было только вручную.
На данный момент такие онлайн-сервисы как YouTube уже озаботились созданием ПО для распознавания контента заливаемого на сайт, чтобы не нарушать авторские права. Производители портативных проигрывателей типа iPod и т.п. озаботились распознаваним музыки, чтобы дать возможность пользователям их девайсов находить и покупать похожую музыку в интернет-магазинах. Независимые софтварные гиганты, запустили свои научно-исследовательские проекты по поиску технологий разнопланового анализа музыки например
Search Inside The Music от
Sun, позволяющие не только находить совпадающие по звучанию мелодии, но и классифицировать их по стилю.
Но оказывается, ещё с 2000го года, медленно но верно, развивались open source проекты акустичесой идентификации, плоды которых доступны рядовым пользователям. Это в первую очередь
. Последний, кстати, успел приобрести больше известности среди "рядовых" потребителей ПО, засчёт того, что в Winamp v5.1x и выше, включен плагин "Predixis MusicMagic" использующий его технологию (ранее компания
). Правда данный плагин позволяет только составить плейлист из похожих композиций, поэтому позднее рассмотрим более функциональную программу
, которая кроме подбора плейлиста похожих по звучанию мелодий, умеет ещё искать дупликаты по звучанию, а так же может опознать мелодии и предложить исправить в них тэги.
Сначала экскурс в историю.
В августе 1999г в г.Александрия штат Вирджиния,
четверо крупных специалистов в разных областях компьютерного анализа, распознавания, индексирования, основали частную компания
Relatable, занявшуюся разработкой ПО на базе нескольких запатентованных ими технологий, основной из которых стала
TRM (Technical Recognizes Music), названная разработчиками "универсальным штрихкодом для музыки". Принцип технологии состоит в обработке множества акустических характеристик мелодии, для создания "акустического отпечатка пальцев" - строки длинной менее одного килобайта. По данным разработчиков, один сервер может находить до 5000 совпадений акустического отпечатка в секунду, обрабатывая до миллиона запросов в сутки. При этом допустима кластеризация. Разработчики
утверждают, что TRM демонстрирует 99,4% точности на миллионах отдельных музыкальных файлов (точность гарантируется при потоке от 96kbps для MP3 и от 64kbps для WMA), а так же 98% при распознавании музыки в потоковом вещании. Уже в августе 2000го года был создан "The Relatable® Engine" - движок, который лёг в основу сайта
musicbrainz.org.
В декабре 2004 проект MusicBrainz был превращен в некоммерческую организацию MetaBrainz Foundation, но и по сей день использует бинарную версию TRM-сервера от Relatable, исходный код которого закрыт. Клиентская библиотека "TunePimp" (свободное ПО) легла в основу официальных клиентов MB Tagger (win32), PicardTagger (win/os x/linux/unix) и многих других. Подробнее о MetaBrainz можно прочитать в Википедии. Некоторые программы пошли далее, например
Magic MP3 Tagger. Для большей скорости и удобства разработчики включили в программу внутреннюю базу "отпечатков" на несколько тысяч самых популярных мелодий, по которой программа намного быстрее ищет совпадения не нуждаясь в интернет-запросах. В случае если совпадений не найдено, делается запрос к интернет-базе.
Но новый шаг в развитии технологии массового распознавания музыки сделала компания Predixis, основанная в 2000ом году. Она разработала новую технологию, позволяющую не только идентифицировать мелодию, выявить дупы, но и подобрать похожую музыку! В 2005г был выпущен клиент и запущен сервер
MusicDNS (который к августу 2006г содержал уже 22 миллиона "отпечатков").
Рассмотрим отличие старой и новой технологий. По старой технологии от Relatable, программа вычисляла создавала "акустический отпечаток" и отправляла на
TRMServer, сервер искал по базе похожий "отпечаток" и возвращал его
TRM ID (уникальный номер), по нему можно было искать дупликаты или запросить информацию с этого же сервера о названии и исполнителе (
MBID). Если в базе "отпечатков" подобного небыло, то сервер для него создавал новый TRM ID и помещал в базу вместе с отпечатком. Недостатки: 1.Необходимо непрерывное подключение к интернету, так как
TRM ID - это просто порядковый номер в базе Relatable; 2.По TRM ID можно было определить только полное совпадение, но не "похожесть".
По новой технологи от Predixis для индентификации и сравнения музыки применяется
PUID (Portable Unique IDentifier) - 128ти-битный (16 байт) индентификатор, который вычисляется непосредственно анализом мелодии и содержит в себе её базовые характеристики. Он сам может служить для определения "похожих" мелодий. При этом PUID может быть как вычислен самой программой, путём долгого математического анализа мелодии, так и получен с сервера, если посланный программой-клиентом "отпечаток" (делается в несколько раз быстрее полного анализа), найдётся в базе сервера. Преимущества очевидны: 1.
PUID несёт информацию о музыке, позволяя искать "похожее по звучанию" 2.
PUID может быть создан самой программой-клиентом или гораздо быстрее получен с сервера по "отпечатку", если он уже есть в базе.
В 2006г компания
Predixis стала называться
MusicIP, клиент переименовали в
MusicIP Mixer. Хорошей новостью 12 марта 2006г, стало
сообщение о партнёрстве
MusicBrainz и
MusicIP, в результате которого поддержка PUID была добавлена в базу
MusicBrainz и в "MusicBrainz' Picard Tagger". Соответственно расширилась база наименований, которые можно получить по PUID.
Отдельной группой стоят прогрммы, которые используют разные комбинации вышеуказанных сервисов и технологий, например Tunatic, которая позволяет записывая мелодию с микрофона, попытаться её опознать (как правило за 5-10сек от вступления). Из минусов - плохо опознаёт классику. Я думаю эта программка достойна того чтобы её опробовать, но этим займусь позднее. Итак вернёмся к
MusicIP Mixer. Сама по себе программа бесплатная, но в ней ограничена длинна подбираемого автоматически плейлиста (максимум 75 песен) и недоступны "Power Tools" (Power Search - расширенный поиск сразу по нескольким параметрам, более детальная классификация классической музыки, регулировка уровня разброса параметров песен в создаваемом плейлисте, функция сравнения музыкальных коллекций и создание плейлистов под разное настроение). Я думаю эти функции для меня ценности не представляют, и не стоят тех $19 что за них просят (крэков кстати пока не нашел).
Скачав и установив версию
1.8.1b/win, я стал "издеваться" разными способами, проверяя на что способна её система определения мелодии и дубликатов. Предварительно конечно "скормил" программе каталог с музыкой на сканирование. Это процесс достаточно ресурсоёмкий. Сразу заметил что мой двухядерный "Intel Core 2 Duo E6300" (1.86GHz x 2), загружен только на половину. Полез в настройки, изменил "Nubmer of threads" с 1 на 2. Теперь проц загрузило на 100%, а процесс сканирования пошел заметно быстрее. Кстати, было замечено, что некоторые фонограммы сканируются секунд 30, а некоторые "пролетают" менее чем за 2 сек. Видимо те мелодии, PUID на которые есть в базе, определяются по акустическому отпечатку, для остальных PUID долго и кропотливо вычисляется. Позднее практика показала, что за сутки обработалось около 9000 песен, это примерно 10сек на одну песню (учитывая что в сутках 86400сек), при этом израсходовалось всего 300кб входящего трафика.
Первое что я сделал, это открыл одну из мелодий в SoundForge, подрезал начало и конец секунд по 5, сделал FadeIn и FadeOut, добавил громкость на 3db с помощью плагина "
Waves L1-Ultramaximizer+"
(этот плагин качественно лимитирует те моменты мелодии, которые после добавления громкости могли перешкалить за "0db", вызвав тем самым "clip" (обрезку), выражающийся зачастую как неприятный треск). В конце итогов я сохранил этот MP3 с другим битрейтом - 128kbps (был 256kbps) с другим именем "111.mp3", и проверил на всякий случай, чтобы в MP3 не осталось тэгов. Подложил файлик в наблюдемую программой директорию, секунд через 30 программа заметила его появление и просканировала. Список дупликатов пришлось закрыть и открыть снова, т.к. прога сама его не обновляет. Несмотря на то, что у "нового" MP3 небыло тэгов, название файла ничего не говорило, были обрезаны и подправлены начало и конец, изменена громкость и форма пиков сигнала, а также понижен битрейт, программа безошибочно дала тот же PUID, что и у оригинала, а так же отобразила в списке дупликатов.
Не смогла она опознать мелодию, только когда я визуально поделил мелодию на 4 равные части и поменял из них вторую и третью местами, а так-же когда подверг фонограмму жестокой компрессии плагином "Steinberg Magneto" (который имитирует запись на бобинный магнитофон с большим превышением уровня записи), при этом график мелодии превратился в одну толстую линию под -2db, без пиков и провалов. Видимо в алгоритме идентификации используется в том числе и временной амплитудный анализ.
Если захотите подчистить свою базу от дупов, будте осторожны, как я уже и писал, "MusicIP Mixer" считает файлы с разной громкостью или подрезанными началом/концом, одной и той же композицией. Перед выбором, какой из дупликатов удалять, советую послушать начало и конец мелодии, обратить внимание на громкость, битрейт и качество звучания.
Программа имеет дополнительную фишку: если с помощью данной программы корректировались теги, или на выделенных файлах была выбрана опция "Archive Analysis", в MP3 файл сохраняется дополнительный ID3-тэг размером менее 1кб, содержащий секции "MusicMagic Data" и "MusicMagic Fingerprint". В случае, если этот файлик будет сканироваться на другом компьютере, где нет базы по сканированным файлам, или он изменит имя/папку, содержащаяся в тэге готовая информация, позволит не сканировать этот файл заново. Помимо вылавливания похожих мелодий и создания плейлистов мелодий, похожих на заданную, программа ещё имеет функцию "Fix Tags" при запуске которой, предлагается отметить галочками предлагаемые исправления для выделенных мелодий и применить их. Ещё есть функция "Discover" -поиск новой музыки, похожей на выбранную, через сайт MusicIP (я думаю, что это пока только зарубежные группы, да и то те, которые раскручивает MusicIP, хотя может это и не так, время покажет). Ещё есть функция "Sync With Winamp", думаю её назначение и так понятно.
В целом впечатление о программе положительное, хотя иногда маленько глючит интерфейс (содержимое столбцов может не соответствовать заголовку столбца), но это не мешает, т.к. столбцы можно тут же произвольно передвинуть. Приятным открытием было, что программа, после того как была "убита" через список процессов, при следующем запуске продолжила скан, будто ничего не произошло.
P.S. После того, когда все мои запасы музыки будут просканированы, и я начну реально приводить в порядок свою музыкальную коллекцию, где более 20000 файлов, возможно появятся нарекания или комментарии