Секретные функции Shazam на Android, о которых вы могли не знать
Shazam — по-настоящему революционное приложение, которое появилось на Android в 2008 году и полностью изменило жизнь многих меломанов. Можно с легкостью представить себе ситуацию, когда где-то поблизости играет классная песня, которую вы слышите впервые. Как узнать ее название, чтобы добавить себе в плейлист? Хорошо, если есть возможность уточнить информацию у человека, включившего трек на своем устройстве. А что, если музыка играет в салоне проезжающего мимо авто?

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

Shazam определит мелодию за пару секунд
Это стандартный вариант использования Shazam. Но у приложения есть масса других функций, позволяющих упростить распознавание, сделав его более удобным. Например, если вы часто не успеваете запустить приложение для определения песни, или музыка играет не на внешнем устройстве, а на самом смартфоне.
⚡ Подпишись на Androidinsider в Дзене, где мы публикуем эксклюзивные материалы
Определить музыку на телефоне
Как только не изворачиваются некоторые люди, чтобы распознать музыку. Например, мне знаком случай, когда человек услышал понравившуюся ему песню во время просмотра сериала на смартфоне. Для ее определения он поднялся с кровати, включил компьютер, запустил воспроизведение нужной серии, отыскал нужный фрагмент и врубил колонки едва ли не на всю громкость, а затем открыл Shazam на телефоне.
Это было, мягко говоря, не самое рациональное решение, ведь существует функция всплывающего шазама. Для ее включения или активации других фишек приложения нужно:
- Запустить Shazam.
- Перейти в раздел «Библиотека».
- Открыть настройки, нажав на «шестеренку».

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

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

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

С этой функцией песни определяются автоматически
Найти песню по тексту
Несмотря на то, что Shazam заточен под распознавание песен по звуку, он позволяет определить музыкальную композицию, если вы успели запомнить только одну строчку из понравившегося трека. В такой ситуации вы можете воспользоваться поиском по тексту:
- Запустите Shazam.
- Нажмите кнопку поиска.
- Введите несколько слов из песни.
- Подтвердите ввод нажатием галочки.

Главное — не ошибиться при вводе текста
Если вы не ошиблись при наборе текста, первой в выдаче Shazam покажет ту песню, в которой содержатся указанные вами слова. При этом не забывайте, что существует множество каверов с одними и теми же словами, но разным звучанием.
❗ Поделись своим мнением или задай вопрос в нашем телеграм-чате
Самые популярные песни
С 2018 года Shazam принадлежит компании Apple. Поэтому нет ничего удивительного в том, что внутри приложения для распознавания музыки интегрирована функциональность стримингового сервиса Apple Music. В частности, здесь есть вкладка «Хит-парады», с помощью которой вы сможете узнать, какие песни сейчас популярны в вашей стране или городе.

С помощью чартов Shazam можно узнать, какая песня пользуется наибольшей популярностью в вашем городе
Также Shazam дает подробную информацию об исполнителях, позволяя прослушивать музыку через приложение для определения мелодий. Наконец, программа делает подборки в зависимости от того, какие треки вы искали в последнее время. Но, чтобы слушать песни целиком, понадобится оформить подписку на Apple Music.
Почему Шазам не работает
В заключение дам несколько рекомендаций на случай, если у вас не работает Шазам на Андроид, или возникли другие проблемы, связанные с этим мобильным приложением. При первом запуске Shazam требует выдать несколько разрешений. Например, на доступ к микрофону. Если его не дать, приложение не сможет угадать песню.
⚡ Подпишись на Androidinsider в Пульс Mail.ru, чтобы получать новости из мира Андроид первым
Кроме того, для стабильной работы функций автошазама и всплывающего шазама необходима выдача разрешений на отображение Shazam поверх других приложений и фоновую активность.

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

Shazam в iOS 14 стал намного удобнее
Моей основной претензией к Shazam всегда была неспособность распознавать трек, звучащий на том же устройстве, на котором установлено приложение. То ли сервис просто не мог одновременно и воспроизводить музыку, и записывать её, то ли разработчики были уверены в том, что если уж пользователь запустил какой-то трек у себя на смартфоне или планшете, значит, он знает и исполнителя, и название композиции, а потому необходимости в распознавании в таком случае попросту нет. Но необходимость, как показывала практика, была, и Apple наконец прислушалась к просьбам пользователей.
Как включить автошазам
С выходом iOS 14 обновление получил и Shazam. В версии 13.25 он научился распознавать треки, звучащие на устройстве с приложением. Во многом эта стало возможно благодаря поддержке функции «картинка-в-картинке». Вот как это работает:
-
себе на iPhone и запустите его;
- Зажмите кнопку запуска и удерживайте её для включения режима автораспознавания;

Автошазам позволяет распознавать треки в фоновом режиме
- Покиньте Shazam и запустите на устройстве трек или видео с треком, который хотите распознать (подойдёт любое приложение и даже диктофонная запись);
- Дождитесь окончания распознавания и найдите трек по предложенной сервисом ссылке на сторонних площадках.
Возможность шазамить треки прямо на устройстве – это очень классное нововведение, которого многим пользователям не хватало очень и очень давно. А тот факт, что Apple прислушалась к их мнению и реализовала соответствующий механизм, заслуживает уважения и самой искренней похвалы. Но, оказывается, автоматическое распознавание можно сделать ещё удобнее, включая его прикосновением к задней крышке вашего iPhone.
Как быстро запускать Шазам
- Запустите приложение «Быстрые команды» и найдите в поиске команду Shazam;
- Добавьте её к списку своих быстрых команд;

Быстрая команда Shazam реально ну очень быстрая
- Перейдите в «Настройки» — «Универсальный доступ» — «Касание»;
- Включите параметр «Коснуться сзади» и назначьте на этот жест быструю команду Shazam.
iOS 14 устанавливают быстрее iOS 12 и iOS 13. Откуда такой интерес и стоит ли обновляться?
С этого момента, когда вы будете слушать какую-то композицию или смотреть видеоролик, в котором заиграет интересующая вас песня, просто коснитесь дважды задней крышки вашего iPhone. В этот же момент начнётся распознавание трека. Правда, учитывайте, что пока управление прикосновениями к тыльной панели работает не самым лучшим образом, а также поддерживает не все модели iPhone. Поэтому, если вы всё-таки хотите протестировать это нововведение, рекомендую для начала проверить его работоспособность и оценить, подходит реализация именно вам или нет.
Автошазам Айфон — как пользоваться
Музыка является частью жизни многих людей. Музыкальное сопровождение ловко становится фоном для тренировок, прогулок и громких вечеринок. Порой некоторые песни хочется слушать взахлеб несколько раз подряд. Но что делать, если ты не знаешь название трека?
Над этим долгое время ломали голову разработчики ПО. В середине «нулевых» появился сервис, распознающий музыку тактом. Пользователю нужно было настукивать ритм композиции, после чего софт определял ее название. Впрочем, подобная технология оказалась далеко не самой точной, и ее популярность сошла на «нет» с появлением Shazam.
Что такое Шазам

Шазам – это специальное приложение, идентифицирующее звуки. Программа позволяет определить трек, исходя из встроенной фонотеке. В процессе ПО накладывает один музыкальный файл на другой, после чего владелец смартфона получает высокоточный результат определения песни.
Shazam доступен на смартфонах под управлением операционных систем Android и iOS, а также на кроссплатформенных компьютерах и планшетах.
Как работает Шазам на телефоне
На самом деле, Shazam является многофункциональным приложением. Его основная функция – определение треков. Поэтому человек, подносящий смартфон к источнику звука, с высокой долей вероятности сможет определить играющую композицию. Впрочем, Шазам обладает и другими возможностями, которые постоянно обновляются.
К примеру, после определения трека программа предлагает пользователю воспроизвести короткий отрывок, чтобы удостовериться в правильном распознавании. Также Shazam способен распознать песню не только по аудио, но и по тексту или названию альбома конкретного исполнителя.
Также после удачного определения владелец смартфона сможет ознакомиться с исчерпывающей информацией о треке. А еще в Шазаме есть собственный чарт, который высчитывает популярность песен, исходя из частоты их распознавания.
Чтобы применить на практике полный функционал Шазама на телефоне, пользователю нужно загрузить приложение. Оно доступно как на Андроид, так и на iOS.
Программа абсолютно бесплатная, но имеет встроенную рекламу, которая практически не раздражает. В Shazam доступны встроенные покупки, связанные с оформлением подписки на различные стриминговые сервисы. От этого можно без проблем отказаться, чтобы пользоваться Шазамом исключительно для распознавания треков.
Как настроить Шазам и определить песню
Разобравшись с принципом работы программы, перейдем к ее практическому применению. Итак, для начала потребуется установиться прогу через магазин приложений. На скриншотах будет представлен алгоритм для Андроид, но и на Айфон он точно такой же.

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

После авторизации будет практически все готово. Последний этап – разрешение Shazam на запись аудио. Без этого распознавание музыки не заработает.

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

Как правило, на распознавание уходит несколько секунд. Так что практически сразу на экране высветится название трека, а также дополнительные опции для ознакомления с текстом или открытием песни через один из предложенных сервисов.

При условии, что была пройдена авторизация в Shazam, композиция сохранится в вашей фонотеке внутри приложения. Поэтому торопиться со скачиванием песни не стоит. Это можно сделать в любой момент, открыв собственную библиотеку.
При определении песен с высоким уровнем баса у Шазама могут возникнуть проблемы. Поэтому не рекомендуется подходить к источнику звука слишком близко.
Как пользоваться автошазамом на Айфоне
В числе дополнительных функций программы особое место занимает автошазам. Она позволяет распознавать песни без открытия приложения и нажатия соответствующей кнопки. Shazam автоматически определит трек и выдаст итоговый результат.
Чтобы активироваь функцию, нужно запустить приложение и перейти в настройки. Перед этим не забудьте пройти авторизацию В противном случае автошазам работать не будет.
Следующий этап – активация ползунка напротив одноименного пункта меню.

