Что мы имеем на данный период времени в мире ГА? Известный факт: каждая из крупных IT-компаний имеет свой инструмент для работы с умными домами. И каждый вендор предоставляет свой API для заинтересованных в интеграции. А на начальном этапе даже доплачивает разработчикам за новые навыки (actions, skills и т. д. — в соответствии с терминологией вендора).

Самый удобный и практичный на сегодняшний день сервис, по оценкам наших специалистов, это Amazon Alexa. У неё больше возможностей для детального формирования навыка, нежели у Google Assistant, Yandex «Алиса», Mail.Ru «Маруся», Тинькоф «Олег» и других. Для Alexa прибор – это параметрическая виртуальная сущность, вследствие чего навыки могут настраиваться под каждый прибор индивидуально. Например, помимо температуры воды, можно задать расходники, которые ассистент будет предлагать купить на Амазоне. Но, к большому сожалению, в настоящее время Alexa не поддерживает русский язык и не работает на территории РФ, поэтому для российского пользователя этот ГА бесполезен. У Google и «Яндекса» ассистент более «естественный» – получает и отвечает на команды «человеческим» языком, может вести диалог с пользователем, что делает этот ГА более приятным для использования. Единственным серьёзным минусом Google было то, что его Actions не поддерживали русский язык. Однако с 24.07.2019 Google Actions работают в «телефонах» на русском языке, так что этот недостаток коллегами устранен.

Это всё ладно. А если мы захотим интегрировать один прибор с несколькими ГА?

Это можно. С помощью девайса.

Девайс – это сущность со своим поведением в системе. Это общий принцип для всех вендоров. И вот тут стоит остановиться, здесь начинается всё самое интересное. Различия — в подходах. Например, Google и Яндекс стараются стандартизировать управление техникой. То есть теперь придётся писать код не для каждого отдельного прибора, а хватит одной программы для всей серии. И даже если изменится прошивка, придется изменить код один раз, что весьма удобно. Наша компания уже имеет интеграцию с Google, Yandex, Amazon. Техника слушается Алису, Алексу и ассистента Google. Ранее мы показывали, что внутри голосовых ассистентов.

Откуда взялись голосовые помощники?


Одна из самых продвинутых систем распознавания речи в мире принадлежит Google, ее история началась ещё в 2002 году. Компания выпустила Voice Search, на основе которого и был разработан Google Assistant. В 2016 был он представлен на презентации Google I/O. Google Home это одна из 'surface' для Google Assistant. Сейчас точность распознавания речи их ГА оценивается в 95% и почти не уступает людям.

Голосовой помощник Alexa был представлен компанией Amazon в 2014. Там же была представлена и и умная колонка Amazon Echo, которая умеет управлять большим количеством устройств в рамках «умного дома».

Yandex SpeechKit – система распознавания речи у Яндекса. Она используется в 400+ приложениях. Также компания внедряет свой ГА – Алису – в браузеры и электронные устройства. Свой ГА российская компания представила в 2017, а уже осенью 2018 года Яндекс выпустил в продажу свою умную колонку «Яндекс.Станция».

Наши специалисты говорят, что к сто пятьдесят шестому году...


Шутки шутим, поэтому пока лишь к 2020 году. Немного о статистике:

  1. В 2017 году зарегистрировано около 33 миллионов устройств с голосовым управлением по всему миру;
  2. Западные эксперты назвали голосовой поиск одним из топ-3 трендов SEO в 2017 году;
  3. На 2018 год «Google Ассистент» работает на 400 миллионах устройств по всему миру. И эта цифра только растёт;
  4. По данным Global Web Index, 25% людей в возрасте от 16 до 24 лет используют голосовой поиск с мобильных устройств;
  5. По прогнозам компании Comscore, к 2020 году 50% запросов будет производиться голосом;
  6. Согласно исследованиям WalkerSands за 2018 год, каждый пятый пользователь умной колонки от Amazon покупал с ее помощью, а треть планировала сделать это в следующем году;
  7. Согласно исследованию PWC, 71% пользователей при поиске в сети предпочли бы набирать текст голосам, а не вручную.

