Несколько минут назад на конференции YaC 2018 мы впервые рассказали о Яндекс.Станции. Это первое мультимедийное устройство с Алисой, которое воспроизводит музыку и фильмы, рассказывает детям сказки, помогает в повседневных делах, а также поддерживает навыки от сторонних разработчиков.
Может показаться, что для создания подобных устройств достаточно взять голосового помощника, добавить к нему простой микрофон из смартфона и спрятать всё это в корпусе недорогой аудиоколонки. На практике перед разработчиками подобных систем стоят серьёзные технологические проблемы, о решении которых в Станции мы и расскажем сегодня читателям Хабра. Вы также узнаете, что именно представляет из себя технологическая платформа Yandex.IO, на основе которой и создано устройство.
В посте о создании Алисы мы рассказывали о развитии компьютерных интерфейсов: от командной строки до управления мышью и голосом. Чем более доступным становился компьютер, тем быстрее развивались технологии, упрощался способ взаимодействия с устройством.
С другими домашними устройствами развитие шло схожим образом. Возможно, вы помните советские чёрно-белые телевизоры, в которых даже для переключения каналов нужно было прикладывать ощутимые физические усилия. Теперь же во многих моделях мы можем переключать каналы голосом.
Мы верим, что пришло время научить домашние устройства общаться на языке людей, а не кнопок. Именно эта идея легла в основу голосового помощника Алиса и нашего первого устройства на её основе – Яндекс.Станции.
Говорит и показывает
Станция – первое устройство Яндекса с голосовым помощником Алиса. Она подскажет погоду, установит будильник, расскажет новости, прочтёт сказку ребёнку или поможет с другими повседневными делами. Но ценность нашего устройства не только в этом. Когда мы начинали работать над Станцией, то поставили перед собой задачу создать домашнее мультимедийное устройство, возможности которого не ограничивались бы навыками голосового помощника. Эта задача включала в себя два важных требования:
1. Станция должна воспроизводить треки из Яндекс.Музыки или с любого другого устройства через Bluetooth.
2. Станция должна находить и воспроизводить видео: как из базы партнёрского контента, так и ролики из сети. Были даже варианты с собственным встроенным экраном, но от них быстро отказались в пользу HDMI-разъема для подключения к любому телевизору.
И всё это – с качественным звуком. Наше устройство должно справляться с аудиодорожкой лучше, чем динамики типичного телевизора (это касается как глубоких басов, так и общей мощности). При этом Станция должна не только хорошо звучать, но и отчётливо понимать речь пользователя. А эти задачи немного противоречат друг другу. И здесь начинается самое интересное.
Расположение имеет значение
Взгляните на картинку выше. Умные домашние устройства часто изображают так, будто они стоят в центре комнаты и воспроизводят звук во все стороны. На фотографиях это выглядит красиво, но в реальности почти никто их так не использует. Устройства, которые должны слышать голос издалека, потребляют значительные вычислительные ресурсы, поэтому работают не от аккумулятора, а от сети. Ближайшие розетки почти ни у кого не располагаются в центре комнаты, поэтому устройства обычно стоят у стен. Это значит, что нет смысла делать устройство с круговым расположением динамиков. И дело не только в экономии.
Если направить часть динамиков в стену, то возникает проблема интерференции звуковых волн, которую пришлось бы компенсировать на уровне софта. Нет лишних динамиков – нет проблемы. Поэтому в Станции мы используем два фронтальных динамика (в том числе для поддержания стереоэффекта), один вуфер и два пассивных излучателя (для глубоких басов). Но даже с их расположением в корпусе не всё так просто.
Обычно и твитеры (высокочастотные динамики), и вуфер направляют в сторону слушателя, чтобы добиться минимального искажения звука. Но в нашем случае вуфер направлен вниз. Почему?
Помните, мы говорили, что Станция должна не только выдавать качественный звук, но и уметь слышать голосовые команды? Человеческая речь – это преимущественно средние частоты (хотя полный диапазон шире: 300-3400Гц). Перед нами стояла задача по уменьшению влияния излучаемого Станцией звука на микрофоны, которые должны улавливать человеческую речь. Одним из решений этой задачи является увеличение «эхо-пути» звука в спектре человеческой речи от динамиков до микрофонов. За средние частоты в обычном режиме Станции отвечает вуфер, поэтому мы направили его вниз. Это увеличивает «эхо-путь», улучшает качество распознавания голоса и незначительно влияет на качество воспроизведения звука.
В предыдущем абзаце вы могли заметить упоминание обычного режима Станции. Если коротко, то речь об уровне громкости. Суммарная мощность всех динамиков в Станции составляет 50 Вт. Для шумной вечеринки этого более чем достаточно. Но при высокой громкости трудно распознать голос пользователя. В индустрии эту проблему решают ограничением громкости. Мы тоже думали над этим вариантом, но, к счастью, решили не портить хорошую акустику ограничениями.
Adaptive Сrossfade
Текущий уровень громкости визуализируется с помощью круговой подсветки в верхней части Станции. По мере увеличения громкости цвет меняется с зелёного до жёлтого и красного. Зелёный и желтый – это условный «обычный режим», при котором Станция хорошо воспроизводит музыку и реагирует на голосовые команды пользователя. А вот красный цвет сигнализирует о высокой громкости. В этом режиме громкость настолько велика, что устройство почти не способно слышать команды пользователя.
В режиме максимальной громкости больше не нужно думать о распознавании речи, поэтому мы отбросили компромиссы и сфокусировались на звуке. Нет, вуфер при этом не разворачивается в сторону пользователя, но мы перенаправляем средние частоты на твитеры. Выше мы называли их исключительно высокочастотниками, но они подобраны так, чтобы при необходимости справляться и со средними частотами (уверенно держат от 2к до 20к Гц). А ещё при высокой громкости Станция переключается в стерео режим, который отключен в обычном режиме из-за своего негативного влияния на качество распознавания речи.
Всё это мы назвали технологией Adaptive Сrossfade, которая, хочется верить, придётся по вкусу поклонникам качественного звука. Кстати, некоторые аудиофилы из нашей команды рекомендуют ещё и внешний кожух снимать, чтобы выиграть пару децибел (да, он съёмный).
Выше мы рассказали о том, как Станция воспроизводит звук. Теперь же мы расскажем о технологической платформе, благодаря которой она понимает пользователей.
Yandex.IO
Динамики – важная часть устройства, но далеко не главная. Станция построена вокруг платформы Yandex.IO, которая включает в себя два компонента. Прежде всего, это главная плата, которая отвечает за «мозги» всего устройства: воспроизводит музыку и фильмы, а также обеспечивает работу Алисы и всех её навыков (в том числе тех, которые уже могут создавать сторонние разработчики с помощью сервиса Диалоги).
Краткая спецификация:
- Quad-core ARM Cortex-A53 @ 1 GHz (12000 MIPS)
- RAM: 1 GB DDR3 SDRAM
- Flash storage: 8 GB eMMC
- WiFi: 802.11 b/g/n/ac, dualband, MIMO 2x2
- Bluetooth: BLE 4.1 with A2DP support
- Video: HDMI 1.4 + CEC. FullHD support (1080p)
- Audio input: 16-channel digital audio capturing (I2S with TDM)
- Audio output: 3-channel digital D-class amplifier 30 W + 2x10 W
Несколько слов о процессоре. Мы выбрали ARM Cortex-A53 не только из-за тяжелой задачи воспроизведения потокового видео, но и для работы с голосом. Со стороны может показаться, что никаких особых нагрузок здесь нет: записывайте весь аудиопоток с микрофона и транслируйте его в облако, где волшебная нейросеть всё распознает. Но это работает не так, а главная плата Станции несёт в себе целый стек технологий, который направлен на улучшение распознавания голоса. И здесь мы переходим ко второму важному компоненту платформы IO.
Микрофонная матрица
Широкая распространённость смартфонов с голосовыми помощниками создаёт иллюзию того, что достаточно взять такой же простой микрофон, встроить его в условный холодильник, который будет прекрасно слышать и понимать ваш голос из любого угла комнаты. Нет, не будет. Чувствительность простых микрофонов такова, что работают они только на небольших расстояниях и в относительно тихих внешних условиях. Существуют профессиональные микрофоны для специальных целей, которые могли бы решить эту проблему. Вот только стоят они сотни долларов, и ни одно пользовательское устройство не потянет такое увеличение стоимости.
В индустрии эту проблему решают с помощью микрофонных матриц. Один простой микрофон не справляется с задачей, но если взять несколько и заставить их работать согласованно, по принципу фазированных антенных решёток, то получим хороший направленный микрофон. Так и в Станции используется микрофонная матрица собственной разработки, состоящая из 7 микрофонов: 1 в центре и 6 по окружности. Причём они подключены к отдельному контуру питания, и когда вы нажимаете кнопку Mute на корпусе, микрофоны физически обесточены.
Но для полноценного голосового управления недостаточно одних лишь микрофонов. Устройство должно уметь отличать шум от речи и понимать команды.
Голосовая активация
Распознавание речи – крайне ресурсоемкий процесс, поэтому работает он только в облаке. Но Станция не может позволить себе отправлять весь окружающий шум в сеть: это ухудшает отзывчивость, потребляет трафик и энергию, провоцирует отключение голосового управления. Поэтому наше устройство начинает слушать и посылать звук с микрофонов на сервер только в том случае, когда пользователь произнёс ключевые слова «Алиса» или «Яндекс». Но как это работает без доступа к сети?
Распознавание ключевых слов построено на технологии Phrase Spotting (голосовая активация). Мы обучаем небольшую нейронную сеть находить в потоке шума конкретные ключевые слова, например «Алиса». Для этого требуется порядка 100 тысяч записей на каждое слово, причём для различных акустических условий (тихая комната, работающий телевизор в фоне, ...). Более того, для Станции нам потребовалось собирать эти записи вновь, а не использовать те, которые остались после запуска Алисы для смартфонов. Причина в том, что образцы голоса должны записываться под конкретное устройство, иначе итоговое качество распознавания будет хромать.
Нейросеть, обученная для голосовой активации, способна распознать лишь несколько слов, но зато работает быстро и встроена в само устройство, поэтому не требует подключения к интернету. Только после того, как Станция «услышала» в звуковом потоке ключевое слово, речь пользователя начинает отправляться на сервера Алисы для анализа запроса и подготовки ответа. Но не сразу.
Распознавание речи
Нет смысла отправлять в облако звуковой поток, записанный с 7 микрофонов. Для начала его нужно очистить от шума и выделить речь.
Алгоритм Direction of Arrival отвечает за определение направления, в котором находится источник речи. Как только направление речи определено, микрофонная матрица «разворачивается» в этом направлении и направляет на него «луч». Технология Beamforming позволяет выделить звук, приходящий с целевого направления, подавляя звуки, приходящие с других направлений. На этом же этапе работают алгоритмы Noise Suppression (шумоподавление) и De-reverberation (устранение реверберации).
Источником звука, мешающим распознаванию речи, может быть и сама Станция во время воспроизведения музыки и фильмов. Казалось бы, излучаемый Станцией сигнал известен и поэтому его можно вычесть из сигнала, поступающего на микрофоны. Но не всё так просто. Этот звук приходит с многократными повторениями и нелинейными искажениями (например, из-за переотражения от стен), и его удаление является нетривиальной задачей. Алгоритм Acoustic Echo Cancelation решает эту проблему.
Все эти алгоритмы работают локально на главной плате платформы IO. Только после того, как сигнал проходит через все этапы очистки и выделения речи, он отправляется на сервера Яндекса для полноценного распознавания нейросетями. Вы можете себе представить, насколько трудоемко их обучить, если для понимания одного слова требуются тысячи записей. Этот процесс постоянно совершенствуется, но нам уже удалось добиться точности распознавания речи, сопоставимой с живым собеседником.
Яндекс.Станция вскоре поступит в продажу — если вы оставите адрес на сайте, мы сообщим, когда это произойдёт. В этом посте мы не стали описывать все продуктовые возможности устройства, а сфокусировались на главных технологических вызовах, которые стоят перед разработчиками умных устройств с голосовым управлением. Хочется верить, что в ближайшем будущем мы сможем попросить Алису включить стиральную машину, купить билеты или даже накормить кота – и она выполнит просьбу. Яндекс.Станция и технология IO – наш первый шаг к этому будущему.
Автор: Тимур Гаскаров