Принцип работы Shazam

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

Каким образом устройство умудряется мгновенно отыскать нужную мелодию среди миллионов вариантов, анализируя лишь краткий фрагмент в шумной обстановке?

Многие полагают, что телефон вслушивается в текст или мелодический рисунок, но это глубокое заблуждение. Технологическое решение куда элегантнее.

Реверс-инжиниринг звуковых волн

Микрофон смартфона оснащен миниатюрной диафрагмой, которая фиксирует воздушные колебания. Эти колебания трансформируются в электрический сигнал, который затем оцифровывается в волновую форму — массив данных, описывающий амплитуду звукового давления в каждый момент времени.

Аналогичным образом наши барабанные перепонки воспринимают звуковые волны, однако мозг интерпретирует их как звук, в то время как процессор преобразует их в последовательность чисел.

Сама по себе волновая форма малопригодна для идентификации. Даже простое изменение громкости радикально меняет вид графика, хотя трек остается прежним. Кроме того, разные композиции могут иметь схожие волновые представления, а одна и та же песня в разных акустических условиях выглядит по-разному.

Секрет успеха кроется в конвертации волновой формы в более информативный формат. Смартфон разбивает аудио на короткие отрезки и применяет быстрое преобразование Фурье (БПФ). Этот математический метод разлагает сложный звуковой сигнал на составляющие его чистые частоты. Фактически БПФ позволяет выяснить, какие гармоники необходимо объединить, чтобы воспроизвести данный фрагмент.

Комбинируя эти фрагменты, мы получаем спектрограмму — трехмерную визуализацию звука: ось X отображает время, ось Y — частоту, а яркость пикселя соответствует амплитуде данной частоты в конкретный момент.

Как именно работает БПФ?

Любую, даже самую хаотичную волновую форму можно представить как сумму гладких синусоид с различными характеристиками. БПФ служит эффективным инструментом для распаковки аудиоданных в такой спектральный набор. При обработке блока из 1024 сэмплов (около 23 мс звука CD-качества) алгоритм выдает спектр распределения энергии по частотам. Базовая формула дискретного преобразования Фурье выглядит так:

Для каждой частоты k сигнал x[n] накладывается на соответствующую синусоиду; если частота присутствует в исходном звуке, результат суммирования будет значимым, в противном случае — близким к нулю.

Ключевое преимущество БПФ — скорость. Благодаря математическим оптимизациям алгоритм выполняет расчеты с трудоемкостью порядка n log n, что позволяет проводить тысячи операций в секунду прямо на мобильном устройстве. Последовательная обработка спектров формирует итоговую спектрограмму.

Приведенная демонстрация упрощена, так как использует лишь чистые тона. Реальная музыка — это многослойная структура из бесконечного числа частот. Смартфон оцифровывает звук с высокой частотой (обычно 44100 Гц), и каждый сегмент проходит через горнило БПФ для последующего анализа.

Философия «меньше значит больше»

Хранение и поиск по полным данным спектрограммы были бы крайне неэффективны, поэтому алгоритм идет на радикальный шаг: отсекает всё лишнее.

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

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

Впрочем, этот метод «цифровых отпечатков» имеет минус: Shazam плохо справляется с «живым» исполнением (даже качественным), так как спектральный хэш будет отличаться от студийной версии. Современные нейросетевые алгоритмы, напротив, умеют распознавать мелодическую линию независимо от тембра и исполнения.

Связь между точками

Одиночный акустический пик не несет достаточной уникальности. Однако связка из двух точек (например, 1200 Гц и 2400 Гц с временным интервалом в 0,3 сек) — это уже практически уникальный идентификатор.

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

Хэш работает как сжатый код: минимальные изменения во входных данных кардинально меняют хэш. Поскольку система опирается на точные временные и частотные параметры, она идентифицирует конкретную запись, что затрудняет работу с каверами или ремиксами.

Для любой композиции создаются тысячи таких отпечатков, хранящихся в облаке. Возникает вопрос: как при миллиардах записей найти соответствие за долю секунды?

Поиск идеального совпадения

Наивный подход: перебор по композициям

Если пытаться сравнивать клип с каждой песней в базе последовательно, время поиска будет расти линейно O(N), что при современных объемах данных неприемлемо.

Инвертированный индекс: поиск по хэшам

Более рациональный подход — использовать инвертированный индекс. Телефон не ищет «песню», он спрашивает систему: «В каких композициях встречаются эти конкретные хэши?». Это подобно алфавитному указателю: мы сразу находим нужный элемент, не перелистывая книгу целиком.

Такой поиск занимает почти константное время O(1), практически не зависящее от общего размера библиотеки. Даже при наличии миллионов песен количество записей, соответствующих конкретному хэшу, минимально.

Финальный этап — проверка таймингов. Если последовательность и временные интервалы между найденными хэшами в клипе пользователя совпадают с таковыми в эталонной записи, система подтверждает совпадение.

Благодаря высокой скорости работы современных процессоров с числовыми массивами весь процесс занимает считанные мгновения.

Эволюция технологий

Традиционные сервисы (вроде Shazam) делегируют анализ мощным серверам. Это позволяет поддерживать огромные, постоянно обновляемые базы данных.

В то же время, функции вроде Apple Music Recognition или Google Pixel «Now Playing» выполняют распознавание локально. Здесь используются облегченные базы и оптимизированные модели, что обеспечивает приватность и работу офлайн, однако ограничивает размер доступного каталога.

И в том, и в другом случае принцип остается неизменным: отсечение второстепенного и сохранение лишь опорных акустических координат превращает случайный шум в точный поисковый запрос.

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

Основой для данного материала послужила фундаментальная работа Эйвери Ванга An Industrial-Strength Audio Search Algorithm. Настоятельно рекомендую её всем, кто хочет глубже погрузиться в архитектуру систем обработки аудио.

 

Источник

Читайте также