Как можно понять, тенденция использования ГА увеличивается, что говорит о том, что самое время брать вендор и запускать собственного помощника. Для нас ключевое в нём – это навык управления умными устройствами, что будет отличать SkyFriend от других ассистентов.

А давайте интегрироваться!


НО также наша задача – работать с имеющимся подходом вендора и далее адаптировать его под наш специфичный протокол управления техникой. Мы идём по пути стандартизации, практического применения, воспринимая устройство как набор навыков: каждый чайник умеет кипятить воду (навык), также он умеет нагревать её до нужной температуры (навык), поддерживать эту температуру на протяжении заданного времени и т. п. Например, команда «On/Off» – стандартная для любого прибора. Задача – перевести эту команду от сервиса под наш протокол. В чём особенность нашего протокола? Он связывает разных голосовых ассистентов (сейчас три, в перспективе — всех крупных) и позволяет им всем работать с приборами, в том числе одновременно. Связь – один ко многим. Вопрос состоит лишь в том, как именно мы будем адаптировать наш протокол ко всем подходам?

Посмотрим. Отдельные проекты под каждый ГА – это:

  • Увеличенный штат сотрудников;
  • Много кода и legacy в будущем;
  • Невозможность масштабирования.

При появлении на рынке новых ассистентов придется пропорционально увеличивать штат и объёмы работ. Логично, что от такого варианта мы отказались. Однако, несмотря на различные подходы для каждого голосового ассистента, у них можно найти общее – то, с чем они в принципе работают – skill, trait, навык. Названия разные, но суть одна и та же. Значит, задача разработать свой «навык», который будет восприниматься ассистентами. В дальнейшем нужно будет только добавлять новых вендоров, что решает вопрос масштабирования. Также будем держать в уме, что значительное количество нашей техники использует BLE транспорт, что диктует архитектурные особенности.

Мы разработали два микросервиса, работающих в паре.



Первый – командный слой. Его задача: провести конвертацию (маппинг) между API вендора и нашим протоколом. Он работает так: специфический запрос ассистента – маппинг под наш навык – маппинг под протокол устройства. При таком подходе легко добавлять новые навыки: производится маппинг под конечный протокол R4S – код передается во второй сервис. Последний пункт может быть исключен при передаче команды по Wi-Fi.

Второй сервис или транспортный слой служит для:

  1. Установления сессии с клиентским гейтвеем;
  2. Поднятия и поддержания Bluetooth-соединения;
  3. Приёма/передачи команд от первого сервиса.

Этот сервис – часть более высокоуровневой сущности: BT-девайс плюс gateway-посредник, работающие по принципу: приём команд через интернет – передача по BT. Беспроводные соединения могут быть ненадёжными. Почему? Радиоканал может быть ограничен параметрами среды — толстыми бетонными стенами и др… Как итог, приборы элементарно могут «отвалиться», поэтому поддержание стабильного соединения становится важной задачей для транспортного слоя.



Политика соединения может быть разной:

1. Постоянная поддержка связи.

Плюсы: минимальная задержка выполнения команд ГА.
Минусы: дорого по трафику и энергопотреблению; существует ограничение по количеству одновременно подключённых устройств (в данном поколении Bluetooth 4.0/4.2 – шесть, в Bluetooth 5.0 до двадцати). Также это потребует дополнительных серверных ресурсов.

2. Подключение по требованию.

Плюсы: подключение почти не требует трафика и заряда.
Минусы: высокая задержка выполнения команд плюс само выполнение не гарантировано (соединение может «отвалиться» или быть неуспешным). При таком подходе мы не укладываемся во время ожидания ГА на ответ. Сессия закончилась и the end.

