Как работают программы для распознавания музыки: разбираемся на примере 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 Гц, период времени между которыми составляет определенное количество секунд. При сравнении учитываются именно эти «пары», что делает вероятность ошибки минимальной. Конечно, совпадения могут встречаться сразу в нескольких композициях – но сервис выбирает ту мелодию, где их больше.
- Дождаться, пока микрофон уловит мелодию. Значок на экране при этом будет пульсировать.
Если мелодия была распознана, информация об этом сохранится на экране «Моя музыка». При отсутствии подключения к интернету приложение все равно создает уникальную «карту созвездий» и уже после восстановления связи сравнивает ее с базой данных. При невозможности определить композицию она удаляется из списка ожидания и нигде не сохраняется.
После определения можно получить не только информацию о треке, но и его слова, а также ссылку для прослушивания на YouTube или Apple Music. Также приложение показывает список других популярных песен исполнителя и автоматически воспроизводит отрывок найденной мелодии, чтобы пользователь мог убедиться в корректности поиска.
- Определение треков при запуске. Функция включается в настройках программы и позволяет распознавать мелодии сразу после включения Shazam.
- Знакомство с песнями, популярными в мире, стране или городе – с помощью чартов Шазам. Такие рекомендации позволяют узнать неизвестных ранее исполнителей и новые композиции – и, возможно, найти нужную мелодию, если ее не распознало приложение.
- Просмотр истории определенных до этого треков. Для этого следует нажать кнопку Library или вывести список на экран, проведя в открытом приложении пальцем вниз.
На 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 как основной сервис для прослушивания музыки.