EchoPrint — открытая система распознавания музыки

    Наверняка многие из вас слышали и знают про системы идентификации музыки вроде TrackID, Shazam, MusicBrainz или онлайновой Audiotag.info, позволяющие по записанному отрывку песни узнать ее название. Все они в достаточной степени хороши, но имеют общий недостаток — закрытый код и, соответственно, ограниченную сферу применения. TrackID вы можете использовать только на телефонах Sony Ericsson, Shazam — тоже только на телефонах, хотя и на более обширном списке платформ, а Music Brainz вообще неясно, работает ли вообще.

    Ребята же из компании Echo Nest, решили, что распознавание музыки должно быть таким же доступным миру явлением, как электронная почта или DNS :), и выпустили своё детище полностью под MIT License. А детище, надо сказать, у них очень серьёзное — еще бы, если основателями компании являются доктора наук из MIT Media Lab .

    Тот зверьфункционал, который они выпустили на свободу, не ограничивается только распознаванием музыки по записанному отрывку, но и позволяет делать такие вещи, как поиски дубликатов музыки, массовое распознавание и заполнение тэгов в музыкальных коллекциях, проверка аудио/видео на содержание того или иного материала, синхронизация коллекций из различных музыкальных пространств (iTunes <-> Last.fm <-> Spotify, например) и много чего еще.


    Как это работает?


    Вкратце — на стороне клиента запускается кодогенератор, формирующий уникальный отпечаток записанной части песни, и отправляет его на сервер на опознание.

    Клиент

    Клиент, он же echoprint-codegen, поставляется в виде кроссплатформенной библиотеки и бинарника. Вот типичный пример использования — проверить 20 секунд из mp3 файла, начиная с 10-й секунды:
    echoprint-codegen ./recorded.mp3 10 20 | \
    curl -F "query=@-" http://developer.echonest.com/api/v4/song/identify?api_key=MY_API_KEY
    {"response"{"status"{"version""4.2""code"0"message""Success"},
    "songs"[{"tag"0"score"66"title""Creep""message""OK (match type 6)",
    "artist_id""ARH6W4X1187B99274F""artist_name""Radiohead""id""SOPQLBY12A6310E992"}]}}

    А если вы хотите использовать это в своей программе, то тоже несложно:
    Codegen * pCodegen = new Codegen(const float* pcm, uint numSamples, int start_offset);
    string code = pCodegen->getCodeString(); 

    Как становится ясно, прикрутить это к своему любимому языку/проекту совсем несложно — лишь бы фантазии хватило. Кстати, для самых активных ребята устроили даже конкурс с призом в 10000$ на самое интересное и новаторское музыкальное приложение, использующее возможности EchoNest API в полной мере. А API у них довольно обширное, связывающее музыкальные композиции по всем мыслимым и немыслимым связям — от основного географического расположения и года рождения артиста до уровня танцевальности композиции.

    Для получения цифрового отпечатка песни используется собственный алгоритм, The Echo Nest Musical Fingerprint aka ENMFP, который компания давно и успешно использует для других своих сервисов — вроде поиска похожих песен, подсчета BPM и прочего. Сами ребята заявляют, что они собаку съели именно на анализе песен (не просто звуков, а именно музыкальных композиций).
    Про API подробнее можно узнать на портале для разработчиков.

    Сервер

    Код серверной части также находится в открытом доступе на github, так что, при желании, можете поднять собственный сервер — Echo Nest даже выложили в общий доступ несколько гигабайт уже обработанных данных. Движок сервера основан на базе поискового сервера Apache Solr, в качестве базы данных используется Tokyo Tyrant.

    Пока что данных на их сервере сравнительно немного — около 150 000 песен, но по заявлениям компании, они импортируют многомиллионную коллекцию 7digital, активно сотрудничают с MusicBrainz (который даже поднял свой echoprint-сервер для интеграции со своими данными), а также предоставляют функционал для загрузки новых песен пользователями.

    Использование



    Разумеется, одной из основных функций использования остается все таки распознавание услышанной музыки. Услышал хорошую песню, достал телефон, нажал кнопку — и узнал кто поёт. Я быстренько написал echoprint-клиент для Maemo/Meego, и в ходе тестирования пока могу сказать следующее:
    • некоторые исполнители распознаются с очень большой вероятностью, а некоторые через раз
    • 20 секунд это минимальный период записи. увеличение времени записи повышает шанс распознавания
    • громкость почти не влияет на результат — алгоритм достаточно хорошо нормализирует звук
    • Metallica распознается лучше, чем Бетховен :-D
    • Иногда ошибается :(

    Более того, они даже утверждают, что алгоритм позволяет найти похожие версии — вроде Live выступлений или похожих каверов.
    Пока что, конечно, рано называть echoprint убийцей Shazam'а, но это лишь дело времени. Такие проекты, будучи выпущены на свободу, начинают развиваться на порядки быстрее.

    Выводы

    Главное, что мне хотелось бы донести, помимо простого обзора этого замечательного open-source проекта — это тот факт, что компания действительно создает нечто важное (не для всех конечно). Это не просто «ещё один алгоритм обработки музыки», это целая энциклопедия музыки, позволяющая найти, описать и объединить все когда либо выпущенные композиции. В отличие от того же Shazam, в базе данных Echo Nest может быть информация и о малоизвестных группах — хоть свои собственные песни загружайте. Кроме того, один из проектов, под кодовым названием Rosetta Stone, призван объединить различные пространства идентификаторов — например, той же MusicBrainz ID или Napster Artist ID.

    Вобщем, своего рода музыкальная Wikipedia, которая благодаря открытости обещает вырости в нечто поистине грандиозное.
    Поделиться публикацией
    Ой, у вас баннер убежал!

    Ну. И что?
    Реклама
    Комментарии 37
      0
      вы забыли про audiotag.info
        +2
        И не знал про него :)
        Спасибо, добавил в пост.
          +3
          Еще midomi.com, распознаёт даже когда я просто напеваю мелодию своим бездарным голосом
            0
            Спасибо. Подозреваю, сейчас еще сюда несколько подобных ссылок с закрытыми сервисами набросают :)
            Это еще раз подтверждает, что масса людей в этом мире разрозненно дублируют свои усилия, при этом оставаясь в тени и ничего не меняя.
              +4
              забыл еще про soundhound работает на iphone android nokia в нем тоже можно напевать и еще есть несколько сервисов: Tunatic Jaikoz Tag Editor который есть для Linux, Windows и Mac OS X.
              Если поднапрячся думаю еще парочку можно найти.
                +1
                Кажется soundhound как раз через midomi работает
              +2
              Напеваете говорите? Это слишком просто! Вот тут: www.bored.com/songtapper/ можно мелодию просто пробелом настучать :)
                +1
                Я знаю, но мне оно ни разу не помогло, а midomi часто выручает
            0
            Распознает, пожалуй, лучше всех.
              0
              Очень удивило и порадовало, что он понимает flv, но мне это, увы, не помогло.
              Столько сервисов перепробовал и все не могу определить исполнителя.
              Может тут хоть кто-то поможет…
              www.youtube.com/watch?v=YUern_C_2wI
                +1
                Это какой-то гимновый хурдстул, опознать такое сложно, ибо такого тысячи, и этот — далеко не самый лучший пример.
                Ищите что-то релевантное, к сожалению я не слушаю сего много, поэтому помочь не могу.

                Для примера вот:
                www.youtube.com/watch?v=uNeeFqIuk9w
                  0
                  Спасибо хотя бы за какую-то информацию.
                  0
                  Попробуйте обратиться к автору видео.

                  *некропостер* детектед
                    0
                    Чето я не понял в чем проблема? Shazam тут же определил, что это Tatanka — GTP. Правда ремикс. www.youtube.com/watch?v=yBdFbK8Ohfo
                    Открытое не всегда лучшее, юный падаван!
                +2
                Music Brainz вообще неясно, работает ли вообще.
                Хотелось бы вступиться:) Music Brainz Picard под виндой работает и неплохо, с год назад она оказалась единственным безглючным и бесплатным вариантом (из штук 30 найденных гуглом), которые можно было поставить на винду и распознать треки с винта, а не заморачиваться с микрофоном, оплатой за непонятно что или зависаниями системы.
                  0
                  Спасибо — я только за, проект ведь мощный. Насколько я понял, у них только клиентская часть открыта, а сам алгоритм и серверная часть проприетарные.
                  Но мне все равно не ясно, если есть клиент под gpl, то почему нигде не видно нормальных реализаций этого дела под все платформы и во всем многообразии? Сам пытался найти хотя бы консольную команду — глухо, и видимо неспроста.
                  • НЛО прилетело и опубликовало эту надпись здесь
                      0
                      Оо, спасибо, попробую. Честно облазил в свое время весь их сайт, и гугл — но так и не нашел.
                      Но и это бинарники. А исходный код доступен?
                      • НЛО прилетело и опубликовало эту надпись здесь
                          0
                          В свое время я искал открытый аналог TrackID.
                          • НЛО прилетело и опубликовало эту надпись здесь
                  +1
                  Отличная новость!

                  Как установить ваше приложение для N900?
                    0
                    Добавлю еще немного функций, потестирую, и выложу в репозиторий — можно будет установить через стандартный диспетчер приложений.
                      0
                      Окей. Не терпится уже попробовать!
                    +1
                    Ещё до кучи…
                    Можно распознавать песни, настучав их ритм клавишей на клавиатуре. Для этого есть онлайн-сервисы:
                    SongTapper — www.bored.com/songtapper/
                    Ритмотека — ritmoteka.ru/
                      +1
                      Сервис отпечатков — коим это и является — штука хорошая. Но если уж говорить о свободных проектах, то это http://acoustid.org/ Полностью поддерживается сообществом (ну и частично zvooq.ru)
                        0
                        Ухты, а вот это уже интересно! Спасибо!
                        0
                        для полноты картины добавлю еще одну ссылку: acoustid.org там же есть консольная утилита для генерации фингерпринтов chromaprint
                          +2
                          Требую QEchoPrint в репозитории! :)
                            0
                            Если в API есть вменяемый счётчик BPM для ломани — я буду счастлив. Полтерабайта драма и брейкбита распарсить — это ништяк.
                            +1
                            Основная ценность того же Shazam — не пропиетарные технологии распознавания (их алгоритм несколько раз воспроизводился и выкладывался в исходниках, что они пытались предотвратить), а в том, что Shazam прикладывает громадные усилия к тому, чтобы в его каталоге была вся музыка ещё _до_ первого публичного воспроизведения. Это, понятное дело, опен-сорсом не решается. Тут скорее нужно движение в сторону open data (фингерпринтов).
                              0
                              Спасибо за информацию и ссылки — очень интересно.

                              Открытые данные вряд ли приживутся в не open-source среде, но в целом согласен.
                              И опять же — я лично уважаю Shazam и считаю, что они большие молодцы — но тем не менее их сфера применения ограничена.
                                0
                                Да, сфера специфическая. Есть ещё громадная область, решения которой не упомянуты в этом топике — компании, которые ведут мониторинг радио- и телеэфира и составляют отчеты правообладателям о прозвучавших там композициях. Там свои задачи и своё понятие «похожести» (высокие требования по скорости распознавания и устойчивости к искажениям). Есть надежда, что обмен фингерпринтами как минимум B2B пойдёт (это необходимо для сопоставления метаданных из разных коллекций, в этом заинтересованы практически все участники рынка).
                              0
                              Странно. что про gracenote ни слова.
                                0
                                Есть еще tunatic
                                  0
                                  Где найти подробное описание теории и алгоритмов распознавания музыки?

                                  Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                  Самое читаемое