Now Playing распознал гимн СССР |
Если вас это заинтересовало хотя бы с точки зрения реализации, то добро пожаловать под кат.
Как и всегда раньше, я предлагаю вам читать описание в оригинале. Там ещё больше информации, но, к сожалению, воды там ещё больше. В общем, для понимания особенностей работы достаточно или прочесть вот эту, или же вот эти две оригинальные: https://venturebeat.com/2017/10/19/how-googles-pixel-2-now-playing-song-identification-works/ и https://www.xda-developers.com/google-pixel-2-now-playing-song-list/
Начнём с того, что Now Playing не является альтернативным интерфейсом к существующим Google Now, Google Misic или какого-нибудь Shazam. Это самостоятельное приложение, вот оно: https://play.google.com/store/apps/details?id=com.google.intelligence.sense Скорее всего его нельзя установить из Маркета на не-Пиксели, а если взять apk, то, скорее всего, оно не будет работать на не-Пикселях.
Так, у нас есть приложение. Оно должно слушать окружение. Да, так и происходит. На современных процессорах есть возможность слушать окружение постоянно без заметного влияния на батарейку. Благодаря этому все современные мобильне устройства могут просыпаться на голосовые команды, а раньше это работало только при включенном экране, либо если телефон был на зарядке.
Теперь у нас есть приложение, у нас есть аппаратная поддержка для постоянной прослушки окружения (где-то с 2014 года точно). Значит нужно слушать. Now Playing слушает окружение каждые 60 секунд и тратит на распознавание буквально несколько секунд, оно действительно быстрее, чем привычное распознавание онлайн (на КДПВ хватило отрезка в 4 секунды!). В итоге может сложиться ситуация, что трек сменился, играет уже другой, а отображается пока всё ещё предыдущий.
Остался оффлайн. Очевидно, что на устройстве есть база треков. Но на сколько она большая? Сколько она весит? Ну, весит она чуть больше 50 мегабайт и является файлом matcher.leveldb, который находится в /system/etc/ambient. Энтузиасты с XDA быстро написали скрипт, который распарсил базу и выдрал названия треков. Получилось более 17 тысяч записей, вот они: http://quinny898.co.uk/resources/pixel-songs/ Впрочем, Google утверждают, что файл этот обновляется по Wi-Fi и учитывает региональные топы.
И я не знаю, как на счёт региональных особенностей в регионе, где Pixel 2 и не продаётся официально, но то, что файл обновляется — это совершенно точно. Как видно всё на той же картинке, у меня распознался гимн СССР, которого раньше в базе не было. А вот гимн России не был распознан. Возможно это что-то должно означать, но я пока не понимаю, что именно.
Теперь осталось показать информацию о треке, если пользователь тапнул на уведомление. В этом случае открывается Ассистент, который делает запрос в Гугл об уже распознанном треке, вытягия про него чуть больше инфы и на этом всё:
Информация о гимне СССР у Ассистента забавная |
Об Engel Ассистент нарыл гораздо больше информации, включая текст |
Собственно, вот так работает эта магия. Не сказать, что плохо, но всё же чувствую себя немного обманутым. Фичу можно было бы сделать более увесистой и с большими возможностями. И, самое главное, она должна быть доступна на всех современных Android устройствах, а не быть эксклюзивом дорогущего Pixel 2.
P. S.: Фича по умолчанию отключена. Settings → Sound → Now Playing
Комментариев нет:
Отправить комментарий