Теперь музыка будет автоматически определяться, как только до микрофона будут доноситься посторонние звуки. Но учитывайте тот факт, что работа приложения в фоне очень сильно влияет на заряд аккумулятора. Поэтому с автошазамом Айфон разрядится быстрее, чем без него.
Если в процессе активации функции возникли какие-либо проблемы, рекомендуется еще раз ознакомиться с инструкцией, которая представлена на видео.
Как шазамить музыку со своего телефона
Чаще всего люди пользуются Шазамом, когда находятся в помещениях или на улице, где звучит музыка. Также это может быть телевизор, компактная блютуз-колонка или салон автомобиля. Но что делать, если трек воспроизводится на телефоне? Например, во время просмотра видео на YouTube.
Для этого понадобится активировать еще одну функцию Shazam. Она получила название «Всплывающий Шазам». Ее включение приводит к тому, что значок Shazam появляется на экране смартфона вне зависимости от того, какое приложение используется в данный момент.

Сначала нужно открыть Шазам, перейти в настройки приложения и активировать нужную нам функцию. Теперь можно открыть любую другую программу и для определения трека тапнуть по кружку. Практически сразу на месте символа Shazam появится фотография исполнителя вместе с названием песни.
Как шазамнуть песню с Инстаграма на Айфон
В последнее время все больше интересных музыкальных композиций появляется на просторах Instagram. Пользователи выкладывают свои видео, поверх которых ставят цепляющие песни. К сожалению, название треков указывается далеко не всегда. Но Шазам запросто решит эту проблему.
Чтобы шазамнуть песню в Инстаграме, понадобится:

- Включить в настройках Shazam функцию автошазама.
- Убедитесь, что в верхней части экрана при открытии Instagram появилась панель красного цвета.
- Откройте сторис или видео, а затем дайте Шазаму несколько секунд на прослушивание композиции.
- Ознакомьтесь с полученным результатом в центре уведомлений.
После успешного распознавания песни можно сразу отключить автошазам, чтобы опция не влияла на работу аккумулятора. Также вы можете оставить ее активной для дальнейшего определения музыкальных композиций.
Shazam способен определить не все песни из Инстаграма. Он отталкивается от собственной фонотеки, в которой может не найтись нужного трека.
Почему не работает Шазам на Айфоне
Случаются ситуации, когда столь полезное приложение не работает или функционирует в ограниченном объеме. В связи с этим владельцам Айфонов не удается определить играющую песню. Чтобы исправить ошибку, предлагаем ознакомиться с советами нашего эксперта.
Как работает Shazam? Распознавание музыки на смартфоне для «чайников»
Последний альбом группы Queen с участием легендарного Фредди Меркьюри был записан уже после смерти вокалиста. И в этом альбоме есть одна интереcная песня, собранная буквально по кусочкам из обрывков записей Меркьюри, сделанных незадолго до смерти.
Эта композиция не должна была появиться и никто в Queen даже не думал, что из этих обрывков что-то можно сделать. Но продюсер группы практически самолично собрал всё воедино и создал знаменитую… как же ее… Простите, но название совершенно вылетело из головы.
И что же делать в подобных ситуациях?
Раньше, услышав красивую песню где-нибудь в кафе или на улице, вы могли достать смартфон, запустить приложение Shazam или SoundHound и тут же получить всю подробную информацию. Но сегодня бурный рост технологий позволил нечто большее!
Возвращаясь к забытой песне Фредди Меркьюри, мне достаточно запустить на смартфоне Google Ассистент, сказать фразу «Что сейчас играет?», а затем просто напеть мелодию, которая крутится в голове — «та-да-та-тааааа та-та-та-таааа та-да-та-таааа»:

И буквально через несколько секунд смартфон выдает правильный результат — You Don’t Fool Me группы Queen:

Как это вообще возможно!? Обычно в таких ситуациях отвечают — искусственный интеллект. Но если вам хочется получить настоящий ответ, тогда предлагаю вместе со мной погрузиться в увлекательный мир музыки!
После прочтения этой статьи вы поймете, как именно бездушный процессор смартфона стал еще на один шаг ближе к человеческому разуму. Или, по крайней мере, научился еще лучше его имитировать.
Часть 1. Природа звука
Бессмысленно говорить о том, как работает Shazam или распознавание музыки в целом, если не понимать, что такое музыка и звуки вообще. Поэтому вначале я уделю немного внимания этому вопросу.
Если же вы хорошо в этом разбираетесь, тогда переходите к следующему разделу. Но помните — понять работу Shazam без понимания этих основ будет тяжело.
Итак, звук возникает у нас в голове, когда воздух стучит по барабанной перепонке в наших ушах. Очень подробно этот процесс я описывал в статье о шумоподавлении или вреде громкой музыки. Так что здесь не будем повторяться.
Сам по себе воздух не может ни ударить по барабанной перепонке, ни сдвинуть с места даже пылинку. Это делают миллиарды молекул, хаотично летающих в пространстве.
Но чтобы они могли что-то или кого-то ударить, вначале нужно хорошенько их толкнуть — в точности как шары в бильярде. Именно это и делает любой динамик. Он движется вперед и назад, толкая молекулы воздуха то в одну, то в обратную сторону.
Мы даже можем отобразить это движение динамика на графике в виде волны:

