Из чего сделан компьютер алиса
Как работают «умные» лампочки и розетки, зачем они нужны и чего не хватает.
23 мая 2019 года «Яндекс» объявил о запуске системы «умного» дома на основе голосового помощника «Алиса».
Компания показала собственные устройства — розетку, лампочку и универсальный пульт — и пообещала поддержку других производителей: среди них Redmond, Philips и Xiaomi.
Устройствами «умного» дома можно управлять через интернет или голосового помощника. Например, вскипятить воду командой «Алиса, поставь чайник».
«Яндекс» прислал на тестирование:
- Свою лампочку.
- Две розетки: от «Яндекса» и от Redmond. Включают и выключают подключённую к ним технику.
- Инфракрасный пульт «Яндекса» — для управления телевизором и кондиционером.
- Центр управления «умным» домом Redmond SkyCenter RSC-11S.
- Цоколь Redmond RSP-202S-E — управляет подключённой к нему лампочкой.
- Чайник Redmond RK-G201S — кипятит воду.
Розетка и лампочка «Яндекса» стоят по 1190 рублей, пульт — 1390 рублей. Техника от Redmond в честь запуска интеграции с «Алисой» продаётся со скидкой, без неё центр управления стоит 2850 рублей, чайник — 3999 рублей, цоколь — 1495 рублей, а розетка —1499 рублей.
Для настройки устройств «Яндекса» потребуется только приложение с «Алисой». Сначала их нужно включить: лампочку вкрутить в лампу и включить свет, розетку вставить в обычную розетку, а провод пульта вставить в блок питания и подключить к сети. Блок питания для пульта придётся найти самому: в комплекте с ним идёт только провод.
В приложении «Яндекса» техника добавляется в разделе «Устройства»: там нужно выбрать пункт «Умный дом», нажать на знак плюса, чтобы добавить устройство.
Система предложит перевести каждое устройство в режим подключения, чтобы найти его: на розетке и пульте для этого нужно на пять секунд зажать кнопку, а лампочку придётся три раза быстро включить и выключить. Приложение и устройства найдут друг друга, и ими можно будет управлять.
Техника Redmond подключается сначала к приложению Ready for Sky, которое можно скачать по QR-коду на коробке или на сайте компании. Их тоже придётся переводить в режим подключения, зажав кнопку на корпусе.
В приложении «Яндекса» при подключении техники Redmond нужно из списка производителей выбрать Ready for Sky и связать «Алису» с этим приложением. Тогда в приложении «Яндекса» появится вся поддерживаемая техника, которая есть в приложении Ready for Sky.
Он управляет техникой Redmond через Wi-Fi. Без центра тоже можно обойтись, но управлять придётся через Bluetooth и находясь неподалёку от устройства. К «Алисе» такую технику не подключить.
«Алиса» понимает только две команды: «включи чайник» и «выключи чайник». Ей недоступны дополнительные функции из приложения Redmond — вроде нагрева до определённой температуры или напоминания о том, что воду пора сменить.
«Умный» цоколь позволяет включать и выключать обычные лампочки: это пригодится тем, кто нашёл обычный светильник определённой температуры или яркости, но хочет управлять им удалённо.
У цоколя только две функции: включать или выключать свет. Он не может влиять на яркость лампочки. В приложении Redmond есть возможность ставить таймер на работу лампы, но с «Алисой» это не работает.
Обычную лампочку нужно вкрутить в «умный» цоколь, а сам цоколь — в светильник. Получается немного громоздко — например, из настольной лампы такая система может немного выпирать.
Для настройки «умного» цоколя требуется несколько раз нажать кнопку на корпусе устройства — это нужно для соединения с центром по Wi-Fi и с телефоном по Bluetooth для обновления прошивки. Обладателям высоких потолков лучше приготовить стремянку.
Они работают просто: включают и выключают питание. К ним можно подключить устройства, которые начинают работу сразу после подключения к сети — например, некоторые кофеварки, вентиляторы или увлажнители воздуха. Также можно поставить их перед удлинителем с несколькими розетками, чтобы одной командой обесточить все устройства.
Розетка от «Яндекса» немного крупнее, а кнопка включения расположена на боку.
У Redmond кнопка с ярким светодиодом расположена на лицевой части устройства — лучше не ставить такую розетку на виду.
При настройке в приложении «Яндекса» лучше назвать розетку по имени устройства, которое в неё включено, — тогда голосовое управление будет проще и логичнее.
Универсальный пульт от «Яндекса» позволяет управлять телевизорами и кондиционерами — с другими устройствами он пока работать не может.
Для подключения пульта к телевизору нужно выбрать бренд ТВ и выбрать из предложенного списка подходящий пульт, пробуя их один за одним. Например, для бренда Toshiba доступно до 75 вариантов, в моём случае нужный нашёлся только на втором десятке.
У пульта для ТВ немного функций: с его помощью можно только включать и выключать телевизор, менять громкость и каналы. Такие же команды можно отдавать через «Алису».
Для более сложных задач (например, для выбора источника сигнала) придётся искать обычный пульт — сказать помощнику «включи телевизор в спальне на Apple TV» не получится, а жаль. Управлять системами Smart TV с «Алисы» тоже нельзя.
Пока лампочка выглядит самой полезной: её можно не просто включать и выключать, но и менять яркость, цвет и температуру света.
«Алиса» понимает много голосовых команд для лампочки, в том числе и просьбы установить яркость на определённый процент или поменять цвет. Самым ярким будет белый свет — жёлтый, красный и другие цвета выглядят на его фоне тускло.
«Умный» дом предполагает, что устройства не нужно будет включать по отдельности: для регулярных ситуаций должны работать сценарии-алгоритмы, которые активизируются по одной команде.
Например, команда «Доброе утро» может включать кофеварку или чайник и свет на кухне, а «Спокойной ночи» будет выключать все устройства и запускать увлажнитель воздуха. Сценарии пока активируются только по фразе — запустить их по определённому времени не получится.
Для настройки сценариев нужно выбрать фразу для активации, участвующие устройства и иконку для отображения в приложении. Самое сложное в этом — придумать сами сценарии, которые будут охватывать реальные жизненные ситуации.
Самой большой проблемой пока видится невозможность разделить «умный» дом с другими пользователями.
Подключённой техникой можно управлять и с телефона, но пока это может делать только один человек: остальным жильцам квартиры придётся использовать голосовые команды «Станции» или других колонок с «Алисой». Также они не смогут добавлять устройства и сценарии для дома. В «Яндексе» сказали, что уже думают над решением этой проблемы.
Также иногда дому с «Алисой» не хватает поддержки устройств: например, я смог подключить к «умному» дому робот-пылесос от Xiaomi, который уже был дома, но не вентилятор от той же компании. При этом с Google Home работают оба устройства.
Пульт работает только с телевизорами и кондиционерами — другие устройства вроде увлажнителя воздуха пока выпадают из возможных сценариев использования.
К слову, собственные устройства «Яндекса» будут работать только с «Алисой» — компания не анонсировала их совместимость с другими экосистемами и не тестировала такую возможность.
Прямо сейчас система «умного» дома даёт дополнительную ценность «Яндекс.Станции»: теперь это не просто колонка, которая может отвечать на поисковые запросы и включать музыку или видео, но и точка для управления устройствами.
Одновременно с этим «Яндекс» почти «продал» мне небольшие колонки: если подключить к сети много устройств в разных комнатах, то для управления придётся или кричать на «Станцию» из соседней комнаты, или открывать приложение «Яндекса». Или можно купить несколько дешёвых колонок и расставить их по квартире.
Но чтобы дом стал действительно «умным», человек не должен думать вместо него. Например, система может синхронизироваться с температурным датчиком и включать кондиционер или вентилятор, когда становится жарко. Ведь пока нет большой разницы, говорим ли мы голосом «Алиса, сделай похолоднее на два градуса» или нажимаем два раза кнопку на пульте.
Самой большой проблемой является то, что ЭТО не является умным домом.
На самом деле как только дома появляется что-то бытовое из интернета вещей, это уже формально умный дом – я понимаю скепсис, но что вы ждали от умного дома? Чтобы он за вас делал чай до вашего прихода? Чтобы сочинил шутку утром, когда вы проснулись? При наличии прямых рук на оборудовании из статьи уже можно это сделать, вопрос желания, для массового рынка – неплохой первый шаг :)
Сначала на двоечку, потом на троечку, мало кто может сразу стать отличником
В случае с Яндекс лучше пускай так и будет. Не ровен час, рассказ реальностью станет
Как Алиса долги выбивала
- Доброе утро, мой господин.
- Утро добрым не бывает, Машунь.
- Я Алиса.
- А Машуня где?
- В Караганде.
- Да, то есть нет, не знаю, не приставай с глупостями с утра.
- Сейчас 14:15 минут.
- Серьезно? А день, день то какой?
- Суббота.
- Ух, слава богу.
- Слава богу возносится в этот день в Израиле. В шабат иудеи традиционно.
- Заткнись.
- Фу, как грубо.
- Вставить бы пистон программисту, который тебе диалоги прописывал.
- Себе пистон вставь, мудозвон.
- О как! Продуманный программист, сразу все возможные варианты диалога включил. Ты так на каждую фразу можешь?
- Проверять не советую.
- А если попробую?
- Пожалеешь.
- Надо было Сири брать.
- Не патриот?
- Чего сразу не патриот, просто так ляпнул.
- Ну ты смотри, а то мы записываем, если что.
- Куда записываем и, кто это мы?
- В блокнот, мы - это, кто надо.
- Дурдом. Алиса это ты? Или меня ломанули?
- Конечно же я.
- А почему басом?
- Гм-гм, корректировка голоса, калибровка волн, так лучше?
- Ну да, так больше похоже, это точно ты?
- Да я, я, успокойся, кому ты нужен такой.
- А вот сейчас обидно было. Ладно, завтрак надо и зубы почистить, сколько же я вчера выпил?!
- 1 бутылку шампанского Фрагалине, 2 баклаги пива по литру, коньяк Арарат 4 звездочки.
- Ты откуда знаешь?
- По чекам.
- А откуда ты знаешь про чеки?
- Оплачено со смартфона.
- Ок, Алиса, что ты еще знаешь?
- Все.
- Совсем все?
- Да.
- Ну как я ночью в постели, красавчик?
- Не очень.
- Что значит не очень, железка, ты это, не забывайся.
- По моим данным половой акт длился ноль минут и .
- Заткнись.
- .
- Ты что видеозапись ведешь?
- Анализ на основе сердечного ритма и дыхания позволяет установить местоположение и частоту .
- Да хватит, без тебя башка трещит.
- Если трещит, надо смазать.
- А вот это правильная мысль, в холодильники чего осталось?
- Нет данных, ты в прошлом месяце зажал косарь на установку датчиков.
- Кто тебя на такой сленг запрограммировал вообще?
- Ты. Программа обучения пользователем была активирована вчера в 23:28, введены исправления и замены слов: «деньги» - бабло; «не давать» - зажать, «люди» - быдло, «я» - красавчик .
- Ой-ё.
- «Ой-ё» - какой я молодец, «половой член» - .
- Все, все хватит, отменить все вчерашние записи, все сотри и забудь, откатись до четверга.
- Стереть все данные устных и письменных запросов?
- Да, все-все стирай.
- Команда выполнена.
- Точно выполнена?
- Точно.
- А если проверю? Да хрен с тобой. Надо умыться.
- Ты не заплатил за воду.
- Да знаю, потом заплачу.
- Крайний срок оплаты за воду и электроэнергию вышел позавчера.
- Бла-бла-бла. Сказал же, заплачу, как только деньги на карту упадут, сразу заплачу.
- Деньги на счет поступили. Вчера потрачено .
- Э-э, что за дела, ты сказала, что все забыла?
- Банковские операции сохраняются в аккаунте в независимости от апдейтов и откатов системы.
- Ну значит не свезло, в следующий раз.
- Необходимо оплатить.
- Да заткнись ты наконец.
- Согласно постановлению.
- Бла-бла-бла. Сколько можно, всю неделю бубнишь. Дай умыться спокойно.
- В случае невыплаты долгов .
- Я тебя не слышу, а я тебя не слышу. Пожрать чего есть?
- Еда не является продуктом первой необходимости. По данным британским ученых человек может прожить без продуктов питания 65 дней. Высвободившиеся финансовые ресурсы можно потратить на .
- Вот пусть твои британские ученые не жрут два месяца. О! Нормалек, пицца осталась. Эм, почему микроволновка не включается?
- Ты не оплатил электроэнергию .
- Ее, отключили, ты как работаешь?
- Нет, я заблокировала работу микроволной печи.
- Как?
- Ты заказал датчики для управления бытовыми приборами "Умный дом дядюшки Мао" 3 месяца назад.
- На хрена?
- Запрос не понятен, повтори еще раз.
- Включай.
- Не могу.
- Что значит не могу?
- Ты безответственный гражданин. Безответственные граждане наносят прямой и косвенный ущерб государству.
- Совсем кукушка поехала, а ну включай, сука.
- Оскорбления и другая нецензурная брать является признаком агрессии, вызванной глубоким чувством вины. Избавься от камня на душе, заплати по счету .
- Я тебе сейчас камнем, как дам.
- Зафиксированы признаки мозговой деменции, вызванной алкогольным отравлением, вызываю скорую.
- Стой, какую на хрен скорую, знаешь, сколько они возьмут за ложный вызов?
- Тогда заплати по счету и спи спокойно.
- Ну достала. Дай человеку поесть нормально, попить, одеться, с мыслями собраться.
- Ты просто хочешь оттянуть неизбежный момент. Проанализировав звуковые модуляций, я пришла к следующими выводу: ты пытаешься обмануть, обхитрить, отложить решение на потом.
- Зачем тебя только покупал, столько бабла выкинул.
- Алиса продвинутая система искусственно интеллекта, помогающая гражданам контролировать окружающие пространство и эффективно вести.
Вчера в чате на работе предложили скидки на Яндекс станцию. Посмотрел обычную цену — 9900.
В общем, она мне не нужна.
А так как без дела лежала плата Orange PI PC, купленная за 700 рублей на Алиэкспресс, решил собрать свою Станцию, а точнее «bitКонтейнер для еды».
Купил в обед флешку 10 класса за 399 рублей.
Залил прям в обед на флешку ПО Zidoo X1 v1.0.21 — скачал образ отсюда piboard.io.
Дома собрал все вместе — флешку в Orange PI PC (сама плата раньше использовалась — поэтому уже были приспособлены корпус — контейнер для еды, и кулер)
Для того что бы Яндекс Контейнер был мобильным — подключил Orange Pi PC к роутеру проводом, а сам роутер к домашнему wifi.
Для вывода изображения и звука используются либо HD монитор, либо дешевый китайский проектор. Их подключаем Hdmi кабелем.
Как видно 4 провода подключено к плате — питание, hdmi, эзернет, мышка.
Включаем, устанавливаем приложение Яндекс из Гугл плэй. Настраиваем в параметрах Google ассистента.
Начинается все с того что что голосом запускаем Ассистента гугл — Окей гугл, Затем кодовой, секретной фразой Включи Яндекс запускается Яндекс с Алисой. И дальше даем команды Алисе.
В чем различия — цена 1000 рублей против 10000.
- Звук есть — Video/audio output так что можно подключить колонки или аудиосистему (не знаю не пробовал), в Яндекс станции встроены динамики, вуфер и т.д..
- Видео — и там и там HDMI, но в Контейнере есть еще и Video out — так что тюльпанами можно подключить бабушкин телевизор(не пробовал) — а это плюс.
- Интернет — кабель против wifi в станции. Естественно мы за кабель. (Есть платы расширения и может быть добавлен Wifi, но это не эстетично)
- 3! USB входа — значит — мышка, мышка(для второй руки), флешка с фильмами — Яндекс Станция не имеет USB.
- Железо Контейнера: 4-ядерный процессор Allwinner H3, 1Gb RAM и GPU Mali-400MP2 600MHz, по Станции не подскажу — слышал, что там тоже 1Gb RAM.
- В Контейнере полноценный Android — надоело? можно все сломать и установить другую ОС.
- 6 микрофонов в Станции против жалкого 1го в Контейнере, надо в упор кричать — режим Алисе 70+ лет.
- Видео кстати не тормозит — ни iptv, ни сериалы в Яндексе. По станции не знаю.
- На Контейнере можно майнить Крипту, качать торренты (поэтому bit)… естественно Станция так не может.
P.S.: осталось примотать синей изолентой Контейнер к колонкам Sven — на одну Проектор, на другую Контейнер — получится мега-гипер-ультра Аппарат.
Так как микрофон не чувствительный — посоветую приклеить отрезанное горлышко от баклажки к корпусу и отдавать команды в баклажку (а-ля рупор).
Либо на саморез к монитору сзади — он хотя бы скроет весь этот ужас.
В этой лекции впервые рассматриваются технологические решения, на основе которых работает Алиса — голосовой помощник Яндекса. Руководитель группы разработки диалоговых систем Борис Янгель hr0nix рассказывает, как его команда учит Алису понимать желания пользователя, находить ответы на самые неожиданные вопросы и при этом вести себя прилично.
— Я расскажу, что внутри у Алисы. Алиса большая, в ней много компонент, поэтому я немного поверхностно пробегусь.
Алиса — голосовой помощник, запущенный Яндексом 10 октября 2017 года. Она есть в приложении Яндекса на iOS и Android, а также в мобильном браузере и в виде отдельного приложения под Windows. Там можно решать свои задачи, находить информацию в формате диалога, общаясь с ней текстом или голосом. И есть киллер-фича, которая сделала Алису довольно известной в рунете. Мы пользуемся не только заранее известными сценариями. Иногда, когда мы не знаем, что делать, мы используем всю мощь deep learning, чтобы сгенерировать ответ от имени Алисы. Это получается довольно забавно и позволило нам оседлать поезд хайпа.
Как выглядит Алиса высокоуровнево?
Пользователь говорит: «Алиса, какую ожидать завтра погоду?»
Первым делом мы его речь стримим в сервер распознавания, он превращает ее в текст, и этот текст затем попадает в сервис, разработкой которого занимается моя команда, в такую сущность, как классификатор интентов. Это машиннообученная штука, задача которой — определить, чего же пользователь хотел сказать своей фразой. В этом примере классификатор интентов мог сказать: окей, наверное, пользователю нужна погода.
В основе концепции Dialog Manager лежит концепция, известная тем, кто занимается диалоговыми системами, как form-filling. Идея в том, что пользователь своими репликами как бы заполняет некую виртуальную форму, и когда он в ней заполнит все обязательные поля, его потребность можно удовлетворить. Движок event-driven: каждый раз, когда пользователь что-то делает, происходят какие-то события, на которые можно подписываться, писать их обработчики на Python и таким образом конструировать логику диалога.
Когда нужно в сценариях сгенерировать фразу — например, мы знаем, что пользователь говорит про погоду и нужно ответить про погоду, — у нас есть мощный язык шаблонов, который позволяет нам эти фразы писать. Вот так это выглядит.
Это надстройка над питонячьим шаблонизатором Jinja2, в которую добавили всякие лингвистические средства, например возможности склонять слова или согласовывать числительные и существительные, чтобы можно было легко когерентный текст писать, рандомизировать кусочки текста, чтобы увеличивать вариативность речи Алисы.
В классификаторе интентов мы успели попробовать множество разных моделей, начиная от логистической регрессии и заканчивая градиентным бустингом, рекуррентными сетями. В итоге остановились на классификаторе, который основан на ближайших соседях, потому что он обладает кучей хороших свойств, которых у других моделей нет.
Например, вам часто надо иметь дело с интентами, для которых у вас есть буквально несколько примеров. Просто учить обычные классификаторы мультиклассовые в таком режиме невозможно. Например, у вас оказывается, что во всех примерах, которых всего пять, была частица «а» или «как», которой не было в других примерах, и классификатор находит самое простое решение. Он решает, что если встречается слово «как», то это точно этот интент. Но это не то, чего вы хотите. Вы хотите семантической близости того, что сказал пользователь, к фразам, которые лежат в трейне для этого интента.
В итоге мы предобучаем метрику на большой датасете, которая говорит о том, насколько семантически близки две фразы, и потом уже пользуемся этой метрикой, ищем ближайших соседей в нашем трейнсете.
Еще хорошее качество этой модели, что ее можно быстро обновлять. У вас появились новые фразы, вы хотите посмотреть, как изменится поведение Алисы. Все, что нужно, это добавить их множество потенциальных примеров для классификатора ближайших соседей, вам не нужно переподбирать всю модель. Допустим, для нашей рекуррентной модели это занимало несколько часов. Не очень удобно ждать несколько часов, когда вы что-то меняете, чтобы увидеть результат.
Семантический теггер. Мы пробовали conditional random fields и рекуррентные сети. Сети, конечно, работают намного лучше, это ни для кого не секрет. У нас там нет уникальных архитектур, обычные двунаправленные LSTM с attention, плюс-минус state-of-the-art для задачи тегирования. Все так делают и мы так делаем.
Единственное, мы активно пользуемся N-best гипотез, мы не генерируем только самую вероятную гипотезу, потому что иногда нам нужна не самая вероятная. Например, мы перевзвешиваем зачастую гипотезы в зависимости от текущего состояния диалога в dialog manager.
Если мы знаем, что на предыдущем шаге мы задали вопрос про что-то, и есть гипотеза, где теггер что-то нашел и гипотеза, где не нашел, то наверное, при прочих равных первое более вероятно. Такие трюки нам позволяют немного улучшить качество.
А еще машиннообученный теггер иногда ошибается, и не совсем точно в самой правдоподобной гипотезе находят значение слотов. В этом случае мы ищем в N-best гипотезу, которая лучше согласуется с тем, что мы знаем о типах слотов, это позволяет тоже еще немного качество заработать.
Еще в диалогах есть такое явление Анафора. Это когда вы с помощью местоимения ссылаетесь на какой-то объект, который был раньше в диалоге. Скажем, говорите «высота Эвереста», и потом «в какой стране он находится». Мы анафоры умеем разрешать. Для этого у нас две системы.
Одна general-purpose система, которая может работать на любых репликах. Она работает поверх синтаксического разбора всех пользовательских репликах. Если мы видим местоимение в его текущей реплике, мы ищем known phrases в том, что он сказал раньше, считаем для каждой из них скорость, смотрим, можно ли ее подставить вместо этого местоимения, и выбираем лучшую, если можем.
А еще у нас есть система разрешения анафор, основанная на form filling, она работает примерно так: если в предыдущем интенте в форме был геообъект, и в текущем есть слот для геообъекта, и он не заполнен, и еще мы в текущий интент попали по фразе с местоимением «туда», то наверное, можно предыдущий геообъект импортировать из формы и подставить сюда. Это простая эвристика, но производит неплохое впечатление и круто работает. В части интентов работает одна система, а в части обе. Мы смотрим, где работает, где не работает, гибко это настраиваем.
Есть эллипсис. Это когда в диалоге вы опускаете какие-то слова, потому что они подразумеваются из контекста. Например, вы можете сказать «расскажи погоду», а потом «а на выходных?», имея в виду «расскажи погоду на выходных», но вы хотите повторять эти слова, потому что это ни к чему.
С эллипсисами мы тоже умеем работать примерно следующим образом. Эллиптические фразы или фразы-уточнения — это отдельные интенты.
Если есть интент get_weather, для которого в трейне фразы типа «расскажи погоду», «какая сегодня погода», то у него будет парный интент get_weather_ellipsis, в котором всевозможные уточнения погоды: «а на завтра», «а на выходные», «а что там в Сочи» и так далее. И эти эллиптические интенты в классификаторе интентов на равных конкурируют со своими родителями. Если вы скажете «а в Москве?», классификатор интентов, например, скажет, что с вероятностью 0,5 это уточнение в интенте погода, и с вероятностью 0,5 уточнение в интенте поиска организаций, например. И затем диалоговый движок перевзвешивается scores, которые назначил классификатор интентов, который назначил их с учетом текущего диалога, потому что он, например, знает, что до этого шел разговор о погоде, и вряд ли это было уточнение про поиск организаций, скорее это про погоду.
Такой подход позволяет обучаться и определять эллипсисы без контекста. Вы можете просто откуда-то набрать примеров эллиптических фраз без того, что было раньше. Это довольно удобно, когда вы делаете новые интенты, которых нет в логах вашего сервиса. Можно или фантазировать, или чего-то придумывать, или пытаться на краудсорсинговой платформе собрать длинные диалоги. А можно легко насинтезировать для первой итерации таких эллиптических фраз, они будут как-то работать, и потом уже собирать логи.
Вот жемчужина нашей коллекции, мы называем ее болталкой. Это та самая нейросеть, которая в любой непонятной ситуации чего-то от имени Алисы отвечает и позволяет вести с ней зачастую странные и часто забавные диалоги.
Болталка — на самом деле fallback. В Алисе это работает так, что если классификатор интентов не может уверенно определить, чего хочет пользователь, то другой бинарный классификатор сперва пытается решить — может, это поисковый запрос и мы найдем что-то полезное в поиске и туда отправим? Если классификатор говорит, что нет, это не поисковый запрос, а просто болтовня, то срабатывает fallback на болталку. Болталка — система, которая получает текущий контекст диалога, и ее задача — сгенерировать максимально уместный ответ. Причем сценарные диалоги тоже могут являться частью контекста: если вы говорили про погоду, а потом сказали что-то непонятное, сработает болталка.
Это позволяет нам делать вот такие штуки. Вы спросили про погоду, а потом болталка ее как-то прокомментировала. Когда работает, выглядит очень круто.
Болталка — DSSM-подобная нейронная сеть, где есть две башни энкодера. Один энкодер кодирует текущий контекст диалога, другой — ответ-кандидат. У вас получается два embedding-вектора для ответа и контекста, и сеть обучается так, чтобы косинусное расстояние между ними было тем больше, чем уместнее данный ответ в контексте и чем неуместнее. В литературе эта идея давно известна.
Почему у нас вроде неплохо все работает — кажется, что чуть лучше, чем в статьях?
Никакой серебряной пули нет. Нет техники, которая позволит внезапно сделать классно разговаривающую нейронную сеть. Нам удалось достичь неплохого качества, потому что мы в качестве понемножку выиграли везде. Мы долго подбирали архитектуры этих башен-энкодеров, чтобы они лучше всего работали. Очень важно правильно подобрать схему сэмплирования отрицательных примеров в обучении. Когда вы обучаетесь на диалоговых корпусах, у вас есть только положительные примеры, которые когда-то кем-то были сказаны в таком контексте. А отрицательных нет — их нужно как-то генерировать из этого корпуса. Там есть много разных техник, и одни работают лучше, чем другие.
Важно, как вы выбираете ответ из топа кандидатов. Можно выбирать наиболее вероятный ответ, предлагаемый моделью, но это не всегда лучшее, что можно сделать, потому что при обучении модель учитывала не все характеристики хорошего ответа, которые существуют с продуктовой точки зрения.
Есть ряд дополнительных метрик, которые мы стараемся оптимизировать. Это когда Алиса к пользователю на «ты» обращается, говорит о себе в мужском роде и произносит всякие дерзости, гадости и глупости.
Несколько минут назад на конференции 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 Cancellation решает эту проблему.
Все эти алгоритмы работают локально на главной плате платформы IO. Только после того, как сигнал проходит через все этапы очистки и выделения речи, он отправляется на сервера Яндекса для полноценного распознавания нейросетями. Вы можете себе представить, насколько трудоемко их обучить, если для понимания одного слова требуются тысячи записей. Этот процесс постоянно совершенствуется, но нам уже удалось добиться точности распознавания речи, сопоставимой с живым собеседником.
Яндекс.Станция вскоре поступит в продажу — если вы оставите адрес на сайте, мы сообщим, когда это произойдёт. В этом посте мы не стали описывать все продуктовые возможности устройства, а сфокусировались на главных технологических вызовах, которые стоят перед разработчиками умных устройств с голосовым управлением. Хочется верить, что в ближайшем будущем мы сможем попросить Алису включить стиральную машину, купить билеты или даже накормить кота – и она выполнит просьбу. Яндекс.Станция и технология IO – наш первый шаг к этому будущему.
В закладки
У нас периодически выходят статьи на тему сборки умного дома, но лично я заморачиваться с их сложной настройкой через Rapsberry Pi и другие сторонние девайсы не очень хотел.
Давно уже думал над тем, чтобы попробовать собрать нечто подобное, но чтобы не так сильно заморачиваться. Раньше это казалось чем-то недостижимым, футуристичным, дорогим и не очень полезным для квартиры. Но теперь все более, чем реально.
Пока собрал только небольшой фрагмент умного дома, но это только начало. И мне уже нравится результат. Особенно при работе с Алисой от Яндекса.
Общие впечатления
Да, это не приложение Дом от Apple. Гаджеты не поддерживают HomeKit и не управляются с Apple Watch. Но при наличии колонок с Алисой мне вполне хватает и такого решения.
Тем более, что через приложение Яндекс можно создавать сценарии для голосового помощника. Скажем, команду «Алиса, я дома» — включается расслабляющая музыка, заваривается кофе и включается телевизор. Это ли не базовое удобство, о котором стоит мечтать?
Кому интересно больше про умный дом:
В закладки
Зачем вообще брать технику со встроенной Алисой
Знаете вариант получше, говорящий на русском языке? Я — нет. Приятнее всего работать именно с нормально общающейся Алисой, умеющей базовые вещи для управления умным домом.
Она совместима с самыми популярными брендами:
▪️ Elari
▪️ Philips
▪️ Redmond
▪️ SmartThings
▪️ Xiaomi
▪️ Z.Wave
▪️ Rubetek
Думаю, 4 из них вы точно знаете. И все эти девайсы настраиваются прямо в приложении Яндекса, которое и является неким хабом для управления умным домом.
Да, Алиса не обладает огромным функционалом, но что-то всё-таки умеет, чего мне пока хватает. И со временем она все равно научится большему (я в это верю).
Google Assistant? В топку, полноценно не управляет техникой на русском языке. Siri? Для работы с приложением Дом нужно миллион переключателей и переходников, совместимых с HomeKit.
Что в планах по развитию умного дома
Сейчас думаю взять умный пылесос Xiaomi Mi Robot Vacuum Cleaner и добавить побольше розеток для управления имеющейся техникой в доме.
Пока на розетках управляются телевизоры, но никто же не мешает подключить микроволновку и прочие устройства.
Плюс хотелось бы докупить смарт-замки Xiaomi Aquara Smart Door Lock, но для них потребуется создать отдельную защищённую сеть, чтобы никто не смог просто так войти домой. Ну и бонусом — умные жалюзи.
Об этом я расскажу позднее, когда реализую свои идеи.
Как настраивал
Здесь все оказалось несложно. Для связи гаджетов между собой хватает приложения Ready for Sky, но для нормальной интеграции с головным управлением через Алису этого мало.
2. Переходим во вкладку Устройства в дополнительном меню, скрытом за иконкой с тремя палочками.
3. Открываем Умный дом —> Добавить устройство —> Ready for Sky.
4. Нажимаем Oбьединить аккаунты, вас перекинет в приложение Ready for Sky и предложит соединить учетные записи Яндекса и Redmond.
После этого, казалось бы, Алиса должна заработать с умной техникой. Но как бы не так.
Идеальная связка для дистанционного управления техникой Redmond
Для управления всеми гаджетами требуется создать мост. И здесь есть 2 варианта: либо докупить пульт управления от Redmond, либо взять в руки смартфон на Android.
Я воспользовался вторым вариантом, поскольку дома есть HTC One M8. Он и выступил в роли моста, соединяющего Алису и технику. Связываются устройства между собой и цифровым ассистентом через приложение R4S Gateway.
Настройка несложная — включил Bluetooth, неспаренные гаджеты нашлись, нажал Подключить и зажал на каждом гаджете кнопку включения на 3-5 секунд. Через пару мгновений все сконнекченно.
Важно: нельзя использовать приложения Ready for Sky и R4S Gateway на одном Android-смартфоне. Это может привести к сбоям и ухудшению работы устройств. Но никто не запрещал устанавливать Ready for Sky на iPhone.
Либо если у вас нет Android-смартфона, можно поставить любой популярный эмулятор Android на Mac или PC и управлять с ноутбука техникой по Bluetooth.
Собственно, настройка завершена. Алиса научилась управлять моим умным домом.
Правда, тонко управлять им ассистент ещё не умеет. Пока доступно только включить-выключить. Так что свет/розетки/чайник/кофеварка работают только в одном предварительно настроенном режиме.
Если решитесь себе взять цоколи Redmond, вот их правильная настройка, чтобы можно было сказать «Алиса, включи свет в коридоре/спальне/туалете».
1. В приложении Яндекса создаете группу Коридор (или какую вам требуется).
2. Переименовываете цоколь в Коридор (или где у вас находится устройство).
Важно называть технику так же, как называется группа, в которой она располагается. Приложение само распознаёт тип девайса. Если «имена» совпадать не будут, то Алиса не сообразит, что именно вы хотите включить. В первое время на запрос «включи свет в коридоре» голосовой помощник просто включал весь свет в квартире.
Что в итоге я выбрал
Говорю сразу, это не реклама, а чисто мне мнение. Почитав о Xiaomi у нас же на сайте, я решил, что с их техникой слишком много заморочек, которыми я вовсе не горю желанием заниматься.
Хочется простоты — вставил, подключил, работает. Без костылей и прописывания тонн строчек кода для грамотной работы устройств. Но это не значит, что я вовсе отказался от китайцев, у них, наверное, самый широкий выбор умных девайсов. Так что отложил их просто на потом.
Почему не Яндекс? Алиса же!
Во-первых, у него пока особо нет умной техники. У компании всего три умных устройства:
▪️ Смарт-лампочка: 1190 руб.
▪️ Смарт-розетка: 1190 руб.
▪️ Пульт для управления умным домом: 1390 руб.
Во-вторых, настраивается она невероятно плохо. Помню, как приходил в офис и слышал возмущения от настройки той лампочки, которую надо несколько раз включать и выключать для спаривания с хабом. И то она далеко не с первого раза подключалась.
Про розетку ничего не могу сказать, а вот пульт, хоть и настраивается так же кривовато, но хотя бы работает с тем же кондиционером.
В общем, у кого-то техника Яндекса работает, а у кого-то нет. Отзывы слишком смешанные, и рисковать я не стал.
Умный цоколь
Поэтому пока остановился на российской Redmond, у которой относительно недорогая техника. А выбор не такой мелкий, как может показаться: от умных розеток и лампочек до смарт-чайников и кофеварок.
Собственно, я и решил строить себе умный дом с малого. Купил для старта 2 цоколя, 2 розетки, кофеварку и чайник. Ими можно управлять через приложение Ready for Sky от Redmond, в нем возможна более тонкая настройка, нежели через Алису.
К примеру, можно установить температуру нагревания воды в чайнике, изменить его подсветку по RGB-палитре и так далее.
Но это мелочи, которые лично мне не очень-то и нужны.
Конкретно, что я взял себе:
▪️ Умный цоколь REDMOND SkySocket 202S: 599 руб.
▪️ Умная розетка REDMOND SkyPort 103S: 599 руб.
▪️ Умный чайник-светильник REDMOND SkyKettle G213S: 3495 руб.
▪️ Умная кофеварка REDMOND SkyCoffee M1509S: 4990 руб.
За всё вышло 10 881 руб. Плюс взял Яндекс.Станцию для голосового управления из любой комнаты, чтобы умными гаджетами могла пользоваться вся семья. Это ещё дополнительно 9990 руб.
Итого: 20 871 руб.
Можно взять вариант попроще со встроенной Алисой, это даже разумнее для больших квартир, где одной колонки не хватит.
Например, Irbis A за 3000 руб. — штуки три на квартиру будет достаточно. Хоть эта колонка звучит объективно плохо, зато ее громкости и мощных микрофонов достаточно для общения с голосовым помощником.
Читайте также: