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

Основанная в 1999 году, Shazam старше современного смартфона. В первые дни Shazam пользователи звонили на устройство, которое было похоже на это:

Поиск Shazam может найти соответствие даже в шумной обстановке, такой как бары или ночные клубы, если эта песня уже есть в базе данных Shazam. Запись продолжительностью не менее пяти секунд даст наилучшие результаты. Вы можете начать запись в любой точке песни, и Shazam отправит вам совпадение в течение нескольких секунд. Чтобы служба работала хорошо, Shazam располагает растущей базой данных, содержащей более 8 миллионов песен / аудиофайлов. Если предположить, что средний аудиофайл длится три минуты, воспроизведение каждого из них занимает более 45 лет!

С базой данных такого размера они имеют большой охват, но как Shazam находит совпадение так быстро в такой большой базе данных? Во-первых, настоящие аудиофайлы - это не то, что ищется, когда вы шазамите песню. Вместо этого у Shazam есть аудио-отпечаток для каждого аудиофайла в базе данных. Запись, которую отправляет пользователь Shazam, также превращается в аудио-отпечаток пальца, который позволяет ему сравнивать точно и быстро. Эти аудио-отпечатки пальцев состоят из наборов числовых данных. Если вам интересно, как эта запоминающаяся мелодия Shazam превращается в цифры, следующая информация для вас.

Как работает звук

В своем самом основном определении звук - это вибрирующие частицы. Есть три элемента, которые делают каждый звук уникальным: амплитуда, частота и время. Амплитуда - это величина вибрации, которую мы воспринимаем как громкость звука. Частота - это скорость, с которой возникает вибрация. Частота звука - это то, что мы воспринимаем как высоту звука. Частота измеряется в герцах (Гц), которые показывают, сколько раз звуковая волна повторяется в секунду. Человеческое ухо может слышать звуки в диапазоне от 20 Гц до 20000 Гц. Чтобы дать некоторую перспективу, самая низкая нота на традиционном пианино с 88 клавишами, A0 имеет частоту 27,5 Гц. Частота музыкального тона в каждой октаве увеличивается логарифмически(*равномерно). Другими словами, частота каждой октавы вдвое больше, чем октавы под ней. Например, частота А1 равна 55 Гц, частота А2 равна 110 Гц, а частота А3 равна 220 Гц.

(Иллюстрационная картинка: Samesound). Многие инструменты могут играть одни и те же ноты, но нота на скрипке и одна и та же нота на фортепиано будут звучать по-разному. Эта разница в качестве звука известна как тембр. Тембр звука создается частотами внутри звука, которые выше (повторяются с большей скоростью), чем воспринимаемая высота звука. Эти частоты известны как обертоны. Посмотрите на эту запись, которая начинается с ноты (C4 261,23 Гц) на пианино, за которой следуют все обертоны звука, воспроизводимого один за другим, и заканчивается той же нотой, с которой она начиналась.

Эти частоты обертонов - это то, что дает инструменту свой характерный тембр.

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

Как делается отпечаток аудиофайла

Для создания звукового отпечатка аудиофайл преобразуется в спектрограмму, где ось Y представляет частоту, ось X представляет время, а плотность затенения представляет амплитуду (рис. 1 ниже).

Для каждой секции аудиофайла выбираются самые сильные пики и спектрограмма сводится к диаграмме рассеяния. В этот момент амплитуда больше не нужна (рис. 2 ниже).

Теперь у нас есть все основные данные для сопоставления двух файлов, которые прошли процесс дактилоскопии(*название метода для установления личности по отпечаткам пальцев). Однако сопоставить их можно только в том случае, если пользователь Shazam начал запись с точной миллисекунды, с которой началась песня. Так как это почти никогда не происходит, есть дополнительные шаги для аудио-дактилоскопии. Посредством процесса, называемого комбинаторным хешированием, точки на диаграмме рассеяния выбираются в качестве якорей, которые связаны с другими точками на графике, которые появляются после точки привязки в течение окна времени и частоты, известного как целевая зона (рис. 3 ниже).

 

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

Как найти совпадение

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

При сопоставлении с точечной диаграммой, где ось Y представляет время, в которое хэш появляется в записи пользователя Shazam, а ось X представляет время, в которое хэш появляется в аудиофайле из базы данных Shazam, соответствующие хэши будут формироваться, как диагональная линия (рис. 4 ниже). На гистограмме тех же данных, где ось Y представляет времена смещения, а ось X представляет количество совпадений, будет большой скачок в правильное время смещения (рис. 4 ниже).

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