Alexa в IoT. Какие возможности открывает новая платформа

Підписуйтеся на Telegram-канал «DOU #tech», щоб не пропустити нові технічні статті.

Всем привет. Я Костя, Solution Architect в Klika Tech — международной компании с фокусом разработки в области Интернета вещей (IoT). Мы создаем решения, которые выводят жизнь на новый уровень: разрабатываем умные инвалидные коляски, системы управления зарядными устройствами для электромобилей, решения для умного дома. Подробнее познакомиться с ними можно в нашем портфолио на сайте.

Эта статья будет полезна тем, кто хочет встроить голосовой помощник Alexa в устройства с ограниченными возможностями, к примеру, в чайники или кофеварки.

Для большинства людей в развитых странах мира такие голосовые сервисы как Amazon Alexa, Siri от Apple, Google Assistant и Cortana от Microsoft стали просто неотъемлемой частью жизни, облегчая и помогая решать повседневные задачи. Голосовое управление есть практически везде — от умных колонок и смартфонов до автомобилей. А современный темп развития технологий позволяет разработчикам встраивать эту технологию во все более новые и интересные проекты.

Если вы посмотрите на существующие продукты, то скорее всего заметите, что в них используется достаточно мощные процессоры, основанные на базе архитектуры x86 или ARM Cortex-A, что повышает их стоимость и расход энергии. В свою очередь, эра интернета вещей (loT) ведет к созданию новых и более доступных голосовых помощников.

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

Крупнейший мировой облачный провайдер Amazon и Amazon Web Services (AWS) видит огромный потенциал в использовании голосовых помощников в устройствах для потребительского и индустриального секторов и предлагает для этого разработчикам мощный инструмент в виде сервиса Alexa Voice Service Integration for AWS IoT (AIA).

Как это работает

Прежде всего стоит взглянуть на общую архитектуру AIA. Нам нужно перенести функционал Alexa в облако, и для этого потребуется канал для отправки и приема аудиопотоков и управляющих команд. Наверняка основная функциональность вашего устройства также требует каналов связи с облаком. Обычно они уже построены на основе протокола MQTT, и в этом случае их можно использовать и для данных Alexa.

Интерфейс коммуникации между устройством и голосовым сервисом Alexa (AVS) устанавливается с помощью набора специальных топиков протокола MQTT. Этот интерфейс должен использовать брокер сообщений AWS loT Core, так что вам необходимо создать отдельный Thing для каждого IoT-устройства. При этом, если вы уже используете AWS loT Core, то скорее всего у вас уже есть эти Things, и их можно переиспользовать. Если это не так, просто следуйте документации.

Общая структура протокола представляет собой набор высокоуровневых топиков в $aws/alexa/ais/v1/<clientId>:

  • connection: этот топик используется для управления подключением и отключением вашего устройства от AVS;
  • capabilities: используется для согласования возможностей. В терминах AIA, возможность — это заранее определенный набор функций, которые поддерживает ваше устройство. В данный момент их существует всего пять, однако в новых версиях могут появится новые. Кратко опишем их немного ниже.
  • directive: топик для сообщений, инициированных AVS;
  • event: топик для сообщений, инициированных устройством;
  • others: в настоящее время содержит два подтопика, microphone и speaker, предназначенных для передачи аудиоданных.

Вся передача данных, за исключением подключения, зашифрована с использованием симметричного алгоритма шифрования AES-GCM. Он работает вдобавок к TLS-шифрованию, используемому для защиты канала передачи данных.

Чтобы пользоваться Alexa Voice Service, нужно соблюдать определенный порядок действий:

  1. В первую очередь необходимо зарегистрировать новое устройство. Это делается через подключение к защищенному HTTP/1.1 сервису. Нужно предоставить информацию об аутентификации Alexa с помощью токена обновления LWA и идентификатора клиента Alexa, а также схему шифрования,поддерживаемую устройством, и информацию о подключении AWS loT Core. В ответе будет содержаться открытый ключ, который будет использоваться для получения симметричного ключа шифрования, а также корневой топик MQTT.
  2. Далее необходимо подключиться к облаку через MQTT и подписаться на указанные выше топики. После этого устройство может присоединиться к Alexa Voice Service.
  3. Теперь вам нужно сообщить AVS о возможностях, которые поддерживает ваше устройство. Это делается путем публикации их описания в топик «capabilities». Важно помнить, что сделать это надо сразу после подключения к AVS. Как только вы получили подтверждение — все готово к работе.

Что необходимо вашему устройству

В настоящее время AIA поддерживает пять возможностей:

  • System. Поддержка таких важных функций как обновление ключей, управление системой оповещения Alexa и сообщениях об ошибках.
  • Clock. Эта возможность используется для синхронизации местного времени с AIA.
  • Microphone. Используется для потоковой передачи аудиоданных с микрофона устройства и управления этим процессом. Чтобы сохранить конфиденциальность пользователя, существуют две директивы, которые запускают и останавливают передачу данных. Эта передача может быть инициирована как из облака, так и с устройства в случае, когда пользователь произносит wake word или нажимает кнопку на устройстве. Если для активации передачи данных использовалось wake word, оно должно быть включено в аудиоданные для проверки на облаке, поэтому на устройстве вам необходимо держать аудиобуфер длиной не менее 500 мс. Вне зависимости от инициатора, устройство должно осуществлять передачу данных в соответствии с Alexa Attention System. AVS требует, чтобы данные передавались в формате одноканального 16-битного линейного PCM с частотой дискретизации 16 кГц. Поэтому, если на вашем устройстве установлено несколько микрофонов, может потребоваться дополнительная обработка аудиоданных.
  • Speaker. Эта возможность используется для передачи звука. Воспроизведение контролируется облаком, которое направляет соответствующие инструкции и аудиоданные. Однако, в случае необходимости, управлять воспроизведением можно и на устройстве с помощью кнопок. Данные кодируются аудиокодеком Opus, который достаточно легковесный, чтобы работать во встроенном устройстве. Передача аудиоданных перемежается специальными маркерами. Каждый раз, когда вы получаете такой маркер, нужно послать событие SpeakerMarkerEncountered для оповещения AVS о текущей позиции воспроизведения.
  • Alerts. Эта возможность позволяет вашему устройству включать напоминания и будильники, даже когда оно не подключено к AVS. Но для этого в нем должен быть встроен таймер RTC.

Вы можете комбинировать эти возможности на свое усмотрение в зависимости от того, что планируете производить. К примеру, если вас интересует умный будильник, то вам точно не понадобится Microphone, в отличие от «Clock» или «Alerts».

Для чего подойдет AIA

Теперь, когда у вас есть представление о том, как работает AIA, самое время поговорить о том, как добавить Alexa в ваш продукт. Самый простой путь — это разработать устройство с использованием одного из комплектов разработки, которые поддерживают платформу AIA.

ESP32-VAQUITA-DSPG

Китайская компания Espressif добавила Alexa на MCU еще до того, как мир увидел AVS для AWS loT. Однако в том случае голосовой помощник работал непосредственно на платах ESP32-LyraTD-MSC и ESP32-LyraT, и их ресурсов не хватало для полноценной функциональности устройства. Более новая плата с поддержкой AIA разработана на новом поколении ESP32-WROVER SoC и использует DBMD5P Audio SoC для распознавания wake word с использованием нескольких микрофонов. ПО основано на стандартном SDK ESP-IDF с дополнением ESP-VA-SDK. Основным его недостатком является то, что оно содержит проприетарные статически связанные библиотеки, которые могут затруднить процесс отладки.

NXP SLN-ALEXA-IOT

Компания NXP представила отличное решение, не требующее DSP или любого другого модуля обработки звука. Микроконтроллер i.MX RT106A позволяет распознавать wake word и при этом обеспечивает необходимую бизнес-логику.

Предоставляемый SDK гибко настраивается. Хотя некоторая часть кода, связанная с распознаванием wake word и передачи аудиопотока закрыта, код в коммуникации с AVS доступен. Инструкция дает подробное описание работы с платой.

QUALCOMM® HOME HUB 100

Плата от Qualcomm является очень мощной. Имея на борту множество датчиков, она отлично подходит для использования в различных типах устройств. Новый аудиопроцессор значительно улучшает качество распознавания речи, а возможность работы с Wi-Fi, BLE, Zigbee и Thread позволяет без проблем сделать его частью умного дома.

Однако если вы работаете не с Windows, вы можете столкнуться с проблемой — SDK поддерживается в Linux, но в руководстве пользователя информации об этом нет.

В любом случае, плата от Qualcomm станет отличным выбором для широкого спектра возможных продуктов.

Stmicroelectronics Steval-Voice-UI

Вот ещё один комплект, который может распознавать wake word на микроконтроллере. Пока сложно дать ему какую-либо оценку, так как финальная версия еще не выпущена. Однако он очень похож на предложение от NXP.

SDK для голосового помощника

Появление AIA Client SDK и AIA Client SDK Integration with FreeRTOS позволяет добавить AIA практически в любое устройство. Поэтому, если у вас уже есть продукт, в который вы хотели бы добавить Alexa без основательного изменения оборудования, это можно сделать уже сейчас!

Голосовое управление может полностью изменить способ взаимодействия пользователя с устройством и стать основой для чего-то совершенного нового. Оставляйте ниже комментарии и вопросы с вашими идеями. Но самое главное — не упустите возможности, которые вам открывает новая платформа!

👍НравитсяПонравилось2
В избранноеВ избранном3
LinkedIn
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Допустимые теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Забавно, что платка от DSPG описана как китайская.

Не совсем так. Китайская — компания Espressif :)

Вся передача данных, за исключением подключения, зашифрована с использованием симметричного алгоритма шифрования AES-GCM. Он работает вдобавок к TLS-шифрованию, используемому для защиты канала передачи данных.

Вообще-то так делать _очень_ не рекомендуется, два шифрования могут проинтерферировать с потерей надёжности. Вы точно прочли описание? Если да, то зачем так сделано?

Самый простой путь — это разработать устройство с использованием одного из комплектов разработки, которые поддерживают платформу AIA.

Вы не могли бы обновить фотографии с указанием реальных размеров? Дорисовать габаритные линии, линейки рядом приставить в нужном масштабе — по вкусу.
А то судя по некоторым из этих фоток навскидку — попытка воткнуть такое в чайник приведёт к тому, что чайник увеличится в размере в полтора-два раза.

Вообще-то так делать _очень_ не рекомендуется, два шифрования могут проинтерферировать с потерей надёжности. Вы точно прочли описание? Если да, то зачем так сделано?

Да, там именно так. Ссылка. Полагаю, это сделано для того, чтобы сами сотрудники AWS не могли получить доступ к чувствительной информации, содержащейся в аудиопотоках.

Вы не могли бы обновить фотографии с указанием реальных размеров? Дорисовать габаритные линии, линейки рядом приставить в нужном масштабе — по вкусу.
А то судя по некоторым из этих фоток навскидку — попытка воткнуть такое в чайник приведёт к тому, что чайник увеличится в размере в полтора-два раза.

Обновил. Видно, что размеры платы от NXP составляют ~40×25 мм. Конечно, сюда нужно добавить место для спикера, но все равно, к примеру, в подставку от электрочайника она поместится свободно.

самое время поговорить о том, как добавить Alexa в ваш продукт

Вбиваєте в браузер Blynk IoT і насолоджуєтесь готовим рішенням.

С голосовыми интерфейсами(как владелец парочки Alexa echo) вижу такие проблемы после пару лет использования

— кроме каких-то базовых функций вроде будильника, работы с календарем, таймеров, возможно для интеркома у кого большой дом, включение-выключение приборов голосом, больше сложно придумать для чего это может быть полезно. Это совсем иной UX в отличии от визузальных. Можно посмотреть каталог Алекса скилов в сторе и увидеть что там 99% бесполезные поделки.

— если после установки обычного приложения из ап стора на телефон можно всегда его кликнуть и понять какие там функции и как ими пользоваться, то с Алекса скилами совсем другая история. Нужно знать точное название скила, знать какие команды(хотя бы основные), как их формулировать. То есть если каким-то скилом непользуешься постоянно, то со временем даже забываешь что он вообще был установлен и как его запускать.

Не знаю, попросить Alexa лаять две минуты голосом лабрадора для меня — бесценно.

Жоден з голосових асистентів не підтримує українську, це обламує(

Жаль только что Alexa в Украине не работает полноценно....

Подписаться на комментарии