Станция Дуо Макс. Как мы создавали первую умную колонку Яндекса с экраном
Недавно на YaC 2023 мы показали нашу новую колонку — Станцию Дуо Макс. Это первая умная колонка Яндекса с сенсорным экраном и флагман в нашей новой категории устройств. Дуо Макс предложит пользователям как уже знакомые возможности других Станций, так и новые способы взаимодействия с Алисой.
Под катом — не только подробности об устройстве и наше видение назначения экрана, но и несколько историй разработки. Например, вы узнаете, как экран влияет на акустику устройства и к каким неожиданным изменениям привела возможность повернуть его на 90 градусов. Расскажем про видеозвонки в Telegram и нейросетевой фокус. Ну и закончим пост историей о том, как мы приняли участие в отладке процессора.
Зачем умной колонке экран
Умные устройства с экраном хорошо известны за рубежом, в том числе стараниями таких компаний, как Amazon, Facebook и Google. И не просто известны: согласно исследованию американского рынка, у более чем 25% владельцев умных колонок было хотя бы одно устройство с экраном в домашней коллекции. Хорошо, но для чего нужен экран, если есть голосовое управление?
Мы считаем, что сенсорный экран дополняет взаимодействие с виртуальным помощником и существенно расширяет возможности устройства. Во-первых, теперь ответ можно не только услышать, но и увидеть. Кроме того, ответ на экране может содержать дополнительные полезные детали. Например, можно голосом уточнить у Алисы погоду, а на экране увидеть прогноз с разбивкой по часам. Или посмотреть список всех установленных напоминаний. Или получить быстрый ответ из поиска и в пару касаний изучить связанные факты.
Во-вторых, с помощью сенсорного экрана можно совершать действия, которые не всегда возможно или удобно выполнять голосом. Например, выбрать конкретный трек в плейлисте или цвет для умной лампочки.
В-третьих, никто не отменял и более очевидные видеосценарии: просмотр фильмов и сериалов с Кинопоиска, трансляций ТВ-каналов или контента с YouTube («Алиса, найди на YouTube, как решать линейные уравнения»). Кроме того, устройство с экраном и камерой можно использовать для общения с близкими. В нашем случае — для видео- и аудиозвонков в Telegram. Причём управлять звонком можно как голосом («Алиса, позвони маме»), так и с помощью кнопок на экране.
Итак, мы разобрались, какую роль может выполнять экран. Но как должно выглядеть само устройство? Умные устройства с экраном сильно различаются. Некоторые модели напоминают скорее будильник. Другие — полноценную колонку с дополнительным экраном. Как обычно, всё зависит от того, в каких условиях будет работать устройство и для решения каких задач оно задумано.
Станция Дуо Макс — наше первое устройство в категории умных колонок с экраном. И если уж делать что-то впервые, то сразу флагман, который будет полезен во многих задачах. Мы хотели, чтобы с его помощью искали ответы, планировали день, управляли умным домом, слушали музыку и подкасты, смотрели ролики, фильмы, сериалы, совершали звонки. Для всего этого нужна хорошая акустика и большой, удобный экран. Звучит как «берём уже готовую Станцию и просто прикручиваем к ней сверху дисплей». Жаль, что не всё так просто.
История про экран, который вертится
Начнём с наиболее заметного элемента нового устройства — с экрана. Мы остановились на дисплее в 10,5 дюймов с разрешением 1920×1200 пикселей. Добавили к нему камеру, чтобы можно было совершать видеозвонки. Выбор камеры — это подбор матрицы, объектива, проверка совместимости с выбранным процессором и много-много другого тюнинга. Если с матрицей на 13 Мп всё более-менее понятно, то объектив пришлось повыбирать. Почему это важно? Когда вы звоните со смартфона, то широкий угол не то чтобы нужен (обычно вы плюс-минус один в кадре, а устройство находится на расстоянии вытянутой руки). Станция Дуо Макс — стационарное устройство. Одновременно в кадре может находиться сразу несколько собеседников. А это требует широкого угла обзора. Мы сравнили варианты на 110, 115 и 120 градусов и остановились на последнем. Обычно у оптики на таких углах уже возникает эффект «рыбьего глаза», но в нашем случае он аппаратно компенсируется. Но был и другой нюанс.
Чем дальше вы от камеры, тем мельче для собеседника. Особенно если он видит вас на небольшом экране смартфона. Поэтому мы воспользовались опытом Яндекса в компьютерном зрении и обучили небольшую нейросеть, которая автоматически кадрирует изображение, чтобы в фокусе внимания был человек, а не интерьер. Это позволяет отходить от камеры, не отдаляясь от собеседника. Если в кадре появляются и другие люди, то он автоматически расширяется, чтобы захватить всех. При этом нейросеть живёт и работает на устройстве, то есть видеопоток не отправляется на наши серверы.
Продолжаем говорить про звонки. Представьте ситуацию: кто-то со своего смартфона звонит вам по видеосвязи на ноутбук (или на любое другое устройство с горизонтальным экраном). Обычно это выглядит так: вертикальный видеопоток вписан в горизонтальный экран так, что собеседник выглядит мелко, а по бокам остаётся много чёрного пространства.
Мы так не хотели. И это стало одной из нескольких причин, почему мы решили дать пользователю возможность повернуть экран на 90 градусов (среди других причин: просмотр вертикального видео и возможность вписать в любой интерьер). Экран может быть как в горизонтальной ориентации, так и в вертикальной. И весь интерфейс перестраивается после поворота.
Кстати, угол наклона экрана тоже настраивается.
Если вы подумали, что сделать механизм для вращения экрана в двух плоскостях просто, то у меня для вас новость. Механизм не должен люфтить, скрипеть, случайно проворачиваться или, наоборот, слишком сильно сопротивляться. Надёжность мы тестируем так: 30 тысяч раз поворачиваем экран (конечно же, не вручную) и замеряем усилие, необходимое для поворота. Если после теста оно изменилось (как в плюс, так и в минус) не более чем на 25%, то всё хорошо. Первая версия не прошла этот тест: элементы из алюминиевого сплава деградировали существенно раньше, поэтому через несколько итераций мы пришли к решению добавить отдельную вставку, изготовленную методом порошковой металлургии из сплава Fe8Ni.
Было
Стало
Та самая деталь
У решения сделать экран поворотным были неожиданные продуктовые последствия. Расскажу про два из них. На корпусе экрана есть не только механическая шторка для камеры, микрофоны и кнопка для их отключения, но и привычные кнопки для регулировки уровня громкости. При горизонтальном положении экрана они расположены на верхней грани: уменьшить громкость можно левой кнопкой, а увеличить — правой. В самом начале разработки на них были символы + и −. Пока всё логично, не правда ли?
Но затем мы придумали вращать экран. Как будут располагаться эти кнопки после поворота экрана по часовой стрелке? Кнопка увеличения громкости окажется ниже кнопки уменьшения громкости. Управление перестанет быть интуитивным. Поэтому теперь после поворота экрана эти кнопки программно меняются ролями. И по этой же причине на них больше нет маркировки.
Но и это ещё не всё. У всех предыдущих наших колонок достаточно простая геометрия, поэтому все микрофоны расположены на горизонтальной поверхности устройства. Несколько микрофонов, разнесённых в пространстве, нужны для задач эхо- и шумоподавления. Но на Станции Дуо Макс расположить микрофоны по старинке уже не получалось: поверхность колонки скрывается за экраном. Поэтому мы встроили микрофоны в него. Мы поместили их на верхнюю грань (так мы избежали необходимости высверливать отверстия в стекле) и на заднюю поверхность (может помочь отфильтровать эхо). Вот только экран вращается по часовой стрелке. Поэтому мы добавили микрофоны ещё и на левую боковую грань (после поворота эта грань становится верхней). Итого восемь микрофонов. Пожалуй, это самое сложное и необычное farfield-решение из всех, что нам доводилось разрабатывать для Станций.
История про звук и уважение к голосу
Подкасты, интервью, видеорецепты и обзоры — всё это удобно смотреть и слушать в фоне. Но что особенно важно — всё это содержит речь. Кроме того, Станция Дуо Макс поддерживает видеозвонки через Telegram. А это тоже речь. Голос обычно соответствует среднему диапазону частот. Если пытаться воспроизводить весь спектр частот одним динамиком, то это может снизить качество голоса: речь может стать менее разборчивой. Одной лишь мощности недостаточно: надо разносить воспроизводимые частоты на разные динамики. В Дуо Максе мы так и сделали. В акустической камере устройства скрываются два 50-миллиметровых широкополосных динамика по 10 Вт, один 100-миллиметровый вуфер для басов в 40 Вт и два пассивных излучателя. Совокупная мощность — 60 Вт. Но нет, само по себе это не решает все проблемы.
Кстати, к этой конфигурации мы пришли не сразу. Был даже не очень удачный вариант с фазоинвертором.
Тот самый вариант
В идеальном мире каждый динамик играет только на своей частоте и не пересекается с частотами других. В реальном — всё намного сложнее. Широкополосные динамики и вуфер достаточно сильно «наезжают» друг на друга. По крайней мере, если собирать аудиосистему из оптимальных по цене доступных на рынке вариантов. Но что будет в итоге? Голос отчасти будет воспроизводиться вуфером, и колонка начнёт «бубнить». Поначалу графики амплитудно-частотных характеристик широкополосника и вуфера пересекались примерно на 250 Гц. Из-за этого низкие мужские голоса с частотой меньше 250 Гц попадали на вуфер.
Чтобы полечить это, понадобилось сделать полный редизайн широкополосных динамиков. Более простыми способами мы не могли сдвинуть точку пересечения АЧХ без вреда для других характеристик. Наши аудиоинженеры тщательно переработали динамики. Вообще, для малых партий производить кастомную акустику достаточно дорого, но, к счастью, на наших объёмах мы можем себе это позволить. В итоге у новых динамиков точка пересечения приходится на 200 Гц, что позволяет добиться гораздо более естественного звучания голоса.
Всё бы хорошо, но устройство — это не только акустический бокс. Станция Дуо Макс — это колонка с экраном в 10,5 дюймов. Он перекрывает собой всю верхнюю часть устройства. Поэтому широкополосники, во-первых, расположены в нижней части колонки и, во-вторых, направлены не строго вперёд, а чуть повёрнуты влево и вправо. Вуфер при этом направлен в противоположную от экрана сторону (запомните эту деталь, мы к ней мы ещё вернёмся). А вот теперь самое интересное. Экран ведь не просто перекрывает колонку, но ещё и вращается! В зависимости от положения экран по-разному перекрывает акустический поток. И самое неприятное, что акустика, отстроенная под одно положение экрана (горизонтальное), будет звучать совершенно не так при другом положении (вертикальном). Потому что в вертикальном положении экран перекрывает ещё больше потока средних и высоких частот.
Большинство пользователей могли бы даже не обратить на это внимание, но мы разницу слышали, поэтому оставить как было не могли. С помощью встроенного акселерометра мы знаем ориентацию и угол наклона экрана. Поэтому реализовали такое решение: в зависимости от положения экрана, Станция бесшовно и плавно меняет настройки звука. Это решение дополняет технологию Room Correction, которая корректирует звук ещё и под акустику помещения (колонка анализирует последние 30 секунд звучания и подстраивает эквалайзер, приближая звучание к лабораторному эталону).
И последнее. В Дуо Максе динамики, LED-подсветка, усилитель звука и блок питания расположены в нижней части корпуса. Всё это греется. Значит, нужно перераспределять и рассеивать тепло. Сконструировали старый добрый радиатор и разместили его вдоль задней поверхности, скрыв за тканью. Рядом с ним — вуфер. И когда он работает, поток воздуха находится в движении, что помогает убрать лишнее тепло с радиатора. И что самое забавное: радиатор выполняет ещё и роль противовеса для экрана. В какой-то момент мы поняли, что нам не хватает буквально 300 грамм вдоль задней стенки для баланса устройства. И решение с радиатором пришлось как нельзя кстати.
Вид в разрезе
История про NPU
На Станции работают нейросети, разные другие алгоритмы, воспроизводится видео, совершаются звонки и многое другое. Для всего этого нужен производительный процессор, а также отдельный NPU для нейросетей и DSP для гибкой работы со звуком.
Мы перебрали несколько вариантов и в какой-то момент были готовы остановиться на Amlogic A311D. Эта SoC была уже известна, опробована вдоль и поперёк. Мы бы смогли относительно просто и быстро внедрить её. Но затем узнали о более мощной модели A311D2 и решили попробовать её. Тут и более производительный NPU, и целых два HiFi5 DSP. Но был нюанс: модель ещё находилась на стадии отладки. А значит, нам нужно было не только адаптировать наше устройство к SoC, но и участвовать в её доработке, выискивая ошибки. Да, звучит примерно как нарушение первой заповеди радиотехники, но мы осознанно пошли на это.
Итак, у нас был незнакомый NPU (сфокусируемся именно на этом компоненте), полная документация для которого ещё только была в разработке. Начинаем тестировать на нём наши нейросети. Заработали сразу! Но неправильно.
Добавим немного контекста. С запуском нейросетей на GPU уже давно всё более-менее понятно и предсказуемо. Но каждый NPU — уникален. Сначала вы обучаете модель под определённый фреймворк, затем трансформируете под конкретный NPU, потом взаимодействуете с его многочисленными инструкциями через API драйвера. И всё это впервые. И спросить не у кого, потому что конкретный NPU появился недавно, а значит, вряд ли кто-то уже успел пройти этот путь. На каждом этапе что-то может пойти не так. На каком и по чьей вине? Загадка.
Начинаем снимать дампы на каждом шаге и разбираться. Этот процесс усложняется ещё тем, что не всегда понятно, на стыке чего возникает проблема. Нейросеть ведь работает не в вакууме, а с помощью нашей библиотеки. Это много кода, в неожиданном месте которого может возникнуть условная несовместимость с драйвером. Поэтому в какой-то момент мы пересобрали нашу библиотеку для работы с нейросетями так, чтобы оставить в ней абсолютный минимум кода, необходимого для отладки и диагностики. Так дело пошло быстрее. Проблемы чинились как на нашей стороне, так и на стороне производителя чипа. Это было непросто, но в итоге всё заработало.
Жалеем ли мы, что пошли таким сложным путём? Нет, потому что это было обосновано. Да и в целом приятно осознавать, что мы внесли свой, пусть и небольшой, но всё же вклад в отладку SoC.
Вместо заключения
Станция Дуо Макс — это наша первая умная колонка, которой можно управлять не только голосом, но и прикосновениями. Кроме того, теперь Алиса может не только зачитать ответ, но и показать его на экране вместе с дополнительной информацией. Всё это расширяет возможности нового устройства в сравнении с другими Станциями. Однако разработка подобного класса устройств существенно отличается от разработки уже привычных умных колонок, потому что экран неизбежно влияет на все остальные аппаратные и продуктовые решения. Но мы считаем, что все эти вызовы того стоили. Ждём первых пользователей и первые отзывы.