Найти в Дзене
УМАПАЛАТА

Как Шазам угадывает песню за 5 секунд

Давным-давно на заре эпохи смартфонов, многие не могли надивиться на то, как работает приложение Shazam. То самое, которое распознает любую песню по нескольким секундам звучания. Тогда это выглядело в самом деле необычно, а особо недоверчивые даже подозревали, что на другом конце приложения расположился миллион несчастных индусов, которые наспех искали нужную песню (такого ведь не может быть, правда, Amazon?) Как же оно работает? Звук песни попадает в микрофон телефона, после чего происходит его оцифровка с частотой выборки, обычно 44.1 кГц (44,100 замеров в секунду). Так звуковая волна превращается в цифровые данные. Запись может содержать шумы: разговоры, звуки машин, но алгоритм справляется с этим. Дальше в игру вступает его величество «быстрое Фурье преобразование», о котором мы обязательно поговорим отдельно. Оно нужно, чтобы создать частотную спектрограмму песни. Для этого звук разбивается на короткие интервалы, например, по 0,1 секунды. У каждого интервала свой спектр частот, по

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

Тогда это выглядело в самом деле необычно, а особо недоверчивые даже подозревали, что на другом конце приложения расположился миллион несчастных индусов, которые наспех искали нужную песню (такого ведь не может быть, правда, Amazon?)

Как же оно работает? Звук песни попадает в микрофон телефона, после чего происходит его оцифровка с частотой выборки, обычно 44.1 кГц (44,100 замеров в секунду). Так звуковая волна превращается в цифровые данные. Запись может содержать шумы: разговоры, звуки машин, но алгоритм справляется с этим.

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

Для этого звук разбивается на короткие интервалы, например, по 0,1 секунды. У каждого интервала свой спектр частот, показывающий, какие частоты (низкие или высокие) присутствуют и с какой интенсивностью.

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

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

У каждой песни набор пиков будет свой. Поэтому набрав их в достаточном количестве (для этого секунд 5 обычно хватает) и сравнив с библиотекой, программа выдает ответ.

И никакого ручного труда.