Чем сильнее динамик отклонится в сторону (или вверх/вниз на графике), тем выше будет волна, а значит звук — громче. То, какую ноту или звук мы услышим, зависит только от того, сколько движений вперед-назад за одну секунду сделает наш динамик.
Если за 1 секунду произойдет 440 движений вперед-назад, мы услышим ноту ля. И не важно, что будет вибрировать 440 раз в секунду — струна гитары, фортепиано или школьная линейка, прижатая одной стороной к столу — мы будем слышать ноту ля.
Вот только если это будет делать динамик, вместо приятного звука мы услышим не очень приятный монотонный гул:
Тогда бы мы услышали точно такой же монотонный неприятный гул, как в примере выше. Что более интересно, совершенно неважно, на каком инструменте мы пытались бы воспроизвести ноту ля (на фортепиано, скрипке, гитаре) — во всех случаях мы бы услышали один и тот же монотонный звук.
А теперь посмотрите в замедленном движении, что происходит со струной в реальности (на примере скрипки):
Такое движение скорее можно схематически изобразить вот так:
И это еще очень упрощенный пример. На самом деле, движение струны гораздо сложнее! Струна вибрирует вся целиком (как показано на первой анимации) и создает звук на частоте 440 Гц (монотонная нота ля). Но также вибрирует и каждая половинка струны, создавая звуки на частотах 880 Гц (половинка в два раза короче целой струны, а значит и вибрирует в 2 раза быстрее, т.е. 880 раз в секунду).
Кроме того, струна вибрирует третями, четвертями и т.д. И каждый участок струны, вибрируя, запускает еще отдельные звуковые волны на частотах в 3, 4, 5 (и так до бесконечности) раз выше основного тона (в нашем примере — нота ля или 440 Гц). Каждая такая вибрация создает свой собственный монотонный звук на более высоких частотах.
Мы называем такие звуки гармониками. То есть, основная гармоника — это частота 440 Гц (если мы говорим о ноте ля), вторая гармоника — это когда струна будет вибрировать половинами, т.е. звук на частоте 880 Гц, третья гармоника — 1320 Гц (440*3) и так далее.
А теперь добавьте к этому еще и вибрацию корпуса инструмента, например, скрипки. Ведь струна жестко закреплена на корпусе и ее вибрация также приводит к вибрации всего инструмента. Эти вибрации в свою очередь зависят от породы дерева, толщины корпуса и его формы.
Каждая такая вибрация добавляет к нашему ансамблю звуков еще и свои монотонные писки на разных частотах.
Именно эти дополнительные частоты/ноты/звуки, вызванные особенностями колебания струны/корпуса и создают уникальный тембр каждого музыкального инструмента.
Мы можем даже самостоятельно создать звук похожий на пианино или гитару, просто взяв монотонный гул, который я приводил выше, и добавить к нему еще различные монотонные пищалки, только на более высоких частотах и с разной громкостью.
От того, насколько громко (и как долго) будет звучать каждая дополнительная частота и зависит тембр инструмента.
Реальная звуковая волна
Вы наверняка не раз видели звуковую волну какого-то реального звука и она совершенно не похожа на все эти красивые графики волн, которые встречаются в статьях, например, такую:

В реальности звук «выглядит» скорее так:

Но как это понимать? Где здесь красивые привычные волны? Как хотя бы понять частоту этой звуковой волны? Напомню, частота — это количество волн за секунду. К примеру, на синем графике чуть выше мы видим частоту 8 Гц или 8 волн за секунду. А на втором графике вообще отсутствуют какие-то повторяющиеся узоры. Почему?
Ответ на этот вопрос уже дан чуть выше. Ни один инструмент не создает только одну звуковую волну на одной частоте. В этом случае мы бы слышали монотонный гул. Но так как на основной тон накладывается еще десяток-другой частот, график полностью искажается.
Вот, к примеру, у нас есть основная частота 440 Гц (нота ля):

Струна будет создавать другие частоты, первой из которых станет 880 Гц (это вторая гармоника или 440*2). Такая частота будет получаться, когда две половинки струны будут вибрировать отдельно. И выглядеть вторая волна (880 Гц) будет уже так:

