Только что мы представили наше новое устройство — Яндекс.Станцию Мини. Это компактная умная колонка, которая умеет воспроизводить музыку, управлять умным домом, ставить напоминания — и многое другое. А ещё это первая колонка с Алисой, управлять которой можно жестами.
Сегодня мы расскажем читателям Хабра несколько историй об этапах создания Станции Мини. От калибровки оптики и UX-тестирования до неочевидных особенностей работы с электропитанием. А ещё вы узнаете, что такое терменвокс и как он связан с устройством Яндекса.
Но для начала небольшой флешбэк.
В прошлом году мы рассказывали на Хабре о разработке «большой» Яндекс.Станции (а ещё платформы Yandex.IO, которую используем и мы, и партнёры). Это наше флагманское устройство с Алисой, сконструированное так, чтобы находиться в центре большой комнаты рядом с телевизором. У неё мощный 50-ваттный звук. Три активных динамика с широким диапазоном частот. Семь микрофонов, работающих как единый радар. HDMI-выход, в конце концов.
Весь этот год мы не стояли на месте. Голос Алисы становился всё более естественным. Она научилась решать проблему произношения для многих омографов, т. е. в зависимости от контекста правильно ставить ударения в словах, которые пишутся одинаково, но имеют разный смысл. Слух тоже развивался: недавно мы уже рассказывали о том, как учили Алису не откликаться на чужие имена. Недавно мы начали тестировать возможность узнавать владельца колонки по голосу.
А ещё мы запустили платформу умного дома. Теперь с помощью голоса можно управлять устройствами сторонних производителей и даже объединять их в сценарии. Отказ от пультов и кнопок в пользу голоса — ключевая особенность нашей платформы. А для этого Алиса должна быть рядом.
Кроме того, умная колонка — это ведь не только музыка, радио и видео, но и напоминания, будильник, погода, фактовые ответы, сказки и игры для детей и т. д. Устройство может пригодиться у кровати, в кабинете, на кухне, в любом другом уголке квартиры.
Поэтому мы решили сделать ещё одну Станцию — для тех, кому нужно более простое и компактное устройство с Алисой.
Уменьшаем устройство
Для мини-варианта не нужен громкий звук, поэтому тяжёлые и большие динамики заменили одним трёхваттным. Этого более чем достаточно для простых задач. Хотя даже он может доставить хлопот с электропитанием, если не учесть один нюанс, но об этом чуть позже.
Отказались от выхода на телевизор. Это снижает нагрузку, тепловыделение, а значит, и требования к электронике. Массивный металлический каркас Станции с пассивным радиатором для охлаждения тоже стал не нужен.
Вместо семи микрофонов оставили четыре, ведь улавливанию речи больше не мешает громкий звук. Но при этом микрофоны, как и в Станции, работают по принципу фазированных антенных решёток, или направленного микрофона. Устройство алгоритмически ищет в окружающем шуме голосовую команду со словом «Алиса». Затем определяет направление и очищает сигнал от шума, в том числе вычитает музыку. И только после этого сигнал идёт в облако и распознаётся.
Чтобы распознавание речи работало наиболее точно, нейросеть нужно тренировать на записях, которые наговорили именно на это устройство. Нет смысла брать нейросетевую модель из «большой» Станции, потому что её эффективность в Станции Мини будет уже не так высока.
Эту задачу можно решать разными способами. Например, нанять людей, чтобы они по бумажке зачитывали колонке фразы. Но мы получим мало записей, которые не похожи на настоящие обращения пользователей, потому что в реальности записи содержат непредсказуемый шум, наложения голосов и многое другое.
Поэтому мы не стали экономить на качестве и сразу заказали на фабрике несколько сотен готовых колонок, которые раздали участникам закрытого бета-тестирования в Яндексе в обмен на помощь в обучении нейросети. И это сработало.
Кстати, от аппаратной кнопки Mute, которая обесточивает микрофоны и отключает «слух» Алисы, отказываться не стали. Никакой особой сложности устройству она не добавляет и теперь находится сбоку.
А вот от остальных кнопок отказались. И здесь начинается самое интересное.
Добавляем магию и лазер
Взгляните на фотографию ниже. Это вид сверху на обе наши Станции. Сегодня мы не будем говорить о дизайне — попробуйте найти другое важное различие.
Обратите внимание: кнопок нет. И нет вращающегося кольца для регулировки звука. Если мы делаем маленькое, лёгкое устройство, почти вся электроника которого умещается на одной плате, то механические элементы только усложняют проект и увеличивают габариты.
Голос — наиболее естественный способ управления умными колонками. Но бывает, что человек говорит по телефону или обедает, поэтому дублёр всё же нужен. И мы нашли вариант. Причём не менее естественный.
Представьте себе: вы совершаете жест рукой — и любимая песня становится громче. Или просто кладёте на колонку ладонь — и будильник выключается.
Итак, как работает магия с жестами? За неё отвечает датчик глубины, который спрятан под крышкой устройства. Вот так он выглядит на плате при значительном увеличении (длина в реальности — всего 4 мм, толщина — и вовсе 1 мм):
Это вертикально излучающий инфракрасный лазер с длиной волны 940 нм в связке с принимающим фотодиодом. Луч отражается от препятствия над колонкой и возвращается. А так как скорость света известна, то можно в любой момент определить расстояние до объекта.
Кажется, достаточно купить датчик и подключить его к плате, чтобы всё отлично работало. Но нет.
Датчик спрятан внутри, над ним находятся отверстия в корпусе (а иначе как бы он работал). А значит, пыль и прочий мусор могут исказить измерения.
Нужна защитная пластина, которая накроет лазер и фотодиод, но при этом уместится в корпусе. Её материал строго регламентирован, поскольку далеко не все виды пластика хорошо работают в ближнем ИК-диапазоне. При большом желании из стекла тоже можно вырезать, но это достаточно сложно, а значит, очень дорого.
Более того, каждая защитная пластина производится методом литья и уникальна в буквальном смысле. Невозможно изготовить две идентичные пластины. А значит, каждая из них по-своему влияет на распространение луча. Если это не учесть, то мы получим погрешность в измерении расстояния.
Каждая новая Станция Мини проходит на конвейере этап калибровки датчика, чтобы учесть индивидуальные особенности линзы. Проще говоря, чтобы устройство воспринимало препятствие на высоте 15 см именно на этой высоте. Калибровка примерно так и происходит. Берутся листы из материалов, похожих на фотобумагу, но не пропускающих ИК-диапазон, и статично размещаются на известной высоте.
В итоге мы дошли до этапа, когда нужно протестировать точность работы датчика в собранном устройстве. Но оказалось, что готового промышленного приспособления для этого просто не существует. Ничего не поделать — соорудили свой аппарат. На фото ниже можно увидеть первый прототип в нашем офисе в Москве, собранный буквально из листов фанеры, распечатанных на 3D-принтере втулок, двух моторчиков и контроллера для управления ими. Эта штука автоматически перемещает платформу, имитирующую руку, над колонкой, чтобы оценить, насколько точно датчик определяет расстояние.
Чистовые экземпляры позже отправили на производство.
Стабилизируем питание
Самое время вспомнить об электропитании, о котором мы обещали рассказать выше.
Колонка потребляет энергию. В среднем немного, меньше 5 Вт даже на высокой громкости. Но, в отличие от многих других маленьких бытовых приборов, её потребление крайне неравномерно. Мы заметили этот эффект на раннем прототипе, когда использовали датчик жестов одновременно с прослушиванием вот этого трека:
Попробуйте угадать, что с ним не так? Резкие переходы к низким частотам. А чем низкие частоты отличаются от высоких? Амплитудой колебаний диафрагмы динамика. Чем она выше, тем больше энергии потребляет устройство.
Добавьте к этому управление жестами, голосовые команды, сетевой трафик — и вы получите короткие, но непредсказуемые мгновения, когда потребление подскакивает настолько, что простые блоки питания просто не справляются с поддержкой стабильного напряжения. Например, типовые зарядки для смартфонов на такое не рассчитаны, потому что у этого класса устройств есть аккумулятор и потребление достаточно равномерное. Колонка же, если питающее напряжение кратковременно просядет, может просто перезагрузиться.
Чтобы избежать этой проблемы, мы тестировали прототипы на звуке частотой 100 Гц. Именно на ней динамик создаёт наибольшую нагрузку. Наш внешний блок питания хоть и выглядит, как типовая зарядка с USB Type-C на 1,5 ампера, но готов к таким ситуациям. Более того, мы понимаем, что люди могут подключать собственные блоки питания, поэтому при разработке заменили внутренние преобразователи питания (так называемые DC-DC конвертеры) теми, которые способны выдержать кратковременные просадки напряжения. Конечно же, сторонние блоки питания бывают разные, мы их не тестируем и не рекомендуем, но решение с заменой преобразователей помогает.
Кстати, ещё мы учли пожелания пользователей: у белой Станции Мини белый блок питания и провод. Мелочь, а приятно.
Придумываем жесты
Стабильно работающие устройство и датчик — это только половина дела. Осталось придумать сами жесты. Лучший способ что-то придумать — собрать максимум идей, а потом поэтапно их отфильтровать и проверить. Мы так и поступили: организовали внутренний хакатон с призами. Любой сотрудник компании мог предложить и сразу реализовать свои жесты для устройства. В Яндексе такой подход хорошо работает.
Вариантов было много. Отсеивали мы их по нескольким критериям, но наиболее важных — два. Во-первых, если функция популярна и требуется часто, то и жест для неё должен быть простым и легко воспроизводимым. Во-вторых, удачный жест интуитивен. Можно написать инструкцию, снять обучающее видео, но всё это менее эффективно, чем старая добрая интуиция.
Мы быстро определились с жестом «Алиса, хватит». Пользователи уже привыкли просто класть руку на будильник, телефон, умные часы, чтобы остановить звук.
А вот с жестом регулировки звука всё оказалось не так очевидно. У нас было два варианта-победителя. В обоих подразумевалось, что звук регулируется с помощью воображаемой вертикальной шкалы над колонкой. Но достаточно ли просто поместить руку над колонкой: чем больше расстояние, тем выше громкость? Или лучше взять относительную шкалу и перемещать ладонь вверх/вниз для плавного изменения громкости?
Для поиска ответов на подобные вопросы хорошо подходит UX-тестирование. В Яндексе для этого создана специальная лаборатория: мы приводим туда людей с улицы и наблюдаем за тем, как они пользуются продуктом. Эта практика довольно полезна.
Мы надеялись, что на UX-тестировании однозначно победит один из двух вариантов. Но не в этот раз. Поведение людей разделилось примерно поровну. А значит, нужно проверить оба варианта. Так мы и сделали в рамках бета-тестирования, и его участники достаточно быстро указали на существенный недостаток абсолютной шкалы. Такой вариант приводит к тому, что случайный взмах руки (или полёт кота) могут неожиданно включить максимальную громкость. А это неприятно.
Вариант с относительной шкалой победил. Хотя и были доработки на основе отзывов пользователей беты. Например, добавили эвристику от случайных падающих предметов: чтобы звук менялся, ладонь должна на мгновение зависнуть на одной и той же высоте и только потом перемещаться. А ещё добавили звуковую индикацию уровней громкости, чтобы человек слышал, на сколько именно шагов он её изменил.
На этом можно было бы и закончить историю, но коллеги, работающие над жестами, оказались большими любителями музыки и нестандартных способов её воспроизведения.
Добавляем гравицапу
В ходе работы над жестами родилась такая идея: с помощью движения рук не только регулировать громкость, но и создавать музыку. Позднее мы вспомнили, что эта идея уже применяется в терменвоксе. Этот электромузыкальный инструмент создал в 1920 году советский изобретатель Лев Сергеевич Термен. Терменвокс работает так: движения рук изменяют ёмкость его колебательного контура и, соответственно, частоту звука. Просто послушайте самого изобретателя:
Классический инструмент Льва Термена использует электромагнитное поле и две антенны: для управления громкостью и высотой звука. У нас же есть только один инфракрасный луч, поэтому управлять можно чем-то одним. Громкость мы взяли за константу.
Разработать новый режим нам помог Пётр Термен — композитор и исполнитель на терменвоксе, правнук Льва Термена. А музыкант-экспериментатор Антон Маскелиаде и студия Monoleak создали для синтезатора инструментальные стили: от привычных пианино и гитары до необычных мечей и кастрюли. Можно играть даже космическую музыку — достаточно сказать: «Алиса, дай звук гравицапы». В коллекции уже есть несколько десятков инструментов, и она будет пополняться.
В терменвоксе малейшее движение руки изменяет частоту звука. Нужно быть профессионалом с крепкой рукой, чтобы точно попадать в ноты и воспроизводить что-то мелодичное. Мы же хотели, чтобы на нашей колонке играть музыку могли все. Поэтому для многих инструментальных стилей разделили воображаемый луч на сегменты, каждому из которых присвоили определённый звук.
Кстати, изначально режим синтезатора развивался как личный проект одного из наших коллег. Но дети, которых мы также приглашали на UX-исследование, с большим энтузиазмом отнеслись к новому режиму. Так мы поняли, что не надо скромничать и стоит довести личную инициативу до продукта.
***
Сегодня мы показали, что даже за небольшим и на первый взгляд простым устройством скрывается целая история и многочисленные технологические решения. Какие отдельные рассказы вы бы хотели услышать более подробно?
Мы верим, что будущее за голосовым управлением, ведь во многих случаях просто сказать — гораздо удобнее и естественнее, чем нажимать на кнопки. И новое устройство — ещё один шаг в этом направлении.
Автор: Тимур Гаскаров