Давно прошло время «войны браузеров», однако, ее результаты отчетливо видны и сегодня. Сейчас у пользователя есть выбор среди различных надежных, удобных и фактически однотипных программных решений, подкрепленных стандартами HTML5, CSS3 и, конечно, стремительно развивающимися реализациями JavaScript. Но все началось с того момента, когда компании-разработчики с чего-то решили, что «победитель», доминирующий на рынке браузеров, будет и «управлять» Интернетом. И, как говорят философы, история повторилась. Похоже, теперь речь идет о голосовом интерфейсе и, соответственно, конкуренции голосовых ассистентов.
![](https://habrastorage.org/r/w780q1/webt/os/ya/os/osyaosizu8gc2imds-hcbe9givk.jpeg)
Image: How to Mount your Amazon Echo Dot on the Wall, Ceiling, or Under the Counter – Android Central
Исторически голосовой набор номера был реализован еще в первых кнопочных сотовых телефонах, впрочем, как и Bluetooth Hands-Free. Затем появились голосовые технологии Apple Siri, Google Now и Microsoft Cortana, а только вслед за ними мир увидел Amazon Alexa. В отличие от предыдущих решений сервис Alexa был привязан не к определенному гаджету или операционной системе, компьютеру и т.д., а сопровождался голосовым ассистентом, как устройством и при этом, технически стал доступен на любом устройстве.
Что мы видим сейчас: выход на рынок Google Home, Apple HomePod и Microsoft Cortana, в составе беспроводной акустики Harman Kardon Invoke. Чем не «война» голосовых ассистентов. А если вспомнить недавний анонс о том, что Amazon купила стартап Ring, занимающегося решениями в области безопасности умного дома и, совсем свежее заявление, о прекращении продаж термостатов Nest компании Google на площадке Amazon, то становится очевидным, что уже начинается «бой» не просто за Интернет, как площадку для рекламы, а за лидерство в сфере Интернета вещей (Internet of things, IoT) и, в частности, умного дома (Smart Home).
![](https://habrastorage.org/r/w780q1/webt/hy/oh/vk/hyohvkf0fnhckiiqolbavpot2hs.jpeg)
Image: Echo Dot (2nd Generation) – Amazon
Рассмотрим более подробно инфраструктуру вокруг Alexa и, в частности, устройство Amazon Echo Dot. Интерес к решению Amazon Alexa вполне понятен, т.к. предлагаемый сервис, гаджеты и облако AWS тесно связаны между собой и создают для пользователя и разработчиков единое информационное пространство, в котором на первое место выходит голосовое управление. Не удивительно, что экосистема Amazon сейчас выходит на новый уровень интерактивности с клиентом, как магазина, так и всей облачной платформы AWS.
Не случайно, в завершении 2017 года, умная колонка Echo Dot стала лидером продаж на площадке Amazon. При официальной цене $49.99 и, например, небольшого ожидания очередной акции от Amazon, можно получить цену за девайс в размере $29.99. А, как показал опыт проекта Raspberry Pi, как раз цена порядка 35-ти долларов вполне оправдана для «разжигания» интереса у гиков. Хотя устройство не поддерживает русский язык, это не повод для того, чтобы не интересоваться новым. Вспомним, как когда-то не было русскоязычного интерфейса в популярных операционных системах и т.п.
Сегодня покупка на площадке Amazon, даже, если мы физически не находимся в США, не составит большого труда. Самое простое – это прибегнуть к услуге почтового форвардинга. Еще есть ограничение в том, что за пределами США поддерживаются не все сервисы, с которыми может взаимодействовать Alexa. Но вряд ли такие региональные привязки сильно повлияют на интерес к новому, тем более, проигрывание платных каналов – не основное преимущество для голосовых ассистентов. Правда, сразу стоит признать, что доступность коммерческих медийных сервисов значительно расширяется, а голосовое управление добавляет к ним очень удобный функционал. Так же сервис Alexa доступен и на других устройствах, например, смарт камере Echo Look, приставке Fire TV Stick с дистанционным управлением Alexa Voice Remote и многих других. Кстати, узнать возможности Amazon Alexa можно всего лишь установив соответствующее приложение на смартфон или планшет (в линейке Fire Tablet with Alexa сервис уже предустановлен), но полностью сервис доступен при использовании специализированного голосового ассистента.
Устройства Echo ($99.99) и Echo Plus ($149.99) оснащены хорошей акустикой, а дополнительно Echo Plus включает в себя еще и встроенный Smart Home Hub. Устройства Echo Spot ($129.99) и Echo Show ($229.99) содержат встроенные дисплеи. На фоне этих устройств колонка Echo Dot занимает начальные позиции, но, например, всегда к ней можно подключить проводную акустику или использовать для этого Bluetooth, а в качестве экрана выступит планшет или смартфон. Поставка Echo Dot также минималистична, как и само устройство: мягкая картонная коробка с колонкой, блок питания 9 Вт, кабель Micro-USB и небольшая брошюрка «Quick Start Guide». Для подключения колонки следует установить приложение из Amazon Appstore, Google Play или Apple App Store. Затем, поскольку устройство сразу после покупки, скорее всего, будет привязано к учетной записи Amazon, в мобильном приложении останется ввести параметры подключения к Wi-Fi. В это время устройство сначала откроет доступ к себе, став точкой доступа Wi-Fi, а затем, после выбора требуемой точки доступа, переключится на нужную сеть. Однако, если Echo Dot конфигурируется из приложения Android, то в настоящее время не удастся ввести параметры SSID для скрытой сети. Правда, с Fire Tablet таких проблем не будет, т.к. в приложение для своих планшетов Amazon включила пункт ручного добавления точки доступа Wi-Fi. Если устройство еще не привязано к аккаунту, то можно выполнить инициализацию нового устройства через меню приложения «Set up a new device».
Что же, после нехитрой настройки сразу можно поинтересоваться: «Alexa, what can you do?», «Alexa, what time is it?», «Alexa, what's in the news?», Alexa, stop.", «Alexa, how's the weather?», «Alexa, Wikipedia: Artificial intelligence.» И так далее, например, можно сделать голосовой звонок на мобильный (только для локации США, Канада, Мексика) или на устройство с Alexa, а также послать SMS и многое другое. Для добавления новых навыков голосовому ассистенту нужно всего лишь зайти на сайт Alexa Skills или просто спросить, например, «Alexa, what are your top skills?» и затем выбрать нужные.
Популярность Amazon Alexa вполне можно объяснить амбициями всемирного интернет-магазина и, одновременно, облачной платформы AWS, но все же на первом плане стоят удобство речевого управления и доступность огромного числа готовых «навыков» (Skills) платформы, которые постоянно пополняются благодаря открытому API. Также в пользу Alexa можно добавить то, что везде, где установлено приложение, будь то смартфон или планшет и т.п., у пользователя всегда находится под рукой актуализированная база подключенных устройств, входящих в локальную инфраструктуру. Это достигается очень просто, благодаря единой учетной записи в сервисе Amazon.
Сейчас существует множество устройств и сервисов, которые поддерживают Alexa, начиная от умных лампочек, дверных замков и всяческих розеток до систем уровня хаба умного дома, облачного сервиса и т.п. Если бы не конкуренты, то можно было бы сказать, что Alexa стает стандартом де-факто для умного дома. Кстати, фактически так оно и есть, учитывая распространенность решений для Alexa на рынке США, ведь вряд ли современным высокотехнологичным производителям и многочисленным стартапам составляет большую сложность добавление требуемого функционала или свих «Skills» для платформы голосового интерфейса, предлагаемой Amazon.
Что можно сказать, немного наговорившись с Alexa по средствам Echo Dot? Пожалуй, это удобно и, несомненно, очень интересно «поиграться» с самой технологией. Встроенные микрофоны, как показалось, воспринимают ключевую фразу немного на повышенных тонах и с интонацией вопроса, т.е. благодаря этому практически нет ложных срабатываний. Возможно, нужно достаточно хорошее произношение английского языка для реакции на ключевое слово и, конечно, правильного последующего распознавания фразы. Также лучше подключить внешнюю акустику. Ко всему этому хочется расширения мультиязычной поддержки сервисом, ведь сейчас Alexa поддерживает только: English (US, UK, Canada, India, Australia), German, Japanese, French (будет скоро добавлен). Но не смотря на все недостатки, нельзя не признать уникальность сервиса и всей инфраструктуры Amazon.
Alexa позиционируется не только, как пользовательское устройство для умного дома, но и собирается завоевать корпоративную нишу, уже в качестве управляемого сервиса для бизнеса. Например, с голосовым ассистентом, вполне, можно реализовать сценарии из повседневной офисной жизни: “Alexa, call Jeff.”, “Alexa, ask Teem to find an open conference room.”, “Alexa start the meeting.”, “Alexa, order more paper for the copier.”, “Alexa, turn on the lights.”, “Alexa, ask Splunk, ‘how many Amazon EC2 instances are running in South America’.”, “Alexa, when is my next meeting?” и т.п. Проведение конференций, работа с расписанием, календарем, заказ бумаги для офисного принтера/копира, а также голосовые запросы статистических данных, например, по компании, предоставляемым сервисам, продуктам и т.д., все это и многое другое несомненно должно привлечь внимание корпоративного пользователя для организации совместной работы в офисе или компании в целом.
![](https://habrastorage.org/r/w780q1/webt/_w/ui/wf/_wuiwfjvfz0kma9ybxv5p9px61c.jpeg)
Image: Alexa for Business – Amazon Web Services
Принципиально Alexa for Business отличается от обычного потребительского сервиса, наличием привязки устройств не к персональному аккаунту пользователя, а корпоративной учетной записи, что дает возможность централизованно управлять устройствами, группировать их и добавлять необходимые навыки для Alexa. При этом в корпоративной учетной записи могут быть зарегистрированы и пользователи, и их персональные устройства, что может расширить функционал навыков голосового ассистента для конкретного пользователя. По замыслу разработчиков, Alexa должна помочь эффективно организовать рабочее место и пространство для совместной работы. Фактически, по достаточно произвольной голосовой команде можно получить адекватную ответную реакцию необходимых систем или узнать нужные сведения.
![](https://habrastorage.org/r/w1560/webt/ze/os/tq/zeostqvaf8ligtm1c0seg56s4we.png)
Picture: Alexa for Business – Amazon Web Services
Конечно, если говорить о безопасности, то не стоит «учить» Alexa раскрывать сразу всем конфиденциальные данные компании. В этом плане, следует отметить, что для сервиса Alexa for Business предусмотрен дополнительный набор API, в котором предусматривается возможность получения информации о местоположении устройства. Таким образом, голосовой запрос выполняется в контексте устройства и его привязки к расположению в офисе. Понятно, речь идет не об GPS-координатах, а о фактической группировке устройств, которое задается в панели управления сервисом. Так же, отметим, что вряд ли стоит пытаться автоматизировать максимум сценариев для голосового ассистента, получив тем самым: автоматизацию ради ее же самой. К тому же, не стоит ждать, что голосовые запросы пользователей повысят продуктивность работы, например, в Open Space офисах, хотя, и тут можно придумать ряд интересных сценариев.
![](https://habrastorage.org/r/w1560/webt/8b/qi/hj/8bqihjtbqzw3xlg1w8sqokgkdjm.png)
Screenshot: Announcing Alexa for Business: Using Amazon Alexa’s Voice Enabled Devices for Workplaces – AWS News Blog
Можно рассмотреть еще различные варианты использования Alexa в инфраструктуре офиса, например, в конференц-зале достигается положительный эффект от голосового ассистента при проведении презентации и настройке оборудования. Для упрощения рутинной работы в переговорной комнате, вполне уместно попросить Alexa озвучить перечень предлагаемых продуктов и услуг, детализировать определенные характеристики и т.д. Получаем, что сервис голосового ассистента достаточно хорош не только для умного дома, но и весьма неплох на рабочем месте. Главное соблюдать баланс и не навязывать такой сервис только ради того, чтобы угодить новому тренду. Но уже сейчас видно, что у Alexa есть все перспективы, чтобы гармонично дополнить любое офисное пространство.
Но, как говорится, из офиса возвращаемся домой, затем, снова – в офис, конечно, на своем автомобиле и тут Alexa тоже стремится занять свое «почетное» место. Сейчас ведущие автопроизводители (BMW/Mini, Ford, SEAT, Skoda, Toyota/Lexus, Volkswagen и др.) и компании, разрабатывающие автоэлектронику, заявили о ближайшей поддержке Alexa и включении голосового ассистента в состав своих транспортных средств. Таким образом, сервис Alexa стает доступным повсеместно. Но, конечно, интересно и то, как будут разворачиваться события, например, относительно других производителей голосовых сервисов и ассистентов. А также, например, в контексте недавней оригинальной разработки Mercedes-Benz User Experience (MBUX), дебютировавшей в серии A-Class моделей 2018 года.
![](https://habrastorage.org/r/w780q1/webt/za/el/gg/zaelggwzkm2f8cpdwyxqybw4uxu.jpeg)
Image: Toyota is adding Amazon's Alexa to cars. We've been using Alexa in a car for 6 months and it's the best infotainment system we've ever used — Business Insider
Итак, поскольку Alexa наращивает темпы проникновения на рынок, а также соответствующий сервис явно заслуживает внимание разработчиков, то сразу встает вопрос о том, как создать свой оригинальный навык (Skill)? Кстати, сделать это можно совсем элементарно, если воспользоваться мобильным приложением и продумать свой диалог с системой.
![](https://habrastorage.org/r/w1560/webt/m2/pp/fv/m2ppfvyq04pggus4cjwikud4pgs.png)
Screenshot: Приложение Alexa на телефоне с Android (рисунок подготовлен с использованием сервиса MockUPhone)
Более интересно поуправлять «живыми» устройствами, например, умного дома, прибегнув к помощи голосового ассистента. Для этого можно воспользоваться подходом, основанном на эмуляции устройства Belkin WeMo, что достаточно часто описывается в Интернет-публикациях энтузиастов, разрабатывающих системы умного дома и стремящихся применить голосовой интерфейс в своей инфраструктуре.
Конечно, если только прозвучало упоминание «умный дом», то фактически сразу стоит упомянуть о соответствующем стандарте де-факто для реализации конечных устройств – микросхеме ESP8266 или подобных бюджетных решениях. За эталонное устройство так или иначе придется взять устройства WeMo, т.к. Amazon Echo умеет с ними работать напрямую и протокол обмена данными достаточно «изучен» энтузиастами. Сразу хочется отметить, что поскольку этот подход основан на реверс-инжиниринге протоколов коммерческих устройств, то к нему следует относиться, хотя, как наиболее простому решению для «умного дома», но понимать, что для задач потребительского уровня, скорее всего, потребуется лицензирование протоколов или сертификация своих устройств. Во всяком случае потребуется «договориться» с Amazon о поддержке решений. Но пока интересно рассмотреть только саму концепцию взаимодействия с голосовым ассистентом на уровне прототипа.
![](https://habrastorage.org/r/w1560/webt/h-/s9/sq/h-s9sqhdf2v0edpneaw6tci99xw.png)
Picture: Amazon Echo and Home Automation – Maker Musings
Итак, в качестве примера можно взять реализацию протокола взаимодействия на Python или, еще проще, использовать технологии проекта Arduino IDE для устройств ESP8266. Один из приглянувшихся проектов – «Arduino Esp8266 Alexa Multiple Belkin wemo switch emulator», позволяет, фактически в очень сжатые сроки разработать свое смарт-устройство с голосовым интерфейсом. Для разрабатываемого устройства следует немного адаптировать код прошивки. Потребуется лишь ввести параметры подключения к Wi-Fi точке доступа и модифицировать код функций обратного вызова, которые будут выполняться в зависимости от логики работы устройства. Например, объявление вызова переключателя света в комнате: «room = new Switch(«apartment lights», 80, roomLightsOn, roomLightsOff);». Соответственно, функции «roomLightsOn», «roomLightsOff» должны задавать логику работы цифровых портов платы. Все просто, впрочем, как для любого проекта в стиле Arduino.
![](https://habrastorage.org/r/w780q1/webt/ta/5f/fv/ta5ffvqpxa6juah40lj6sdgncbe.jpeg)
Photo: Разработка на базе Esp8266 и взаимодействие с устройством через голосовой интерфейс Alexa
После прошивки платы на основе ESP8266 остается только дать команду: «Alexa, Discover Devices». Затем в мобильном приложении появятся обнаруженные устройства в настройках «Smart Home» и далее можно будет уже создавать свои навыки для Alexa и соответствующих устройств. Пожалуй, такой путь создания Alexa Skill самый простой для пользователя. Следует добавить, что поиск смарт-устройств можно выполнить и в мобильном приложении без включенной Alexa, но тогда для разрабатываемых устройств должен присутствовать заранее предопределенный навык и т.п. Пожалуй, с точки зрения разработки это более правильное решение, т.к. будет использован официальный API Alexa. Здесь одним из самых простых решений может стать использование известного сервиса IFTTT. Кстати, для отладки навыков может быть интересен сервис Alexa Skill Testing Tool.
Если говорить о разработке для IoT и умного дома, то скорее всего «умный» концентратор (Hub) для такого решения уже будет содержать поддержку технологий Amazon Alexa, например, openHAB Cloud service, ioBroker и другие или функционал голосового ассистента можно будет обеспечить на уровне ранее упомянутого сервиса IFTTT. Также этот сервис вполне интегрируется со средой Node-RED.
![](https://habrastorage.org/r/w1560/webt/au/7g/e4/au7ge4v3ipx_hljdcx6h-l8gd1c.png)
Picture: Functional Architecture – openHAB Cloud
Для тех, кто совсем не хочет разбираться с документацией Alexa SDK и программированием, вполне подойдут интерактивные сервисы для «обучения навыкам» голосового ассистента. Это сервисы Backendess и Storyline. И в первом, и во втором для создания навыков используется графический интерфейс на базе «Drag and Drop» и заранее предопределенных блоков.
![](https://habrastorage.org/r/w1560/webt/ag/ih/0p/agih0pralvilj-q59ndtm9xhiau.png)
Screenshot: Storyline lets you build and publish Alexa skills without coding – TechCrunch
Интерфейс сервиса Storyline аскетичен и прост, а Backendess подойдет тем, кто любит создание логики в стиле Google Blockly.
![](https://habrastorage.org/r/w780q1/webt/h2/as/iu/h2asiutnffp7mzj6uix2qavzohs.jpeg)
Screenshot: Developing Alexa skill without writing any code – Part1 (Codeless in Backendless mBaaS) – Backend as a Service Platform
Очевидно, что самый правильный путь, впрочем, как и бесплатный, для разработки своих навыков Alexa – это использование оригинального Alexa Skills Kit от Amazon. Этот путь рассмотрим немного дальше в этой публикации. А сейчас, пожалуй, отвлечемся от программных решений и рассмотрим аппаратную платформу Amazon Echo Dot.
Текущая, вторая, версия Echo Dot состоит из двух плат. Одна – с одним микрофоном по центру и шестью по периметру, плюс светодиодная подсветка. Вторая – фактически ядро системы на базе 64-битного 4-х ядерного ARM процессора от Mediatek.
Интересно то, что Amazon приветствует разработку устройств на базе технологии Alexa и предлагает AVS Device SDK для построения таких систем. Кроме того, на сайте разработчиков Amazon Alexa в разделе Alexa Voice Service представлены готовые наборы для прототипирования устройств Development Kits for AVS. Из таких наборов для прототипирования, в основном на базе различных цифровых сигнальных процессоров DSP, можно выбрать подходящий пример для своего устройства или, наоборот, использовать только часть системы, предназначенной для оцифровки звука. Ценовой диапазон наборов для прототипирования достаточно широк, начиная от $1,250.00 за завершенную систему Qualcomm Smart Audio 6-Mic Development Kit for Amazon AVS или всего $129.00 за Allwinner SoC-Only 3-Mic Far-Field Development Kit for Amazon AVS. Для систем реализующих только оцифровку звука, цены в диапазоне от $499.00, например, за Intel Speech Enabling Developer Kit for Amazon AVS или $299.00 за Microsemi AcuEdge Development Kit for Amazon AVS и т.п.
Алгоритм работы и структура AVS Device SDK достаточно понятна. Устройство пользователя должно распознать ключевую фразу «Alexa» (используется Audio Input Processor и Wake Word Detection (KWD) – библиотека распознавания ключевой фразы, фактически реализуемая аппаратной системой на чипе или DSP), затем следует оцифровать и передать остальную часть голосового запроса для обработки в облако Amazon и последующего выполнения предписаний (используются библиотеки: Alexa Communications Library (ACL) для передачи данных в формате JSON по протоколу HTTP/2, Alexa Directive Sequencer Library (ADSL) для обеспечения жизненного цикла директив, Capability Agents для обеспечения интерфейса событий и т.п.).
![](https://habrastorage.org/r/w1560/webt/aa/op/3n/aaop3nl9p0mztcya96uvicmcbgo.png)
Picture: Alexa Voice Service SDK Architecture – GitHub
Таким путем Amazon активно стимулирует стремительное развитие инфраструктуры голосового ассистента. И рынок быстро реагирует на ситуацию вокруг голосового интерфейса Alexa,. Например, появляются интересные устройства, например, как зарядка Roav VIVA по цене со скидкой на Amazon порядка $39.99, которая добавляет навыки Alexa в любой автомобиль с использованием устройства, стандартно подключаемого через прикуриватель.
Нельзя не отметить, что AVS Device SDK можно установить на различных платформах: Ubuntu Linux, Raspberry Pi (Raspbian Stretch), macOS, Windows 64-bit, Generic Linux. Конечно, отдельно следует выделить возможность установки на Raspberry Pi 2 или 3. Получается, что можно превратить Raspberry Pi в некое подобие Echo Dot. Но сразу хочется оговориться, дело в том, что AVS Device SDK создан для прототипирования устройств и «игра будет стоит свеч», если цель – создание устройства. Для простого ознакомления вполне достаточно установить мобильное приложение.
Чтобы увидеть в действии AVS Device SDK и разобраться с составляющими платформы рассмотрим установку на Raspberry Pi 3 под управлением Raspbian Stretch with Desktop. Сначала стоит установить на Raspberry Pi операционную систему и сделать минимальные настройки, например, настроить локаль клавиатуры, подключиться к Wi-Fi. Кстати, бытует мнение, что для Raspberry Pi сложно настроить подключение к скрытой точке доступа. На самом деле, требуется только подредактировать файл настроек: «$ sudo nano /etc/wpa_supplicant/wpa_supplicant.conf». В конец этого файла следует добавить строчки с именем скрытой точки доступа и соответствующим паролем:
Затем, стоит побеспокоится о микрофоне. Если вывод звука Raspberry Pi 3 может обеспечивать в цифровом виде по HDMI или на обычном аналоговом выходе, то для микрофона целесообразно приобрести за $2 – $3 плату звуковой карты с USB-интерфейсом. И далее, следует настроить подсистему ALSA на работу с картой. AVS Device SDK использует настройки звуковой подсистемы заданные по умолчанию. Для большинства дешевых аудио-карт с USB скорее всего не потребуется установка драйверов. Система определится как USB PnP Sound Device и чипом C-Media. Например, можно узнать командой: «$ dmesg | grep C-Media» или «$ lsmod | grep snd_usb_audio». Для вывода всех устройств воспроизведения и записи можно использовать команды: «$ aplay -l» и «$ arecord -l», а управлять уровнями громкости из консоли с помощью: «$ alsamixer».
![](https://habrastorage.org/r/w780q1/webt/wo/ki/ev/wokievqkovxzt6l5uxryzsub8va.jpeg)
Photo: Развертывание AVS Device SDK на платформе Raspberry Pi 3
Пожалуй, самое простое решение для настройки по умолчанию звука на базе Raspberry Pi 3 – это вывод по HDMI-каналу и запись микрофона c USB-звуковой карты. Следующий этап – это разворачивание AVS Device SDK, но перед этим стоит зарегистрироваться на портале Amazon developer и в разделе Alexa Voice Service зарегистрировать свой продукт, пусть даже это будет локальный тестовый образец. Дело в том, что после загрузки всех составляющих AVS Device SDK: «$ wget raw.githubusercontent.com/alexa/avs-device-sdk/master/tools/Install/setup.sh && wget raw.githubusercontent.com/alexa/avs-device-sdk/master/tools/Install/config.txt && wget raw.githubusercontent.com/alexa/avs-device-sdk/master/tools/Install/pi.sh» нам потребуется заполнить конфигурационный файл config.txt, где следует указать токен доступа и идентификаторы клиента и устройства, которые задаются или генерируются на этапе регистрации голосового устройства:
После выполненных действий остается лишь запустить установочный скрипт и принять решение о соглашении с лицензией от Amazon и сторонних разработчиков: «$ sudo bash setup.sh config.txt». Все, теперь только нужно авторизовать в облаке новое устройство по протоколу OAuth, запустив скрипт: «$ sudo bash startauth.sh» и перейти на локальный сервер: localhost:3000. Теперь запускаем тестовое приложение и общаемся с Alexa: «$ sudo bash startsample.sh». Особенно хочется отметить, что если взглянуть в настройки мобильного приложения Alexa, то там автоматически появится наше новое устройство. Это еще один маленький штришок в пользу целостности инфраструктуры голосового ассистента от Amazon.
Вся последовательность действий развёртывания AVS Device SDK на базе Raspberry Pi хорошо описана в документах: «Raspberry Pi Quick Start Guide with Script» и «Create Security Profile». От себя хочется добавить, что большую проблему составляет настройка аудио-интерфейса. Следует отметить, что модуль распознавания стартового слова так и не начал работать, но фразы команд и вопросов прекрасно записываются и обрабатываются облаком. Немного создается впечатление прерывания ответных реакций системы, похоже, это вызвано приоритетом вывода диагностических сообщений. Стоит еще раз подчеркнуть, что AVS Device SDK стоит воспринимать не сколько заменой Echo Dot, а средствами разработки, хотя, как сказать, ведь все зависит от энтузиазма и вдохновения.
Еще нельзя не упомянуть о том, что в нашем случае, для платы Raspberry Pi 3 не успели приехать из Китая радиаторы, поэтому во время компиляции плата была близка к перегреву и все-таки один раз зависла. Перезапуск установки все решил, впрочем, как и понижения внешней температуры в помещении, хорошо, что коммунальные службы удачно подгадали и отключили отопление.
Итак, хотя публикация и стала достаточно большой, но все-таки поставленная цель близка – фактически мы приближаемся к полному описанию инфраструктуры голосового ассистента Amazon Alexa и, в частности, устройства Echo Dot. Если разбить этот обзор на части, то просто потеряется целостность «всей картины». Для завершения описания инфраструктуры проекта Alexa, просто необходимо хоть и вскользь упомянуть о правильном пути «right way», или официальном, разработки своих навыков для голосового ассистента от Amazon. Конечно, такая разработка начинается с портала разработчиков и Developer Console.
![](https://habrastorage.org/r/w1560/webt/rw/o4/fm/rwo4fmr87ziszjw9rwwyeprmkqu.png)
Screenshot: New Alexa Skills Kit Developer Console (Beta) Streamlines Development Process – Alexa Blogs
Фактически разработка проходит через фазы: build, test, launch, measure. Сначала в интерактивном режиме описывается проект и создается основа проекта, затем в консоли разработки можно протестировать навыки и запустить проект, сделав его публичным или частным, а также разработчикам предоставляется статистика по использованию их навыков. Документация по созданию навыков на основе Alexa Skills Kit позволяет быстро начать и выполнить свой проект, а сам Skills Kit предоставляет множество готовых примеров, которые можно взять за образец для разработки. Также Alexa Skills Kit включает множество подготовленных API-интерфейсов, которые можно использовать совместно со своими навыками.
Функционально разрабатываемые навыки делятся на четыре вида: Custom skill (custom interaction model), Smart Home Skill API (pre-built model), Video Skill API (pre-built model) и Flash Briefing Skill API (pre-built model). Пользовательские навыки (Custom skill) – это традиционный диалог между устройством с навыками Alexa и пользователя. Если для реализации навыка потребуется логика ветвления или работа с базой данных, то для реализации программной части Amazon предлагает связать разработку навыка и возможности облака AWS при помощи сервиса AWS Lambda.
Фактически разработка сводится к описанию взаимодействия с Alexa в формате файлов JSON и программирования сервиса AWS Lambda, с размещением (хостингом) в этом же сервисе реализации своего навыка. Alexa будет посылать запросы на сервис Lambda, где программный код на Node.js, Java, Python илиr C# будет выполнять логику запроса. Как альтернатива – это размещение реализации своего навыка на своем же веб-сервисе и хостингом на любой альтернативной площадке, например, другого облачного хостинг-провайдера. В случае самостоятельного хостинга программный язык реализации не играет роли, главное, чтобы веб-решение поддерживало стандартный протокол HTTPS для работы с API Alexa.
Следующий тип навыков – это Smart Home Skill API, как несложно догадаться, предназначенный для решений, связанных с аппаратными решениями и оборудованием умного дома. Здесь сервис AWS Lambda может стать своеобразным «мостом» между работой голосового ассистента и серверами, выполняющими обработку и управление «электронной начинкой» умного дома, впрочем, как и другими смарт-устройствами, например, промышленного применения, для сферы бизнеса и т.п.
![](https://habrastorage.org/r/w1560/webt/y8/bk/wx/y8bkwxkhroxl5jayhxw6v3alpmw.png)
Picture: How the Smart Home Skill API Works – Alexa Skills Kit
Оставшиеся направления реализаций навыков для Alexa – это разработка навыков по управлению и работе с видео-контентом (Video Skill API) и работы с новостным контентом (Flash Briefing Skill API), например, работа с запросами HTTPS, лентами новостей в формате RSS или контентом структурированном в формате JSON и т.п. Но тут стоит признать, что лучше «один раз попробовать» и создать свой навык для Alexa, чем «смотреть» и заниматься теорией. Хотя, это уже непременно будет материалом для наших следующих публикаций.
В завершении хочется отметить, что у Amazon есть еще множество интересных решений, связанных с искусственным интеллектом и аудио интерфейсом в контексте облака AWS. Например, если не требуется управлять устройствами, а только озвучить некоторые фразы, то в облаке Amazon существует сервис Polly, который преобразует текст в естественную речь и сохраняет результат в файле MP3.
![](https://habrastorage.org/r/w1560/webt/of/ov/pt/ofovptd2ymeqo-un6cnmlnfonyq.png)
Picture: Amazon Polly – Amazon Web Services
В случае, если требуется создать чат-бота, который понимал бы естественный язык, можно использовать Amazon Lex. Этот сервис, на основе технологий глубокого обучения, которые, кстати, использует и Alexa, позволяет выполнить автоматическое распознавание речи, получив на выходе текст.
![](https://habrastorage.org/r/w1560/webt/sx/6w/fv/sx6wfvzoqsiava-fn2yu1iwlg-q.png)
Picture: С помощью Amazon Lex можно создавать сверх интерактивные диалоговые пользовательские решения для подключенных устройств – Amazon Web Services
Но, безусловно, с Alexa значительно веселее и, пожалуй, проще решать задачи на новом уровне построения аудио интерфейсов для взаимодействия с устройствами IoT, при том, что цена на колонку Echo Dot стала вполне доступной. Впрочем, у каждого гика найдется под рукой подходящая плата Raspberry Pi, на которую элементарно устанавливается Alexa Voice Service. Фактически голосовой ассистент Echo Dot на основе сервиса Alexa расширяет рамки устоявшихся подходов для решения повседневных задач. Конечно, есть ограничение на локализацию, на количество предоставляемых услуг вне США и т.п. Но всегда интересно взглянуть в будущее и поэкспериментировать с этим в настоящем.
Пусть Alexa сейчас ошибается и, например, может случайно напугать своим смехом, или среагировать на «голосовую атаку» спровоцированную рекламным сообщением в телевизоре, но искусственный интеллект от Amazon непрерывно совершенствуется, переводя на новый уровень существующие компьютерные системы. К слову сказать, проблема со смехом решена замены фразы «Alexa, laugh» на «Alexa, can you laugh», а реакция на массовые голосовые запросы просто отсекается искусственным интеллектом облака. Правда, что будет, если запрос не массовый, а именно направлен на компрометацию определенного устройства, атаку на конкретного пользователя и т.д.? Пожалуй, это уже новый повод рассмотреть подходы к обеспечению кибербезопасности, в целом, и защиту устройств с голосовым интерфейсом, в частности. И, конечно, немного «космического» юмора с Alexa.
Далее, пожалуй, следует рассмотреть альтернативные решения, например, от компании Google, сравнить сервисы и т.д., но, как говорится, это уже тема для следующей публикации. И всегда интересны комментарии наших читателей об опыте работы с Alexa или идеями о роли и месте речевых интерфейсов в нашей повседневной жизни. Ведь, с одной стороны, такие решения пока больше направлены на получение некоего «вау-эффекта» от демонстрации технологии, но с другой стороны – нельзя не признать потенциальное удобство и пользу от рассмотренных нами технологий и решений.
Теория, сравнения и описание инфраструктуры:
— Как ИИ от Amazon постепенно захватывает мир – Geektimes
— Экосистема Amazon Alexa — обзор всего, что может работать с Alexa Echo – Geektimes
— How to become an Alexa developer: The smart person's guide – TechRepublic
— Early reviews are in for Apple's new $350 Echo competitor, the HomePod — and it's getting destroyed — Business Insider
— The Best Google Assistant Skills to Use With Your Google Home — Lifehacker
— Microsoft Cortana now features IFTTT integration — SlashGear
— Harman Kardon Invoke review: The first Cortana speaker sounds amazing – Engadget
— Amazon купил Ring за $1 млрд: чем занимается стартап и как устроен его украинский офис
— Amazon and Google Are Back to Feuding, This Time Over Smart Homes and Nest – Gizmodo
— Amazon will stop selling Nest smart home devices, escalating its war with Google – Business Insider
— Топовые продукты Amazon в 2017 году – Geektimes
— Как Alexa завоевывает мир – gq
— Возможности Alexa for Business — Amazon Web Services
— AWS re:Invent 2017 — Introducing Alexa for Business – Amazon Web Services
— 24 Ways Amazon Alexa Skills Can Help Your Small Business Today – Small Business Trends
— Which cars have Amazon Alexa and which are getting it soon? – GearBrain
— 5 CES 2018 announcements that put Alexa inside cars – VentureBeat
Практика:
— Easy Alexa (Echo) Control of your ESP8266 Huzzah – Adafruit
— Esp8266 Project: ESP8266 & Amazon Alexa for home automation – DFRobot Blog
— Amazon Echo Alexa Skills Kit integration with Node-RED – nathan.chantrell.net
— Developing an Alexa skill without writing any code – Part 2 (Intents and Slots) – Backend as a Service Platform
— Amazon предоставила разработчикам доступ к микрофонной технологии Echo — 3DNews
— Teardown Tuesday: Amazon Echo Dot v2 – All About Circuits
— The Rova Viva adds Alexa to your car for $38.99 — CNET
— Setting WiFi up via the command line – Raspberry Pi Documentation
— USB Audio Cards with a Raspberry Pi – Adafruit
— Sound configuration on Raspberry Pi with ALSA – Stephen C. Phillips
— Using a USB Audio Device With a Raspberry Pi – Envato Tuts+
— Alexa SDK Sample App audio issue – AVS Device SDK
— Raspberry Pi Alexa: Build your own Amazon Echo – Pi My Life Up
Программирование навыков:
— Build Your First Custom Alexa Skill in 10 Minutes
— Using voice to control a website with Amazon Alexa, part 1/6
— Using the Amazon Echo to Support Continuous Integration Builds – Part 1
Общие вопросы и критика:
— Как Безос решил неожиданную проблему в рекламе своей умной колонки – Geektimes
— Голосовой помощник Alexa может неожиданно засмеяться. Пользователям страшно – Meduza
— Распространение Alexa и разработки Amazon в направлении искусственного интеллекта – Geektimes
— This replica of HAL-9000 from 2001: A Space Odyssey comes with Amazon’s Alexa built in – The Verge
![](https://habrastorage.org/webt/os/ya/os/osyaosizu8gc2imds-hcbe9givk.jpeg)
Image: How to Mount your Amazon Echo Dot on the Wall, Ceiling, or Under the Counter – Android Central
Исторически голосовой набор номера был реализован еще в первых кнопочных сотовых телефонах, впрочем, как и Bluetooth Hands-Free. Затем появились голосовые технологии Apple Siri, Google Now и Microsoft Cortana, а только вслед за ними мир увидел Amazon Alexa. В отличие от предыдущих решений сервис Alexa был привязан не к определенному гаджету или операционной системе, компьютеру и т.д., а сопровождался голосовым ассистентом, как устройством и при этом, технически стал доступен на любом устройстве.
Что мы видим сейчас: выход на рынок Google Home, Apple HomePod и Microsoft Cortana, в составе беспроводной акустики Harman Kardon Invoke. Чем не «война» голосовых ассистентов. А если вспомнить недавний анонс о том, что Amazon купила стартап Ring, занимающегося решениями в области безопасности умного дома и, совсем свежее заявление, о прекращении продаж термостатов Nest компании Google на площадке Amazon, то становится очевидным, что уже начинается «бой» не просто за Интернет, как площадку для рекламы, а за лидерство в сфере Интернета вещей (Internet of things, IoT) и, в частности, умного дома (Smart Home).
![](https://habrastorage.org/webt/hy/oh/vk/hyohvkf0fnhckiiqolbavpot2hs.jpeg)
Image: Echo Dot (2nd Generation) – Amazon
Рассмотрим более подробно инфраструктуру вокруг Alexa и, в частности, устройство Amazon Echo Dot. Интерес к решению Amazon Alexa вполне понятен, т.к. предлагаемый сервис, гаджеты и облако AWS тесно связаны между собой и создают для пользователя и разработчиков единое информационное пространство, в котором на первое место выходит голосовое управление. Не удивительно, что экосистема Amazon сейчас выходит на новый уровень интерактивности с клиентом, как магазина, так и всей облачной платформы AWS.
Не случайно, в завершении 2017 года, умная колонка Echo Dot стала лидером продаж на площадке Amazon. При официальной цене $49.99 и, например, небольшого ожидания очередной акции от Amazon, можно получить цену за девайс в размере $29.99. А, как показал опыт проекта Raspberry Pi, как раз цена порядка 35-ти долларов вполне оправдана для «разжигания» интереса у гиков. Хотя устройство не поддерживает русский язык, это не повод для того, чтобы не интересоваться новым. Вспомним, как когда-то не было русскоязычного интерфейса в популярных операционных системах и т.п.
Сегодня покупка на площадке Amazon, даже, если мы физически не находимся в США, не составит большого труда. Самое простое – это прибегнуть к услуге почтового форвардинга. Еще есть ограничение в том, что за пределами США поддерживаются не все сервисы, с которыми может взаимодействовать Alexa. Но вряд ли такие региональные привязки сильно повлияют на интерес к новому, тем более, проигрывание платных каналов – не основное преимущество для голосовых ассистентов. Правда, сразу стоит признать, что доступность коммерческих медийных сервисов значительно расширяется, а голосовое управление добавляет к ним очень удобный функционал. Так же сервис Alexa доступен и на других устройствах, например, смарт камере Echo Look, приставке Fire TV Stick с дистанционным управлением Alexa Voice Remote и многих других. Кстати, узнать возможности Amazon Alexa можно всего лишь установив соответствующее приложение на смартфон или планшет (в линейке Fire Tablet with Alexa сервис уже предустановлен), но полностью сервис доступен при использовании специализированного голосового ассистента.
Устройства Echo ($99.99) и Echo Plus ($149.99) оснащены хорошей акустикой, а дополнительно Echo Plus включает в себя еще и встроенный Smart Home Hub. Устройства Echo Spot ($129.99) и Echo Show ($229.99) содержат встроенные дисплеи. На фоне этих устройств колонка Echo Dot занимает начальные позиции, но, например, всегда к ней можно подключить проводную акустику или использовать для этого Bluetooth, а в качестве экрана выступит планшет или смартфон. Поставка Echo Dot также минималистична, как и само устройство: мягкая картонная коробка с колонкой, блок питания 9 Вт, кабель Micro-USB и небольшая брошюрка «Quick Start Guide». Для подключения колонки следует установить приложение из Amazon Appstore, Google Play или Apple App Store. Затем, поскольку устройство сразу после покупки, скорее всего, будет привязано к учетной записи Amazon, в мобильном приложении останется ввести параметры подключения к Wi-Fi. В это время устройство сначала откроет доступ к себе, став точкой доступа Wi-Fi, а затем, после выбора требуемой точки доступа, переключится на нужную сеть. Однако, если Echo Dot конфигурируется из приложения Android, то в настоящее время не удастся ввести параметры SSID для скрытой сети. Правда, с Fire Tablet таких проблем не будет, т.к. в приложение для своих планшетов Amazon включила пункт ручного добавления точки доступа Wi-Fi. Если устройство еще не привязано к аккаунту, то можно выполнить инициализацию нового устройства через меню приложения «Set up a new device».
Что же, после нехитрой настройки сразу можно поинтересоваться: «Alexa, what can you do?», «Alexa, what time is it?», «Alexa, what's in the news?», Alexa, stop.", «Alexa, how's the weather?», «Alexa, Wikipedia: Artificial intelligence.» И так далее, например, можно сделать голосовой звонок на мобильный (только для локации США, Канада, Мексика) или на устройство с Alexa, а также послать SMS и многое другое. Для добавления новых навыков голосовому ассистенту нужно всего лишь зайти на сайт Alexa Skills или просто спросить, например, «Alexa, what are your top skills?» и затем выбрать нужные.
Популярность Amazon Alexa вполне можно объяснить амбициями всемирного интернет-магазина и, одновременно, облачной платформы AWS, но все же на первом плане стоят удобство речевого управления и доступность огромного числа готовых «навыков» (Skills) платформы, которые постоянно пополняются благодаря открытому API. Также в пользу Alexa можно добавить то, что везде, где установлено приложение, будь то смартфон или планшет и т.п., у пользователя всегда находится под рукой актуализированная база подключенных устройств, входящих в локальную инфраструктуру. Это достигается очень просто, благодаря единой учетной записи в сервисе Amazon.
Сейчас существует множество устройств и сервисов, которые поддерживают Alexa, начиная от умных лампочек, дверных замков и всяческих розеток до систем уровня хаба умного дома, облачного сервиса и т.п. Если бы не конкуренты, то можно было бы сказать, что Alexa стает стандартом де-факто для умного дома. Кстати, фактически так оно и есть, учитывая распространенность решений для Alexa на рынке США, ведь вряд ли современным высокотехнологичным производителям и многочисленным стартапам составляет большую сложность добавление требуемого функционала или свих «Skills» для платформы голосового интерфейса, предлагаемой Amazon.
Что можно сказать, немного наговорившись с Alexa по средствам Echo Dot? Пожалуй, это удобно и, несомненно, очень интересно «поиграться» с самой технологией. Встроенные микрофоны, как показалось, воспринимают ключевую фразу немного на повышенных тонах и с интонацией вопроса, т.е. благодаря этому практически нет ложных срабатываний. Возможно, нужно достаточно хорошее произношение английского языка для реакции на ключевое слово и, конечно, правильного последующего распознавания фразы. Также лучше подключить внешнюю акустику. Ко всему этому хочется расширения мультиязычной поддержки сервисом, ведь сейчас Alexa поддерживает только: English (US, UK, Canada, India, Australia), German, Japanese, French (будет скоро добавлен). Но не смотря на все недостатки, нельзя не признать уникальность сервиса и всей инфраструктуры Amazon.
Alexa позиционируется не только, как пользовательское устройство для умного дома, но и собирается завоевать корпоративную нишу, уже в качестве управляемого сервиса для бизнеса. Например, с голосовым ассистентом, вполне, можно реализовать сценарии из повседневной офисной жизни: “Alexa, call Jeff.”, “Alexa, ask Teem to find an open conference room.”, “Alexa start the meeting.”, “Alexa, order more paper for the copier.”, “Alexa, turn on the lights.”, “Alexa, ask Splunk, ‘how many Amazon EC2 instances are running in South America’.”, “Alexa, when is my next meeting?” и т.п. Проведение конференций, работа с расписанием, календарем, заказ бумаги для офисного принтера/копира, а также голосовые запросы статистических данных, например, по компании, предоставляемым сервисам, продуктам и т.д., все это и многое другое несомненно должно привлечь внимание корпоративного пользователя для организации совместной работы в офисе или компании в целом.
![](https://habrastorage.org/webt/_w/ui/wf/_wuiwfjvfz0kma9ybxv5p9px61c.jpeg)
Image: Alexa for Business – Amazon Web Services
Принципиально Alexa for Business отличается от обычного потребительского сервиса, наличием привязки устройств не к персональному аккаунту пользователя, а корпоративной учетной записи, что дает возможность централизованно управлять устройствами, группировать их и добавлять необходимые навыки для Alexa. При этом в корпоративной учетной записи могут быть зарегистрированы и пользователи, и их персональные устройства, что может расширить функционал навыков голосового ассистента для конкретного пользователя. По замыслу разработчиков, Alexa должна помочь эффективно организовать рабочее место и пространство для совместной работы. Фактически, по достаточно произвольной голосовой команде можно получить адекватную ответную реакцию необходимых систем или узнать нужные сведения.
![](https://habrastorage.org/webt/ze/os/tq/zeostqvaf8ligtm1c0seg56s4we.png)
Picture: Alexa for Business – Amazon Web Services
Конечно, если говорить о безопасности, то не стоит «учить» Alexa раскрывать сразу всем конфиденциальные данные компании. В этом плане, следует отметить, что для сервиса Alexa for Business предусмотрен дополнительный набор API, в котором предусматривается возможность получения информации о местоположении устройства. Таким образом, голосовой запрос выполняется в контексте устройства и его привязки к расположению в офисе. Понятно, речь идет не об GPS-координатах, а о фактической группировке устройств, которое задается в панели управления сервисом. Так же, отметим, что вряд ли стоит пытаться автоматизировать максимум сценариев для голосового ассистента, получив тем самым: автоматизацию ради ее же самой. К тому же, не стоит ждать, что голосовые запросы пользователей повысят продуктивность работы, например, в Open Space офисах, хотя, и тут можно придумать ряд интересных сценариев.
![](https://habrastorage.org/webt/8b/qi/hj/8bqihjtbqzw3xlg1w8sqokgkdjm.png)
Screenshot: Announcing Alexa for Business: Using Amazon Alexa’s Voice Enabled Devices for Workplaces – AWS News Blog
Можно рассмотреть еще различные варианты использования Alexa в инфраструктуре офиса, например, в конференц-зале достигается положительный эффект от голосового ассистента при проведении презентации и настройке оборудования. Для упрощения рутинной работы в переговорной комнате, вполне уместно попросить Alexa озвучить перечень предлагаемых продуктов и услуг, детализировать определенные характеристики и т.д. Получаем, что сервис голосового ассистента достаточно хорош не только для умного дома, но и весьма неплох на рабочем месте. Главное соблюдать баланс и не навязывать такой сервис только ради того, чтобы угодить новому тренду. Но уже сейчас видно, что у Alexa есть все перспективы, чтобы гармонично дополнить любое офисное пространство.
Но, как говорится, из офиса возвращаемся домой, затем, снова – в офис, конечно, на своем автомобиле и тут Alexa тоже стремится занять свое «почетное» место. Сейчас ведущие автопроизводители (BMW/Mini, Ford, SEAT, Skoda, Toyota/Lexus, Volkswagen и др.) и компании, разрабатывающие автоэлектронику, заявили о ближайшей поддержке Alexa и включении голосового ассистента в состав своих транспортных средств. Таким образом, сервис Alexa стает доступным повсеместно. Но, конечно, интересно и то, как будут разворачиваться события, например, относительно других производителей голосовых сервисов и ассистентов. А также, например, в контексте недавней оригинальной разработки Mercedes-Benz User Experience (MBUX), дебютировавшей в серии A-Class моделей 2018 года.
![](https://habrastorage.org/webt/za/el/gg/zaelggwzkm2f8cpdwyxqybw4uxu.jpeg)
Image: Toyota is adding Amazon's Alexa to cars. We've been using Alexa in a car for 6 months and it's the best infotainment system we've ever used — Business Insider
Итак, поскольку Alexa наращивает темпы проникновения на рынок, а также соответствующий сервис явно заслуживает внимание разработчиков, то сразу встает вопрос о том, как создать свой оригинальный навык (Skill)? Кстати, сделать это можно совсем элементарно, если воспользоваться мобильным приложением и продумать свой диалог с системой.
![](https://habrastorage.org/webt/m2/pp/fv/m2ppfvyq04pggus4cjwikud4pgs.png)
Screenshot: Приложение Alexa на телефоне с Android (рисунок подготовлен с использованием сервиса MockUPhone)
Более интересно поуправлять «живыми» устройствами, например, умного дома, прибегнув к помощи голосового ассистента. Для этого можно воспользоваться подходом, основанном на эмуляции устройства Belkin WeMo, что достаточно часто описывается в Интернет-публикациях энтузиастов, разрабатывающих системы умного дома и стремящихся применить голосовой интерфейс в своей инфраструктуре.
Конечно, если только прозвучало упоминание «умный дом», то фактически сразу стоит упомянуть о соответствующем стандарте де-факто для реализации конечных устройств – микросхеме ESP8266 или подобных бюджетных решениях. За эталонное устройство так или иначе придется взять устройства WeMo, т.к. Amazon Echo умеет с ними работать напрямую и протокол обмена данными достаточно «изучен» энтузиастами. Сразу хочется отметить, что поскольку этот подход основан на реверс-инжиниринге протоколов коммерческих устройств, то к нему следует относиться, хотя, как наиболее простому решению для «умного дома», но понимать, что для задач потребительского уровня, скорее всего, потребуется лицензирование протоколов или сертификация своих устройств. Во всяком случае потребуется «договориться» с Amazon о поддержке решений. Но пока интересно рассмотреть только саму концепцию взаимодействия с голосовым ассистентом на уровне прототипа.
![](https://habrastorage.org/webt/h-/s9/sq/h-s9sqhdf2v0edpneaw6tci99xw.png)
Picture: Amazon Echo and Home Automation – Maker Musings
Итак, в качестве примера можно взять реализацию протокола взаимодействия на Python или, еще проще, использовать технологии проекта Arduino IDE для устройств ESP8266. Один из приглянувшихся проектов – «Arduino Esp8266 Alexa Multiple Belkin wemo switch emulator», позволяет, фактически в очень сжатые сроки разработать свое смарт-устройство с голосовым интерфейсом. Для разрабатываемого устройства следует немного адаптировать код прошивки. Потребуется лишь ввести параметры подключения к Wi-Fi точке доступа и модифицировать код функций обратного вызова, которые будут выполняться в зависимости от логики работы устройства. Например, объявление вызова переключателя света в комнате: «room = new Switch(«apartment lights», 80, roomLightsOn, roomLightsOff);». Соответственно, функции «roomLightsOn», «roomLightsOff» должны задавать логику работы цифровых портов платы. Все просто, впрочем, как для любого проекта в стиле Arduino.
![](https://habrastorage.org/webt/ta/5f/fv/ta5ffvqpxa6juah40lj6sdgncbe.jpeg)
Photo: Разработка на базе Esp8266 и взаимодействие с устройством через голосовой интерфейс Alexa
После прошивки платы на основе ESP8266 остается только дать команду: «Alexa, Discover Devices». Затем в мобильном приложении появятся обнаруженные устройства в настройках «Smart Home» и далее можно будет уже создавать свои навыки для Alexa и соответствующих устройств. Пожалуй, такой путь создания Alexa Skill самый простой для пользователя. Следует добавить, что поиск смарт-устройств можно выполнить и в мобильном приложении без включенной Alexa, но тогда для разрабатываемых устройств должен присутствовать заранее предопределенный навык и т.п. Пожалуй, с точки зрения разработки это более правильное решение, т.к. будет использован официальный API Alexa. Здесь одним из самых простых решений может стать использование известного сервиса IFTTT. Кстати, для отладки навыков может быть интересен сервис Alexa Skill Testing Tool.
Если говорить о разработке для IoT и умного дома, то скорее всего «умный» концентратор (Hub) для такого решения уже будет содержать поддержку технологий Amazon Alexa, например, openHAB Cloud service, ioBroker и другие или функционал голосового ассистента можно будет обеспечить на уровне ранее упомянутого сервиса IFTTT. Также этот сервис вполне интегрируется со средой Node-RED.
![](https://habrastorage.org/webt/au/7g/e4/au7ge4v3ipx_hljdcx6h-l8gd1c.png)
Picture: Functional Architecture – openHAB Cloud
Для тех, кто совсем не хочет разбираться с документацией Alexa SDK и программированием, вполне подойдут интерактивные сервисы для «обучения навыкам» голосового ассистента. Это сервисы Backendess и Storyline. И в первом, и во втором для создания навыков используется графический интерфейс на базе «Drag and Drop» и заранее предопределенных блоков.
![](https://habrastorage.org/webt/ag/ih/0p/agih0pralvilj-q59ndtm9xhiau.png)
Screenshot: Storyline lets you build and publish Alexa skills without coding – TechCrunch
Интерфейс сервиса Storyline аскетичен и прост, а Backendess подойдет тем, кто любит создание логики в стиле Google Blockly.
![](https://habrastorage.org/webt/h2/as/iu/h2asiutnffp7mzj6uix2qavzohs.jpeg)
Screenshot: Developing Alexa skill without writing any code – Part1 (Codeless in Backendless mBaaS) – Backend as a Service Platform
Очевидно, что самый правильный путь, впрочем, как и бесплатный, для разработки своих навыков Alexa – это использование оригинального Alexa Skills Kit от Amazon. Этот путь рассмотрим немного дальше в этой публикации. А сейчас, пожалуй, отвлечемся от программных решений и рассмотрим аппаратную платформу Amazon Echo Dot.
Текущая, вторая, версия Echo Dot состоит из двух плат. Одна – с одним микрофоном по центру и шестью по периметру, плюс светодиодная подсветка. Вторая – фактически ядро системы на базе 64-битного 4-х ядерного ARM процессора от Mediatek.
Интересно то, что Amazon приветствует разработку устройств на базе технологии Alexa и предлагает AVS Device SDK для построения таких систем. Кроме того, на сайте разработчиков Amazon Alexa в разделе Alexa Voice Service представлены готовые наборы для прототипирования устройств Development Kits for AVS. Из таких наборов для прототипирования, в основном на базе различных цифровых сигнальных процессоров DSP, можно выбрать подходящий пример для своего устройства или, наоборот, использовать только часть системы, предназначенной для оцифровки звука. Ценовой диапазон наборов для прототипирования достаточно широк, начиная от $1,250.00 за завершенную систему Qualcomm Smart Audio 6-Mic Development Kit for Amazon AVS или всего $129.00 за Allwinner SoC-Only 3-Mic Far-Field Development Kit for Amazon AVS. Для систем реализующих только оцифровку звука, цены в диапазоне от $499.00, например, за Intel Speech Enabling Developer Kit for Amazon AVS или $299.00 за Microsemi AcuEdge Development Kit for Amazon AVS и т.п.
Алгоритм работы и структура AVS Device SDK достаточно понятна. Устройство пользователя должно распознать ключевую фразу «Alexa» (используется Audio Input Processor и Wake Word Detection (KWD) – библиотека распознавания ключевой фразы, фактически реализуемая аппаратной системой на чипе или DSP), затем следует оцифровать и передать остальную часть голосового запроса для обработки в облако Amazon и последующего выполнения предписаний (используются библиотеки: Alexa Communications Library (ACL) для передачи данных в формате JSON по протоколу HTTP/2, Alexa Directive Sequencer Library (ADSL) для обеспечения жизненного цикла директив, Capability Agents для обеспечения интерфейса событий и т.п.).
![](https://habrastorage.org/webt/aa/op/3n/aaop3nl9p0mztcya96uvicmcbgo.png)
Picture: Alexa Voice Service SDK Architecture – GitHub
Таким путем Amazon активно стимулирует стремительное развитие инфраструктуры голосового ассистента. И рынок быстро реагирует на ситуацию вокруг голосового интерфейса Alexa,. Например, появляются интересные устройства, например, как зарядка Roav VIVA по цене со скидкой на Amazon порядка $39.99, которая добавляет навыки Alexa в любой автомобиль с использованием устройства, стандартно подключаемого через прикуриватель.
Нельзя не отметить, что AVS Device SDK можно установить на различных платформах: Ubuntu Linux, Raspberry Pi (Raspbian Stretch), macOS, Windows 64-bit, Generic Linux. Конечно, отдельно следует выделить возможность установки на Raspberry Pi 2 или 3. Получается, что можно превратить Raspberry Pi в некое подобие Echo Dot. Но сразу хочется оговориться, дело в том, что AVS Device SDK создан для прототипирования устройств и «игра будет стоит свеч», если цель – создание устройства. Для простого ознакомления вполне достаточно установить мобильное приложение.
Чтобы увидеть в действии AVS Device SDK и разобраться с составляющими платформы рассмотрим установку на Raspberry Pi 3 под управлением Raspbian Stretch with Desktop. Сначала стоит установить на Raspberry Pi операционную систему и сделать минимальные настройки, например, настроить локаль клавиатуры, подключиться к Wi-Fi. Кстати, бытует мнение, что для Raspberry Pi сложно настроить подключение к скрытой точке доступа. На самом деле, требуется только подредактировать файл настроек: «$ sudo nano /etc/wpa_supplicant/wpa_supplicant.conf». В конец этого файла следует добавить строчки с именем скрытой точки доступа и соответствующим паролем:
network={
ssid="yourHiddenSSID"
psk="Password"
scan_ssid=1
}
Затем, стоит побеспокоится о микрофоне. Если вывод звука Raspberry Pi 3 может обеспечивать в цифровом виде по HDMI или на обычном аналоговом выходе, то для микрофона целесообразно приобрести за $2 – $3 плату звуковой карты с USB-интерфейсом. И далее, следует настроить подсистему ALSA на работу с картой. AVS Device SDK использует настройки звуковой подсистемы заданные по умолчанию. Для большинства дешевых аудио-карт с USB скорее всего не потребуется установка драйверов. Система определится как USB PnP Sound Device и чипом C-Media. Например, можно узнать командой: «$ dmesg | grep C-Media» или «$ lsmod | grep snd_usb_audio». Для вывода всех устройств воспроизведения и записи можно использовать команды: «$ aplay -l» и «$ arecord -l», а управлять уровнями громкости из консоли с помощью: «$ alsamixer».
![](https://habrastorage.org/webt/wo/ki/ev/wokievqkovxzt6l5uxryzsub8va.jpeg)
Photo: Развертывание AVS Device SDK на платформе Raspberry Pi 3
Пожалуй, самое простое решение для настройки по умолчанию звука на базе Raspberry Pi 3 – это вывод по HDMI-каналу и запись микрофона c USB-звуковой карты. Следующий этап – это разворачивание AVS Device SDK, но перед этим стоит зарегистрироваться на портале Amazon developer и в разделе Alexa Voice Service зарегистрировать свой продукт, пусть даже это будет локальный тестовый образец. Дело в том, что после загрузки всех составляющих AVS Device SDK: «$ wget raw.githubusercontent.com/alexa/avs-device-sdk/master/tools/Install/setup.sh && wget raw.githubusercontent.com/alexa/avs-device-sdk/master/tools/Install/config.txt && wget raw.githubusercontent.com/alexa/avs-device-sdk/master/tools/Install/pi.sh» нам потребуется заполнить конфигурационный файл config.txt, где следует указать токен доступа и идентификаторы клиента и устройства, которые задаются или генерируются на этапе регистрации голосового устройства:
CLIENT_SECRET=""
DEVICE_SERIAL_NUMBER="123456" #can be any unique number
CLIENT_ID=""
PRODUCT_ID=""
После выполненных действий остается лишь запустить установочный скрипт и принять решение о соглашении с лицензией от Amazon и сторонних разработчиков: «$ sudo bash setup.sh config.txt». Все, теперь только нужно авторизовать в облаке новое устройство по протоколу OAuth, запустив скрипт: «$ sudo bash startauth.sh» и перейти на локальный сервер: localhost:3000. Теперь запускаем тестовое приложение и общаемся с Alexa: «$ sudo bash startsample.sh». Особенно хочется отметить, что если взглянуть в настройки мобильного приложения Alexa, то там автоматически появится наше новое устройство. Это еще один маленький штришок в пользу целостности инфраструктуры голосового ассистента от Amazon.
Вся последовательность действий развёртывания AVS Device SDK на базе Raspberry Pi хорошо описана в документах: «Raspberry Pi Quick Start Guide with Script» и «Create Security Profile». От себя хочется добавить, что большую проблему составляет настройка аудио-интерфейса. Следует отметить, что модуль распознавания стартового слова так и не начал работать, но фразы команд и вопросов прекрасно записываются и обрабатываются облаком. Немного создается впечатление прерывания ответных реакций системы, похоже, это вызвано приоритетом вывода диагностических сообщений. Стоит еще раз подчеркнуть, что AVS Device SDK стоит воспринимать не сколько заменой Echo Dot, а средствами разработки, хотя, как сказать, ведь все зависит от энтузиазма и вдохновения.
Еще нельзя не упомянуть о том, что в нашем случае, для платы Raspberry Pi 3 не успели приехать из Китая радиаторы, поэтому во время компиляции плата была близка к перегреву и все-таки один раз зависла. Перезапуск установки все решил, впрочем, как и понижения внешней температуры в помещении, хорошо, что коммунальные службы удачно подгадали и отключили отопление.
Итак, хотя публикация и стала достаточно большой, но все-таки поставленная цель близка – фактически мы приближаемся к полному описанию инфраструктуры голосового ассистента Amazon Alexa и, в частности, устройства Echo Dot. Если разбить этот обзор на части, то просто потеряется целостность «всей картины». Для завершения описания инфраструктуры проекта Alexa, просто необходимо хоть и вскользь упомянуть о правильном пути «right way», или официальном, разработки своих навыков для голосового ассистента от Amazon. Конечно, такая разработка начинается с портала разработчиков и Developer Console.
![](https://habrastorage.org/webt/rw/o4/fm/rwo4fmr87ziszjw9rwwyeprmkqu.png)
Screenshot: New Alexa Skills Kit Developer Console (Beta) Streamlines Development Process – Alexa Blogs
Фактически разработка проходит через фазы: build, test, launch, measure. Сначала в интерактивном режиме описывается проект и создается основа проекта, затем в консоли разработки можно протестировать навыки и запустить проект, сделав его публичным или частным, а также разработчикам предоставляется статистика по использованию их навыков. Документация по созданию навыков на основе Alexa Skills Kit позволяет быстро начать и выполнить свой проект, а сам Skills Kit предоставляет множество готовых примеров, которые можно взять за образец для разработки. Также Alexa Skills Kit включает множество подготовленных API-интерфейсов, которые можно использовать совместно со своими навыками.
Функционально разрабатываемые навыки делятся на четыре вида: Custom skill (custom interaction model), Smart Home Skill API (pre-built model), Video Skill API (pre-built model) и Flash Briefing Skill API (pre-built model). Пользовательские навыки (Custom skill) – это традиционный диалог между устройством с навыками Alexa и пользователя. Если для реализации навыка потребуется логика ветвления или работа с базой данных, то для реализации программной части Amazon предлагает связать разработку навыка и возможности облака AWS при помощи сервиса AWS Lambda.
Фактически разработка сводится к описанию взаимодействия с Alexa в формате файлов JSON и программирования сервиса AWS Lambda, с размещением (хостингом) в этом же сервисе реализации своего навыка. Alexa будет посылать запросы на сервис Lambda, где программный код на Node.js, Java, Python илиr C# будет выполнять логику запроса. Как альтернатива – это размещение реализации своего навыка на своем же веб-сервисе и хостингом на любой альтернативной площадке, например, другого облачного хостинг-провайдера. В случае самостоятельного хостинга программный язык реализации не играет роли, главное, чтобы веб-решение поддерживало стандартный протокол HTTPS для работы с API Alexa.
Следующий тип навыков – это Smart Home Skill API, как несложно догадаться, предназначенный для решений, связанных с аппаратными решениями и оборудованием умного дома. Здесь сервис AWS Lambda может стать своеобразным «мостом» между работой голосового ассистента и серверами, выполняющими обработку и управление «электронной начинкой» умного дома, впрочем, как и другими смарт-устройствами, например, промышленного применения, для сферы бизнеса и т.п.
![](https://habrastorage.org/webt/y8/bk/wx/y8bkwxkhroxl5jayhxw6v3alpmw.png)
Picture: How the Smart Home Skill API Works – Alexa Skills Kit
Оставшиеся направления реализаций навыков для Alexa – это разработка навыков по управлению и работе с видео-контентом (Video Skill API) и работы с новостным контентом (Flash Briefing Skill API), например, работа с запросами HTTPS, лентами новостей в формате RSS или контентом структурированном в формате JSON и т.п. Но тут стоит признать, что лучше «один раз попробовать» и создать свой навык для Alexa, чем «смотреть» и заниматься теорией. Хотя, это уже непременно будет материалом для наших следующих публикаций.
В завершении хочется отметить, что у Amazon есть еще множество интересных решений, связанных с искусственным интеллектом и аудио интерфейсом в контексте облака AWS. Например, если не требуется управлять устройствами, а только озвучить некоторые фразы, то в облаке Amazon существует сервис Polly, который преобразует текст в естественную речь и сохраняет результат в файле MP3.
![](https://habrastorage.org/webt/of/ov/pt/ofovptd2ymeqo-un6cnmlnfonyq.png)
Picture: Amazon Polly – Amazon Web Services
В случае, если требуется создать чат-бота, который понимал бы естественный язык, можно использовать Amazon Lex. Этот сервис, на основе технологий глубокого обучения, которые, кстати, использует и Alexa, позволяет выполнить автоматическое распознавание речи, получив на выходе текст.
![](https://habrastorage.org/webt/sx/6w/fv/sx6wfvzoqsiava-fn2yu1iwlg-q.png)
Picture: С помощью Amazon Lex можно создавать сверх интерактивные диалоговые пользовательские решения для подключенных устройств – Amazon Web Services
Но, безусловно, с Alexa значительно веселее и, пожалуй, проще решать задачи на новом уровне построения аудио интерфейсов для взаимодействия с устройствами IoT, при том, что цена на колонку Echo Dot стала вполне доступной. Впрочем, у каждого гика найдется под рукой подходящая плата Raspberry Pi, на которую элементарно устанавливается Alexa Voice Service. Фактически голосовой ассистент Echo Dot на основе сервиса Alexa расширяет рамки устоявшихся подходов для решения повседневных задач. Конечно, есть ограничение на локализацию, на количество предоставляемых услуг вне США и т.п. Но всегда интересно взглянуть в будущее и поэкспериментировать с этим в настоящем.
Пусть Alexa сейчас ошибается и, например, может случайно напугать своим смехом, или среагировать на «голосовую атаку» спровоцированную рекламным сообщением в телевизоре, но искусственный интеллект от Amazon непрерывно совершенствуется, переводя на новый уровень существующие компьютерные системы. К слову сказать, проблема со смехом решена замены фразы «Alexa, laugh» на «Alexa, can you laugh», а реакция на массовые голосовые запросы просто отсекается искусственным интеллектом облака. Правда, что будет, если запрос не массовый, а именно направлен на компрометацию определенного устройства, атаку на конкретного пользователя и т.д.? Пожалуй, это уже новый повод рассмотреть подходы к обеспечению кибербезопасности, в целом, и защиту устройств с голосовым интерфейсом, в частности. И, конечно, немного «космического» юмора с Alexa.
Далее, пожалуй, следует рассмотреть альтернативные решения, например, от компании Google, сравнить сервисы и т.д., но, как говорится, это уже тема для следующей публикации. И всегда интересны комментарии наших читателей об опыте работы с Alexa или идеями о роли и месте речевых интерфейсов в нашей повседневной жизни. Ведь, с одной стороны, такие решения пока больше направлены на получение некоего «вау-эффекта» от демонстрации технологии, но с другой стороны – нельзя не признать потенциальное удобство и пользу от рассмотренных нами технологий и решений.
Интересные ресурсы и ссылки:
Теория, сравнения и описание инфраструктуры:
— Как ИИ от Amazon постепенно захватывает мир – Geektimes
— Экосистема Amazon Alexa — обзор всего, что может работать с Alexa Echo – Geektimes
— How to become an Alexa developer: The smart person's guide – TechRepublic
— Early reviews are in for Apple's new $350 Echo competitor, the HomePod — and it's getting destroyed — Business Insider
— The Best Google Assistant Skills to Use With Your Google Home — Lifehacker
— Microsoft Cortana now features IFTTT integration — SlashGear
— Harman Kardon Invoke review: The first Cortana speaker sounds amazing – Engadget
— Amazon купил Ring за $1 млрд: чем занимается стартап и как устроен его украинский офис
— Amazon and Google Are Back to Feuding, This Time Over Smart Homes and Nest – Gizmodo
— Amazon will stop selling Nest smart home devices, escalating its war with Google – Business Insider
— Топовые продукты Amazon в 2017 году – Geektimes
— Как Alexa завоевывает мир – gq
— Возможности Alexa for Business — Amazon Web Services
— AWS re:Invent 2017 — Introducing Alexa for Business – Amazon Web Services
— 24 Ways Amazon Alexa Skills Can Help Your Small Business Today – Small Business Trends
— Which cars have Amazon Alexa and which are getting it soon? – GearBrain
— 5 CES 2018 announcements that put Alexa inside cars – VentureBeat
Практика:
— Easy Alexa (Echo) Control of your ESP8266 Huzzah – Adafruit
— Esp8266 Project: ESP8266 & Amazon Alexa for home automation – DFRobot Blog
— Amazon Echo Alexa Skills Kit integration with Node-RED – nathan.chantrell.net
— Developing an Alexa skill without writing any code – Part 2 (Intents and Slots) – Backend as a Service Platform
— Amazon предоставила разработчикам доступ к микрофонной технологии Echo — 3DNews
— Teardown Tuesday: Amazon Echo Dot v2 – All About Circuits
— The Rova Viva adds Alexa to your car for $38.99 — CNET
— Setting WiFi up via the command line – Raspberry Pi Documentation
— USB Audio Cards with a Raspberry Pi – Adafruit
— Sound configuration on Raspberry Pi with ALSA – Stephen C. Phillips
— Using a USB Audio Device With a Raspberry Pi – Envato Tuts+
— Alexa SDK Sample App audio issue – AVS Device SDK
— Raspberry Pi Alexa: Build your own Amazon Echo – Pi My Life Up
Программирование навыков:
— Build Your First Custom Alexa Skill in 10 Minutes
— Using voice to control a website with Amazon Alexa, part 1/6
— Using the Amazon Echo to Support Continuous Integration Builds – Part 1
Общие вопросы и критика:
— Как Безос решил неожиданную проблему в рекламе своей умной колонки – Geektimes
— Голосовой помощник Alexa может неожиданно засмеяться. Пользователям страшно – Meduza
— Распространение Alexa и разработки Amazon в направлении искусственного интеллекта – Geektimes
— This replica of HAL-9000 from 2001: A Space Odyssey comes with Amazon’s Alexa built in – The Verge