То есть, мы видим, что количество волн увеличилось вдвое (440 Гц и 880 Гц). Но две волны не будут путешествовать по воздуху отдельно, они сольются в одну. И какой же она будет?
Какие-то пики одной волны совпадут с впадинами другой и немного погасятся, в каком-то месте пики двух волн наложатся и она станет еще выше (громче). В общем, вместо двух волн разной частоты мы получим одну волну такого вида:

Глядя на эту волну, мы даже можем легко себе представить, как именно будет двигаться динамик, чтобы воспроизвести этот звук.
Вначале он максимально отклонится вперед, толкая молекулы на нас, затем назад до состояния покоя (прямая серая линия или 0 по оси Y — это состояние покоя), затем немножко вперед (маленький зеленый горбик на графике), после чего резко назад, втягивая воздух обратно (зеленая линия идет вниз, ниже серой полоски). Затем динамик снова вытолкнет весь воздух вперед (максимальная горка на графике) и так далее.
Естественно, чем больше разных частот будет создавать струна своим колебанием, тем сложнее окажется финальный «рисунок».
Таким образом, реальная звуковая волна — это результат наложения сотен волн различной частоты. Оттого она и выглядит так сложно.
На этом мы, пожалуй, и остановимся. Этих знаний должно хватить для понимания основной темы.
Часть 2. Как работает Shazam и любая другая технология распознавания музыки
Если я попрошу вас напеть какую-то музыкальную композицию, что именно вы споете? Будете ли вы учитывать басовую партию или партию ударных инструментов? А если речь идет об оркестровой музыке, в которой одновременно могут звучать десятки музыкальных инструментов?
Конечно же, вы просто напоете основную мелодию, игнорируя всё остальное. И что самое удивительное, я без проблем пойму, о чем идет речь. Даже если до вашего исполнения слушал эту композицию только на хорошей акустике в высоком качестве.
То есть, мы интуитивно можем сократить очень сложную и красивую музыку до нескольких простых нот. Точно так же работает и технология распознавания музыки. Вот только у смартфона нет интуиции и в этом его проблема.
Для бездушной железки даже самая прекрасная мелодия ничем не отличается от рёва мотора или простого шума ветра. Поэтому мы должны создать алгоритм, который бы привил смартфону чувство прекрасного. Этим и займемся!
Шаг 1. Анализируем частоты
Чтобы Shazam или любой другой сервис мог хоть что-то сделать с музыкой, он должен для начала ее «понять». То есть, вместо сложного и бессмысленного графика, вроде этого:

Наш смартфон должен увидеть, какие конкретно частоты звучат в каждый момент времени. Другими словами, он должен получить музыку в том виде, в котором она была до того, как все частоты смешались в один поток и направились к звукозаписывающей аппаратуре на студии.
К примеру, вместо сложной волны от нажатия клавиши фортепиано, в которой смешались монотонные звуки на частотах 440 Гц, 880 Гц и 1320 Гц, нам нужно получить эти частоты отдельно и узнать громкость каждой из них:

Это как если бы я показал вам цветное пятно и сказал, чтобы вы назвали, какие основные цвета и в какой пропорции я смешивал, чтобы получить этот уникальный цвет.
К счастью, нам не нужно ломать голову над этой задачей, так как ее успешно решил французский математик еще в 1807 году! Так появилась функция под названием преобразование Фурье.
При помощи этого математического метода мы получаем из сложной волны набор всех частот, из которых она состоит, а также амплитуду (громкость) каждой из них.
После этого у смартфона появляется спектрограмма. Это такой график, который по оси Y показывает конкретную частоту, а по оси X — время. То есть, мы можем видеть, какие частоты и насколько громко звучат в каждый момент времени:

Так как у нас только две оси (X и Y), то громкость мы отображаем цветом. Чем ярче цвет — тем громче звучит эта частота.
К примеру, на спектрограмме выше мы видим, как где-то на 9-й секунде (по оси X) очень громко заиграли все инструменты или все частоты (красная вертикальная линия). А где-то на 31-й секунде частоты свыше 1500 Гц вообще пропали, то есть, в этот момент они не звучат в нашей композиции:

Согласитесь, в таком виде работать с музыкой гораздо проще и понятнее, чем смотреть на бессмысленный график ломаной линии. Здесь мы можем, к примеру, убрать какой-то дефект на частоте 10 000 Гц (какой-то лишний звонкий писк). Ведь мы увидим яркую полоску сверху, которую можно удалить, а затем снова сложить все частоты в один звук, но уже без удаленной частоты.
Теперь давайте подытожим. На первом шаге смартфон переводит записанный фрагмент мелодии в спектрограмму. Но пользоваться ею не получится. Ведь помимо мелодии, здесь присутствуют и посторонние звуки (шум улицы, кафе или разговоров, низкое качество микрофона и пр.).
Кроме того, в этой спектрограмме очень много информации. Смартфону она не нужна, как и нам не нужно знать все партии каждого инструмента, чтобы напеть фрагмент мелодии. И это приводит нас ко второму шагу.
Шаг 2. Создаем карту созвездий
Первое, что мы сделали для облегчения спектрограммы, это записали звук в режиме моно (стерео нам ни к чему), а также обрезали все частоты свыше 5000 Гц (или 4000 Гц — в зависимости от сервиса или алгоритма).
Естественно, качество звука сильно упало, так как мы слышим частоты до 15-20 тысяч герц (в зависимости от возраста) и эта информация есть в каждом музыкальном произведении. Но для распознавания музыки эти частоты совершенно не нужны. Основная мелодия находится гораздо ниже (в пределах 100-2000 Гц):

