Слушайте и распознавайте

2 августа, 12:00

У Яндекс.Музыки появился бот для Telegram. Он умеет угадывать мелодии — пусть не с трёх нот, но с нескольких секунд. Если вам понравилась музыка, которая играет в магазине или кафе, запустите бота, зажмите кнопку с микрофоном и удерживайте её 5–10 секунд. Бот послушает композицию, сообщит вам название и исполнителя и пришлёт ссылку на трек на Яндекс.Музыке.

Несмотря на то, что бот только запустился, у него длинная предыстория. Возможно, вы помните, что когда-то угадывать мелодии умело мобильное приложение Яндекс.Музыки. За это отвечала созданная в Яндексе технология распознавания музыки — о том, как она работает, мы несколько лет назад подробно рассказывали в нашем блоге на «Хабрахабре».

Как анализируют звук

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

Спектрограммы составляют как для записанного фрагмента, так и для всех треков из базы. Затем сигнатуры фрагмента-образца сравниваются с сигнатурами известных системе треков.

Технология хорошо себя показала, но у неё были ограничения. В частности, не всегда получалось распознать трек, записанный в шумных условиях. Оживлённый разговор, собачий лай, гудки машин, хлопнувшая дверь — всё это сильно повышало вероятность ошибки. А самое главное — система была устроена так, что с подобными ошибками было трудно бороться.

По сути, задача распознавания музыки сводится к выделению и сравнению сигнатур — признаков, по которым можно понять, что записанный фрагмент относится к тому или иному треку. В первой версии распознавалки мы выделяли признаки по набору правил. Это работало, но не всегда: правилами невозможно описать всё разнообразие искажений, которые могут быть на записи.

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

Встречаются как-то раз две нейронных сети (подробнее про альбом Neurona)

Наш музыкальный бот сейчас способен распознавать несколько миллионов треков из базы Яндекс.Музыки. Он пока работает в тестовом режиме и иногда даёт маху — но чем чаще вы его используете, тем реже он будет ошибаться. Добавить бота в Telegram можно по этой ссылке, а рассказать о своих впечатлениях от общения — в комментариях к этому посту.

20 комментариев
Планируется расширение кругозора бота за пределы Яндекс.Музыки?
Егор Филиппов
Сотрудник Яндекса2 августа, 14:30
Yuri,
да. В интернете много самого разнообразного контента (в том числе, конечно, и музыки), а умение понимать его — одна из сильных сторон Яндекса. 
Смогарёв Кирилл
2 августа, 18:10
Егор Филиппов,
Вы большие молодцы!!! Посоветуйте хорошего UX.
masha.gorbochyowa
19 ноября, 19:14
Егор Филиппов,
Да! В интернете много всего
А аналогичный on line инструментарий есть? Я имею в виду, есть ли аналогичная возможность на сайте Яндекс.Музыки? Или где-то ещё, не в боте?
Егор Филиппов
Сотрудник Яндекса2 августа, 14:33
rvtis,
Да, будет.
Бот — всего лишь удобное средство быстрой доставки технологии конечному пользователю с целью проверить ее радотоспособность. Конечно, мы планируем использовать её в своих продуктах.
alexandrborzilov
3 августа, 07:18
в яндекс музыке слишком мало треков жанра - драм-н-бэйс, только из-за этого отдал предпочтение гугл музыке. Вам еще далеко до уровня гугл и мне очень жаль( 
Наполняйте свою фонотеку не только Егорами Кридами, но интересным экспериментальным саундом. Желаю успехов! 
P.S через месяц загляну посмотреть на изменения
Ну всё, надеюсь вы вернёте такую функцию в приложение Яндекс.Музыки на Android. А то поддержки шазама Вашей музыки не дождёшься 
Немного потестил. Так значит у меня на Яндекс Музыке есть отдельный плейлист, куда я загружаю треки, которых нет на Яндекс Музыке и из всех 16 треков определить смог только 2-3. Больше удивило, что трека Ahrix - Nova нет на Яндекс Музыке, но Ваш бот её определил и даже кинул ссылку на одну большую аудиозапись, которая вроде бы как является миксом и представляет из себя склейку нескольких треков и Ahrix - Nova услышал самой первой. Оставляю ссылочку на несколько своих скриншотов https://yadi.sk/d/IYIhYoxr3Lfs6v
Нужный бот. В последнем обновлении Яндекс.Музыка убрали функцию распознавания? я не нашел..
Если кинуть боту целый аудиофайл, то он не распознает его. Печалька. Мне скинули песню с кривым названием; хотел исправить, подумал, кину боту, а он даст  нормально название. увы.

Он даже "Yesterday" не распознал
Егор Филиппов
Сотрудник Яндекса7 августа, 19:00
khomaldi,
бот не настроен распознавать целые треки, но и с этой задачей временами справляется. 
Комментарий удалён
petermura,
Извините, но вы бред написали. Ботами это в телеграмме называется. И вряд ли человек, который не знает, что такое боты будет читать блог Яндекса.
petermura,
Вы вообще знаете, что такое боты? И где они применяются? Вы месседжером хоть раз пользовались!?
Комментарий удалён
petermura,
Ну и? Тот, что не знает что это не посещает такие блоги. А тот кто знает, поймёт, ведь телеграмм сам их называет БОТАМИ
Для пк будет ?
Мастер Груша х_х
12 августа, 11:49
А почему бы не заменять текст сообщения «обрабатываю» на результат вместо отправки следующего сообщения?
Влад Платонов
12 августа, 13:45
Когда вы исправите бот @pic ? Там теперь ссылки не сокращаются...
Добавьте этого бота своего прямо в приложение яндекс музыка... не все телеграммом пользуются
Александр Корчагин
18 ноября, 22:31
ЭЭто платный постный