Так же остается вопрос – команда получена и отработана, НО что делать с соединением дальше: отключаться или держать дальше. Обратим внимание на то, что ровно таким же способом работает Apple HomeKit при работе с BLE оконечными приборами (через Apple TV или iPad в качестве гейтвея). Выглядит это так – при первой попытке отправить команду процесс занимает довольно продолжительное время (или лучше сказать – заметное для пользователя), однако последующие команды выполняются почти мгновенно. После окончания работы пользователя с прибором операционная система «кладёт» сессию через некоторое разумное время и далее процесс повторяется как новый.

Однако, это ещё не всё.


Сложность 1. Маршрутизация Gateway.



Если в помещении несколько гейтвеев, то встаёт вопрос – к какому из них подключаться, и какой гейтвей к какому прибору подключается. Сейчас всё работает по принципу – кто успел, тот и подключился. Не всегда удачная имплементация, поскольку ближайший (а значит способный более надёжно подключиться) гейтвей может быть занят в используемом таймслоте. Тогда подключается тот, кто свободен и способен. Это происходит без оглядки на качество связи. Поэтому важно выстроить иерархию и схему работы, чтобы пользователю было максимально удобно.

Сложность 2. Множество пользователей.

Это ситуация, когда одним гейтвеем или устройством могут пользоваться одновременно несколько пользователей. Разумеется с обеспечением высокого уровня безопасности. Например, с разных ГА или с ГА и телефонов пользователя. Рой вопросов: какой прибор включить первым, если команды ГА противоречат друг другу, какая команда в приоритете и должна быть выполнена раньше и т. п. Частично нашу проблему решает сервис Redis – база данных, в которой хранятся сессии пользователей, состояния девайсов и осуществляется приемопередача команд и выступающая шиной передачи данных между первым и вторым сервисами. Но на этом пока решение проблемы останавливается.

Что сделали мы? Мы сделали SkyFriend. Это наша собственная разработка, голосовой помощник по управлению техникой, который также будет поддерживать русский язык. Ключевая особенность нашего ГА заключается в том, что он заточен на непосредственное взаимодействие с умной техникой Ready for Sky без дополнительных приборов. Прибор два в одном — ассистент совмещен с гейтвеем, который будет получать информацию либо через команды, которые пользователь передаёт со своего смартфона, либо непосредственно голосом. Плюс SkyFriend имеет дополнительные функции, которые позволят ему конкурировать с теми, которые уже существуют. Он умеет по запросу включать напоминания, может определять геолокацию пользователя, искать информацию в Wikipedia, рекомендовать фильмы, произносить тосты, читать новости, отвечать на вопросы, сообщать время и погоду в любом городе мира, играть с пользователем в «Загадки» и «Города», шутить шутки. Покупка билетов и заказ такси пока находятся на стадии альфа-теста. И это ещё только часть функционала.

Совсем недавно Google анонсировали работу своей колонки на похожей архитектуре — исполнительный скрипт загружается непосредственно в колонку Google Home. Выигрыш на стороне пользователя состоит в снижении времени на исполнение команд. Не нужно отправлять её на сервер производителя техники, она с сервера Google по тому же каналу связи летит прямо на колонку и там исполняется.

Однако, Google всё ещё не поддерживает другие транспорты — Bluetooth, ZigBe, Z-Wave, RF и т.д. непосредственно на колонке, а SkyFriend поддерживает Bluetooth 5.0.

Что нам ещё осталось? Работа с ресурсами системы — добавить памяти, мощности процессора и т.д. И мы готовы предложить пользователям новое качество ГА.

Что можем сказать в заключении?


ГА – это тренд, это удобно, это практично. Тема новая, комплексная, в ней есть множество вопросов, которые пока сложно решить. Тем более в одиночку. Поэтому приглашаем к дискуссии.

Что будет дальше? А дальше будет наша новая статья об архитектуре SkyFriend. Всё расскажем и покажем. Но потом.