На этой картинке мы видим, что основной диапазон голосов и музыкальных инструментов (насыщенная темная часть каждой полоски) легко помещается до 1000 Гц, а уже гармоники уходят до предела слышимости.
А теперь начинается самое интересное! Алгоритм начинает анализировать полученную спектрограмму и искать на ней самые яркие области в каждый момент времени. Другими словами, он определяет, какие частоты (можем для простоты называть их нотами) звучат наиболее громко в конкретный момент времени.
Давайте возьмем нашу спектрограмму и отметим белыми точками такие «основные» частоты или ноты:

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

Теперь это своего рода уникальный отпечаток конкретной композиции. В Shazam его называют картой созвездий. Это примерно то, что делает наш мозг, когда мы хотим напеть сложную композицию — выделяет самые главные ноты.
Эта карта созвездий буквально показывает следующее:
- На 1-й секунде самые громкие частоты — это 512 и 2048 Гц
- На 5-й секунде самая ярко выраженная частота — 512 Гц
- На 30-й секунде композиции наиболее выражены частоты 1800 Гц и 4100 Гц
- И так далее
Помимо того, что мы колоссально сократили размер композиции, этот процесс естественным образом удалил все лишние звуки, так как на записи именно основная мелодия будет наиболее ярко выражена. Также мы удалили все гармоники, так как они практически всегда звучат тише основного тона.
Такую карту приложение создает на смартфоне еще до отправки данных на сервер Shazam. То есть, смартфон не передает звук.
В свою очередь компания также не хранит миллионы музыкальных композиций на своих серверах для сверки данных. Она пропустила каждую песню через этот алгоритм, чтобы получить ее «отпечатки». Они-то и хранятся на серверах.
Точнее, не совсем они…
Шаг 3. Убиваем главного врага — время
На данном этапе мы столкнулись с довольно серьезной проблемой. Предположим, вот это карта созвездий полноценной композиции на сервере Shazam:

Но человек даже теоретически не сможет каждый раз начинать записывать фрагмент интересующей его музыки с самого начала. Он может записать маленький кусочек где-то в середине композиции или за несколько секунд до конца песни.
В итоге, на смартфоне появится вот такая карта:

Если вы внимательно посмотрите, то увидите, что это фрагмент той же песни, что показана на карте чуть выше. Только в оригинале эти частоты (ноты) встречаются примерно с 19-й по 26-ю секунды, а здесь — примерно со 2-й по 9-ю.
Получается, смартфон передает серверу, что он услышал композицию, у которой на 5-й секунде ярко выражены 3 частоты: 510 Гц, 800 Гц и 1600 Гц (на графике по оси Y указаны только несколько частот, поэтому я называю частоты примерно).
Если сервер начнет искать у себя в базе данных композицию, у которой на 5-й секунде встречаются такие же основные частоты, то он может выдать любой результат, но только не правильный. Так как в оригинале эти частоты встречаются примерно на 22-й секунде.
А если не искать частоты с привязкой ко времени, то среди нескольких миллионов композиций может найтись сотня таких, в которых просто где-то встречаются 3 указанные частоты.
Нужно избавиться от привязки ко времени, сохранив при этом привязку ко времени! Хотя это и кажется нелогичным на первый взгляд, решение получилось весьма элегантным.
Вместо списка частот (нот) с привязкой к конкретной секунде, мы берем одну любую точку на карте и связываем ее с несколькими другими точками. Например:

