Как работают программы для распознавания музыки: разбираемся на примере Shazam

- КиТ :: Будь в СЕТИ!

Еще 30 лет назад определить понравившуюся песню можно было только в том случае, если вы запомнили слова или мелодию, чтобы потом напеть ее знакомым. Сейчас существуют другие способы, и один из лучших – приложение Shazam. Разбираемся, как работает эта программа и ее аналоги. Какие еще приложения умеют распознавать музыку? Что такое Shazam Shazam (он же Шазам) – бесплатный инструмент для распознавания музыки, который работает на всех современных платформах, включая iOS, Android, macOS и WatchOS. Также существует расширение Shazam для браузера Chrome.

Компания-разработчик была основана в 1999 году, и за это время ее приложение научилось узнавать более 11 млн треков. Для работы Shazam требуется доступ к микрофону устройства, чтобы проанализировать песню, а затем сравнить ее со своей базой. Время распознавания мелодии не превышает 10–30 секунд.

Описание основного алгоритма работы Shazam для распознавания музыки опубликовал его создатель Эвери Ли Чунь Вонг (Avery Li-Chung Wang) еще в далеком 2003 году. Мы постараемся объяснить его простыми словами.

Алгоритм работы Shazam

Любой человек, если попросить его напеть музыкальную композицию, автоматически выделит из нее основные мотивы без учета басов и ударных инструментов. Получается, что даже достаточно сложная мелодия будет сокращена всего до нескольких нот. Такая же задача стоит и перед программой, которая должна распознавать песни. Однако для этого ей приходится использовать достаточно сложный алгоритм.

Перед определением названия песни сервис должен ее «услышать». Для этого программа преобразует музыку в другой вид. Вместо сложной звуковой волны, которую можно представить в виде не слишком понятного ни человеку, ни компьютеру графика, ей нужны отдельные частоты и громкость каждой.

Решить такую задачу сервису позволяет математический метод, известный как преобразование Фурье. Он позволяет получить из сложной волны набор отдельных частот с амплитудами. Результатом становится спектрограмма – график зависимости громкости от времени.

Создание спектрограммы – только начало процесса распознавания. Потому что кроме мелодии в звуковой волне могут присутствовать и посторонние звуки – уличный шум, помехи от микрофона, голоса окружающих людей. Кроме того, спектрограмма содержит лишние данные, для удаления которых приложение подвергает ее анализу – то есть определяет для каждого момента времени частоты с максимальной громкостью.

Условно можно сказать, что Шазам отмечает точки на графике. Точное их количество неизвестно, но результатом обработки становится компактный и аккуратный отпечаток – «карта созвездий». Например, на первой секунде выбираются частоты 512 и 1024 Гц, на третьей – 2048 Гц, на тридцатой – 1800 Гц и т.д.

Удаление лишних звуков делает размер композиции минимальным, а основную мелодию – ярко выраженной. Карта созвездий передается на сервер Shazam для сравнения с другими «отпечатками». Благодаря ее небольшому размеру ускоряется передача данных для экономии ресурсов сервиса и трафика пользователя.

Завершающий этап определения требует решения еще одной проблемы. При распознавании на сервер попадает часть композиции – причем, как правило, не с сначала, а через несколько секунд или даже минут после старта песни. Сравнивать данные становится сложнее – сервер может найти вместо одной мелодии целую сотню «похожих».

Чтобы избежать проблем, необходимо избавиться от привязки частот к конкретному времени. Вместо этого учитывается другая связь. Например, частот 515 Гц и 1600 Гц, период времени между которыми составляет определенное количество секунд. При сравнении учитываются именно эти «пары», что делает вероятность ошибки минимальной. Конечно, совпадения могут встречаться сразу в нескольких композициях – но сервис выбирает ту мелодию, где их больше.

  1. Дождаться, пока микрофон уловит мелодию. Значок на экране при этом будет пульсировать.

Если мелодия была распознана, информация об этом сохранится на экране «Моя музыка». При отсутствии подключения к интернету приложение все равно создает уникальную «карту созвездий» и уже после восстановления связи сравнивает ее с базой данных. При невозможности определить композицию она удаляется из списка ожидания и нигде не сохраняется.

После определения можно получить не только информацию о треке, но и его слова, а также ссылку для прослушивания на YouTube или Apple Music. Также приложение показывает список других популярных песен исполнителя и автоматически воспроизводит отрывок найденной мелодии, чтобы пользователь мог убедиться в корректности поиска.

На iPhone кнопку Shazam для запуска распознавания можно добавить прямо в пункт управления – то есть шторку. Для этого надо зайти в настройки смартфона, выбрать «Пункт управления» и нажать на плюсик напротив функции «Распознавание музыки».

Историю определений на айфоне можно сохранить в iCloud. У владельцев смартфонов на Android тоже есть возможность сохранения – но после создания учетной записи на сайте сервиса shazam.com/myshazam. После этого доступ к информации о распознанных за все время треках будет доступен с других устройств. Также историю можно будет восстановить, если вы случайно удалите Шазам с телефона.

Какие еще приложения умеют распознавать музыку?

Чтобы распознать музыку на телефоне, не обязательно пользоваться программой Shazam. Несмотря на то, что она считается самой популярной, удобной и эффективной при определении треков, сегодня существует немало других вариантов.

Google. Есть два способа, как распознавать мелодии с помощью сервиса Google. Первый – через одноименное приложение. Установка понадобится только при использовании iOS, на устройствах с ОС Android поисковая система используется по умолчанию. Откройте приложение Google, нажмите на значок микрофона и выберите опцию «Найти песню». Второй метод – с помощью Google Ассистента. Для этого надо вызвать его фразой «Окей, Google» и задать вопрос «Что это за песня?» После того, как Google найдет нужную мелодию, ее можно будет послушать в Deezer или YouTube Music, а также посмотреть музыкальный клип на YouTube. Кроме того, сервис сразу отобразит результаты поиска по названию композиции.

Яндекс.Музыка. Сервис российского разработчика тоже умеет распознавать песни – однако он выдает результаты поиска внутри своего приложения, без ссылок на сторонние стриминговые площадки. Самый простой способ запустить распознавание – зажать иконку приложения на рабочем столе, дождаться появления всплывающего меню и выбрать «Распознать музыку». После определения трека Яндекс добавит его в плейлист «Распознано».

SoundHound. Приложение, позволяющее определить название песни, прослушать ее или купить с помощью Spotify, Apple Music или YouTube. Для поиска достаточно нажать оранжевую кнопку на главной странице программы. Есть возможность просмотра истории предыдущих поисков, текстов песен и видеороликов из клипов.

Musixmatch. Крупнейшая библиотека текстов, среди функций которой – искать композиции по названиям, исполнителям, отдельным строкам и звукам играющих рядом мелодий. И даже переводить слова песен с иностранных языков.

Deezer. Французский стриминговый сервис, позволяющий искать мелодии в базе данных, которая включает более 70 млн треков. Функция SongCatcher дает возможность распознавать композиции по звуку. Можно получать доступ к названиям песни, альбома и имени исполнителя. Приложение станет хорошей альтернативой Шазаму, если вы используете Deezer как основной сервис для прослушивания музыки.

ПодпискаБудь в СЕТИ! Новости социальных сетей - всегда актуальное
 
Группы: ВК | OK | Tg