M5Stack Core2 for AWS
EduKitワークショップのサイト にしたがって学習を進めると、最後は Intro to Alexa for IoT の課題です。M5Stack Core2 for AWS を Alexa にすることができます。
Alexa Voice Service (AVS) Integration for AWS IoT
Alexaを動作させるための Alexa Voice Service (AVS) は通常Raspberry Piなど(M5Stackよりは高いスペック)が必要になります。Alexa Voice Service (AVS) Integration for AWS IoT (AFI) はM5StackのようなデバイスでもAlexaを動作させることができるようにした仕組みです。
デバイスはデバイスメーカーが提供するAWS IoT CoreにMQTTで接続して、負荷の高い処理はクラウド側で動作するようです。Alexa Voice Service (AVS) Integration for AWS IoT のページ では、現時点で NXP i.MX RT 106 A と Qualcomm Home Hub 100 Development Kit for Amazon AVS の2つのデバイスが提供されてい流ようです。M5Stack Core2 for AWS では、Espressif社がAlexa Voice Service (AVS) Integration for AWS IoT環境を提供しています。
ということで、デバイスベンダーはAWS IoT Coreへの接続と、プロビジョニング(アプリ)で接続するデバイスを制限できるということになります。(簡単にM5StickVにポーティングするということはできなさそう)
実行とハマりどころ
EduKitワークショップ全般を通じて、比較的入力する作業が多いのでビルドは慎重に進める必要があります。
環境は、こちらのブログ WindowsでESP-IDF4.2環境を作る などで解説されていますが、ESP-IDF4.2環境を作るところから始まります。Python2.7は使えませんが、私の場合MacのデフォルトがPython2.7だったので途中でエラーになりました。Python3.9をデフォルトにしました。
ビルド時にエラーになり、Set up Environment Variables に記載された、
set CORE2FORAWS_PATH=/path/to/Core2-for-AWS-IoT-EduKit/Core2-for-AWS-IoT-Features-Demo
を、次のように変更しました(み さんのツイートを参考にさせて頂きました、ありがとうございます)
set CORE2FORAWS_PATH=/path/to/Core2-for-AWS-IoT-EduKit/Blinky-Hello-World
ビルドが終わったら、スマホアプリ (ESP Alexa) でWiFi接続のプロビジョニングを行いますが、なぜかiPhoneではデバイスを選択してパスワードを確認した後にアプリが終了してしまいます。代わりにAndroidで設定しました。Androidでは位置情報の許可が求められたので、位置情報を取得するようです。iPhoneでは位置の許可を取得できなくてアプリが終了してしまっているのかもしれません。
ようやく動作したら最初は英語をしゃべります。日本語に変更するのはスマホアプリ(ESP Alexa)です。次は住所がわからないと言ってくるので、ESP AlexaではなくAmazon Alexaアプリで住所を入力します。日本語でしゃべる場合は日本語で住所を入力する必要があるようです。
まとめ
M5Stackのようなデバイスで普通に音声対話ができるようになってきていることに感動しました。ますます色々なデバイスに音声対話が組み込まれていきそうですね。