То есть, мы взяли опорную (главную) точку O (на 19-й секунде) и связали ее с несколькими другими точками (частотами/нотами) — a, b и c.
Под словом «связали» я лишь подразумеваю следующее. Мы берем две частоты и разницу во времени между ними. То есть, если мы говорим о связи O->A, тогда это две частоты: 515 Гц (точка O) и 1600 Гц (точка A), а разница во времени между ними составляет 3 секунды (точка A на 22 секунде минус точка O на 19 секунде).
Вот и всё! То есть, вместо конкретных частот с привязкой к определенному времени, мы храним информацию о том, как связаны конкретные частоты между собой. Например, сохраняем информацию о том, что в определенной композиции звук на частоте 1600 Гц начинается спустя 3 секунды после звука на частоте 515 Гц.
Теперь мы можем передать эту информацию на сервер и он поищет, есть ли у него в базе такая мелодия, в которой прозвучала частота 515 Гц, а затем ровно через 3 секунды был звук на частоте 1600 Гц.
Конечно, мы передаем не одну «связку частот», а множество. И какие-то пары будут встречаться в разных композициях, особенно если это ремикс популярной песни. Но Shazam или любой другой сервис выдаст в качестве результата ту песню, в которой таких совпадений было больше всего.
Размышления вместо выводов
Только что мы рассмотрели базовый принцип работы любого сервиса по распознаванию музыки. Конечно, у вас могло остаться множество вопросов, так как я хотел раскрыть тему в общих чертах, чтобы она была понятной самому широкому кругу читателей.
Например, не совсем понятно, по какому принципу алгоритм выбирает опорные точки, от которых затем строит связи с другими частотами.
Ответа на этот вопрос у меня нет, так как Shazam не раскрывает свои алгоритмы в таких деталях. Возможно, компания выбирает для каждого момента времени первую по счету точку (счет ведется снизу вверх слева направо) и связывает ее с несколькими рядом стоящими точками.
Кроме того, я не рассказал о том, как именно передаются и хранятся такие записи. Для этого используются хеши. Но само понятие хеш-функции настолько интересное и важное, что мне не хотелось использовать его без подробного и понятного объяснения. А это бы заняло еще больше места в статье и усложнило восприятие информации.
Также мы коснулись только алгоритмов, без упоминания нейросетей. А именно последние используются Google Ассистентом для определения мелодии, когда человек просто напевает или насвистывает мотив песни.
В этом случае также создаются уникальные «отпечатки» каждой песни, только затем добавляется еще один важный этап. Когда Google создала базу «отпечатков», для каждой такой песни были собраны «отпечатки» простых мелодий, напетых обычными людьми.
Затем нейросеть обучили находить оригинал по плохому неточному отпечатку, полученному с напетой человеком мелодии. Когда нейросеть прошла обучение на тысячах примеров, теперь она способна самостоятельно сопоставлять отпечаток напетой мелодии с отпечатком оригинала на серверах Google.
Более подробно о том, как работают нейросети и что такое обучение нейросетей, мы рассказывали в отдельной статье.
Алексей, глав. ред. Deep-Review
P.S. Не забудьте подписаться в Telegram на наш научно-популярный сайт о мобильных технологиях, чтобы не пропустить самое интересное!
Как бы вы оценили эту статью?
Нажмите на звездочку для оценки
Внизу страницы есть комментарии.
Напишите свое мнение там, чтобы его увидели все читатели!
Если Вы хотите только поставить оценку, укажите, что именно не так?
Что такое 10 нм, 7 нм или 5 нм в смартфоне? Техпроцесс для «чайников»
Динамик в экране смартфона. Как работают технологии Huawei Acoustic Display и Samsung Sound on Display
OLED-дисплеи: в чем разница между AMOLED и Super AMOLED? Чей экран лучше — Apple или Samsung?
Камера смартфона для «чайников» №2. Фокусное расстояние. Ох уж эти миллиметры…
Что такое энергия? Или таинственная материя, которую создают гаджеты
Беспроводная зарядка смартфонов. Ответы на самые интересные вопросы
Как на самом деле работает шумоподавление (ANC) в наушниках
ЭКГ на смарт-часах для «чайников». Как на самом деле работает эта функция?
Полно музыки которая не определяется…та,которой нет в инете
А почему шазам не может некоторые песни распознавать в последнее время?
Спасибо, очень интересно! А упоминанием хеш-функций вы меня заинтриговали Буду с нетерпением ждать статьи по ним!
Очень интересно!
Правда, на мой абсолютно дилетантский взгляд, этим все не заканчивается. Скорее всего, помимо позиции во времени для каждой частоты также записывается и ее длительность — иначе бессмысленно выстраивать связь между точками на карте. А в случае напевания со словами, подозреваю, используется и распознавание голоса для сравнения с базой данных текстов песен
Что касается длительности звучания частоты, такая информация не используется, так как она буквально уничтожит весь алгоритм. Мы используем именно дискретные точки без длительности.
Ведь чтобы записать длительность частоты, нужно, чтобы эта частота в течение, например, нескольких секунд была наиболее ярко выраженной в записи, т.е. самой громкой. Но так не бывает. Продолжительность звука практически всегда подразумевает его затухание со временем. То есть, мы 100% не получим точную длительность каждой «яркой» частоты.
Добавьте к этому затуханию шум или дефекты записи (мы же не в студии пишем, а на смартфон в шумной кафешке). Кроме того, мы не анализируем музыку непрерывно, а делаем «снимки» каждый определенный промежуток времени.
Что касается связи между точками, мы скорее не связь выстраиваем, а записываем координаты точек, только не относительно привязки ко времени, а относительно других точек (опорных).
Вот смотрите. Возьмем точку A из нашего примера. У нее такие координаты A[515;1600;3]. Они означают буквально следующее: частота 1600 Гц появляется на карте спустя 3 секунды после частоты 515 Гц. Это жесткая привязка к координатам. Именно эту точку мы закодируем в виде строки и отправим на сервер. Shazam будет искать композицию в которой просто есть частота 1600 Гц, появившаяся спустя 3 секунды после частоты 515 Гц. Не важно, сколько звучала частота 515 Гц или 1600 Гц. Важно только совпадение координаты точки A.
Shazam также смотрит на порядок следования точек. В нашем примере точка C (со своими координатами) следует после точки A. В оригинале такие точки должны также идти в таком же порядке (не важно, с какой секунды, главное — в том же порядке).
Благодарю за ответ!
Тем не менее, мне решительно не понятно, почему информация о длительности частоты должна рушить алгоритм. Определенная частота вполне может быть выражена определенный промежуток времени, например, когда исполнитель тянет ноту. Это не значит, что больше нет жесткой привязки, просто она теперь относится к началу звучания, так что длительность звучания никак не ломает алгоритм, а наоборот, дополняет.
Считаю нужным пояснить, почему мне видится это важным:
Если вы напоете мелодию гугл-ассистенту, то вы явно не попадете идеально ни в ноты, ни в их длительность, ни в темп, ни во временное положение частот относительно друга согласно имеющейся «таблице» для песни. Поэтому, очень сомнительным выглядит факт успешного распознавания без использования информации хотя бы о длительности нот.
Нам следует разделить метод распознавания мелодии как это делают сервисы Shazam или SoundHound и то, что сделала недавно Google. Во втором случае используется машинное обучение. И там тяжело о чем-то говорить конкретном, не зная реальных подробностей от разработчика. Google заявляет, что делает «отпечатки» мелодии, как и Shazam, но как точно эти отпечатки делаются — не сообщает.
Однако в чисто алгоритмическом определении (без нейросетей), длительность звучания частоты не используется. Приведу еще такие аргументы для наглядности:
1. Начиная запись мелодии в кафе в любой момент времени, мы нарушаем совпадение по длительности звучания многих частот. Например, в оригинале есть звучание частоты 440 Гц в течение 5 секунд, а мы начали запись на 4-й секунде звучания этой частоты, получается, она будет звучать у нас всего 1 секунду вместо 5-ти секунд, как в оригинале. То же касается и окончания записи по среди песни (обрывается длительность всех частот). Когда же мы напеваем что-то, то всегда начинаем с логического начала основной мелодии.
2. Условно говоря, на каждую секунду мы можем выделить не более, скажем, 8 основных точек (частот). Если на второй секунде появляется очень яркая (громкая) частота, то нет никакой гарантии, что на третьей секунде не появятся еще 8 более ярких частот. В этом случае, алгоритм запишет их, «оборвав» длительность яркой частоты, появившейся на второй секунде (или же придется делать очень много контрольных точек, что увеличивает вероятность шума). Когда мы говорим о напевании или насвистывании мелодии, такой проблемы нет, так как здесь нет никакой «полифонии», т.е. не звучат никакие инструменты, а идет мелодия в очень узком частотном диапазоне, где есть только основной тон и обертона, которые всегда будут тише основного тона.
3. Более того, в реальности алгоритм анализирует не конкретную частоту, а делает это «пачками» из частот/нот. Есть такая штука, как психоакустика, т.е. как мы воспринимаем громкость тех или иных звуков. Так вот, басы (до 100-200 Гц) мы воспринимаем гораздо хуже, чем средние частоты. Поэтому в музыке их искусственно повышают, чтобы звучание казалось нам сбалансированным. И если бы приложение анализировало только частоты, то все «контрольные точки» уходили бы на низкие частоты, например, на ритм, что давало бы массу ложных срабатываний. Поэтому идет группировка частот и фильтрация, в общем, всё для того, чтобы на каждый промежуток времени определить только те точки, в которых больше всего звуковой энергии. Рассчитывать или определять еще и длительность звучания этих частот не просто бессмысленно, а опасно. Смысл ведь не в том, чтобы собрать как можно больше информации о музыке (повторюсь, чем больше данных, тем дольше и труднее анализ и выше вероятность погрешности из-за шума), а наоборот — сократить ее до самого минимума, оставив только то, что на 100% соответствует каждой песне.
4. Опять-таки, Вы говорите « когда исполнитель тянет ноту». Если бы мы определяли мелодии в студии звукозаписи, с этим бы не было никаких проблем. Но где гарантия, что в момент, когда исполнитель тянет ноту, рядом кто-то не заговорит или не возникнет другой короткий посторонний шум, заглушив именно ту частоту, на которой тянулась нота, тем самым оборвав для алгоритма длительность этой ноты?
Повторюсь, самый элегантный способ — это найти несколько самых яркий точек и записать, как связаны между собой эти яркие точки, т.е. через какой промежуток времени одна яркая точка появляется после второй. Протяженность этих точек не только вносит дополнительные проблемы (самая главная из которых — правильно в шумном месте определить протяженность каждой частоты), но и не добавляет по сути ни надежности, ни скорости поиска (больше информации = больше времени на сравнение).