P. S. Предложения и отзывы можно оставить в комментариях.

Комментарии (16)


  1. podivilov
    30.07.2019 18:25

    Что ещё за «гейтвей»? Почему нельзя просто написать «шлюз»?


  1. SemenPV
    30.07.2019 19:33

    Чайник и голосовые ассистенты.
    Купите чайник который всегда поддерживает нужную температуру и ни в коем случе никаких голосовых ассистентов или wifi.

    Ну а так конечно, как в одной статье писали, не нужен «умный» дом, нужен удобный.

    После пары лет использования алексы, так и не понял в чём её киллер-фича. Погоду спросить, таймер поставить да музыку поиграть. Больше ничего не прижилось.


    1. CyberBot
      31.07.2019 00:53

      Почти 1 год юзаю станцию Алису. Основные команды это погоду спросить, будильник или таймер установить, включить напоминания и музыку послушать. Вот это пока все.
      Есть у меня и WiFi выключатели sonoff, но их никто голосом не запускает, проще в ручную включить чем 5 минут вызывать навык. выглядит так: Алиса попроси «Название навыка» включить свет. С этим бы можно было мириться, если бы Алиса с первого раза поняла, что он нее хотят, но она начинает вести какой то, ни о чем диалог. Так что остается надеяться на лучшее и что когда нибудь все заработает, как этого хотелось бы


      1. solariserj
        31.07.2019 15:33

        После 2 месяцев пользования алисой понял что не хватает хардварнрго пульта, а может даже приложения для телефона с пультом для ЯНДЕКС.СТАНЦИИ. А то кричать сделай потише ночью не комильфо, а также порой войдёт в какой-то цикл и не всегда тебя сразу поймёт, и начинается пляски с бубном чтоб запустить только то что нужно.


        1. lingvo
          31.07.2019 15:51

          И тут на сцену выходит… Siri/Дом для iPhone!


          На самом деле это единственная удобная фича, которая у меня пока прижилась. То есть берешь телефон, свайп вверх, тыкаешь на иконке "Дом", тыкаешь на иконке включить/выключить свет. Все.


          Ничего не надо говорить, никакой хардварный пульт не нужен. И как ни странно, работает всегда и подключается к любой системе УД — у меня в данном случае OpenHAB


          И основная киллерность заключается только в том, что не надо запускать никаких приложений — управление доступно сразу с заблокированного телефона.


          1. ready_for_sky_team Автор
            01.08.2019 15:34

            Да, ГА еще многому учиться. Вы пользуетесь Siri ежедневно? Нравится?


            1. lingvo
              01.08.2019 17:35

              Я Siri не пользуюсь. Я пользуюсь смартом в качестве пульта. Но практически ежедневно, выключая свет перед сном в своей и других комнатах забывчивых домочадцев.


  1. professor88888
    31.07.2019 08:29

    Для унификации голосового ассистента помимо протоколов надо бы еще и девайс унифицировать. А то всякие «хардовые ассистенты» по разному функционируют. Сотовый телефон в баню таскать, чтоб там парку добавить или сидя на горшке курс валюты прослушать (есть сейчас «умные» горшки)… чего нибудь по универсальнее и по надёжнее надо. Индивидуальное. Например, вытянутый цилиндрический предмет (чтоб две-три батарейки ААА помещались). Одним концом направляем на «умный предмет» (узконаправленный луч, типа), а на втором конце микрофон (желательно суперкардиоида, чтоб тоже узконаправленный и помехи не ловил) и бормочем туда «лампочка, ёлочка, камин...» (нужное подчеркнуть) "… гори"! Кстати такой прототип видел в «Золушке» или «Гарри Поттер» (для тех кто помоложе). Короче, пора уже наладить производство. Таскать удобно — можно за пояс заткнуть, а то мобильники у народа то падают на твёрдое, то садятся на них… Знакомая за последние три месяца два смартфона в унитазе утопила… (типа карман, джинсы). Вот и представляю, после 2020 ходит народ, орёт на всякие предметы и палочкой в них тычет… 21 век, однако!



  1. NoOne
    31.07.2019 09:03

    Что насчет открытия протокола? Хотелось бы напрямую с Raspberry Pi управлять чайником и другой техникой по Bluetooth. Чтобы, например, от датчика движения я мог включить чайник на нужную температуру. Или хотя бы API к гейтвею (хотя с ним большие проблемы у меня, постоянно отваливается), чтобы можно было его попросить включить чайник.


    1. ready_for_sky_team Автор
      01.08.2019 15:38

      Мы уже работаем над этим. Более подробно об API R4S мы писали в этой статье.


  1. professor88888
    31.07.2019 09:30

    Теперь серьёзно, по теме. Нужна помощь! Месяц как нахожусь в «затыке».
    Решил для Arduino на Python сделать ассистента, чтобы светодиодами поморгать. Из библиотек попробовал выбрать SpeechRecognition и PyAudio. Но тут выяснилась проблема их несовместимости с последней версией Пайтона — 3.7 (лечится переходом на старую версию) и самое главное — в Винде должен быть установлен языковой пакет, которого нет!!? Из 5 компьютеров, языковой пакет оказался только на одной машине. У меня XP Home, Win7 pro, Win8.1, Win10 — языкового пакета нет не только на русском, но и на английском. Попытка установить язык (любой) не увенчалась успехом — какие то пакеты инсталировал (из набора обновлений)… обнулял настройки в реестре… рецептов по сети много — Винда не ставит язык! Чего то пишет про версию редакции, типа Ультимейт подавай. Хоум и Про не катит? Где гарантия что покупая очередной новый компьютер не столкнусь с той же проблемой. О каких массовых ассистентах тогда может идти речь?
    Ну ладно, это для моих самоделок трабл — типа есть куда дальше учиться и развиваться… Но! Купил на Стиме программульку VoisBot (чтоб по голосу в Team Fortress турельку ставила). И… не работает! Типа «у Вас не установлен языковой пакет». Т.е. плачу бабки, а в итоге программа не может самостоятельно распознать голос?!!! Когда из 5-ти машин только одна корректно распознаёт голос — это не 21 век! Думаю лет тридцать технологиям ещё развиваться… Может у кого есть рецепт как Винду научить распознавать голос (приложение) в обход стандартным API или есть рецепт как поставить язык на лицензию, где он по умолчанию не предусмотрен?


  1. amarao
    31.07.2019 12:04

    Я не понимаю мотивации людей, которые сами, за свои деньги, ставят аппаратное spyware в квартиру. Просто не понимаю.


  1. webself
    31.07.2019 23:14

    Купил я какое-то время назад ваш умный чайник. Небольшой фидбек. Вещь оказалась бесполезная. С управлением с мобилки поигрался пару дней после покупки, смысла особого в управлении чайником с телефона в реальной жизни, оказалось, нет. Больше не баловался. Но это ничего. Хуже то, что ваш чайник вкус воды меняет, которая в нем кипятится. Какой-то пластиковый привкус прибавляется незначительный, но заметный. Ребята, научитесь пожалуйста для начала просто чайники делать. Потом в них уже мозги пихайте…


    1. ready_for_sky_team Автор
      01.08.2019 15:36

      Обратитесь, пожалуйста, в сервисный центр Redmond. Пластикового привкуса быть не должно.


      1. webself
        01.08.2019 16:33

        Ради интереса набрал, проконсультировался. Результатом обращения с моей проблемой может быть либо обмен на такую же модель, но новую (а смысл? шило на мыло), либо возврат денег (тоже смысла мало, чек не найти мне сейчас уже). Просто воспримите это как отзыв пользователя. Реально есть у вас проблема с пластиком...