Amazon AVS開発キット「Microsemi AcuEdge™」を使って音声認識力が高いAlexa搭載製品のプロトタイプを作ってみた
まいどおおきに、大阪の市田です。
日本でも販売開始となったAmazon Echoシリーズ、皆さんは既にお使いになられたでしょうか?
Echoシリーズ以外にも、今後ますます対応デバイスは増えてくると感じますが、もし独自に対応デバイスの開発を検討されているなら、今回ご紹介する「Amazon AVS開発キット」を使うことでハンズフリー製品を簡単に開発することが可能になります。
本エントリでは、公式に公開されている「Amazon AVS開発キット」の1つである「Microsemi AcuEdge™」についてご紹介したいと思います。
Alexa Voice Service (AVS) 開発キットとは
公式ページには下記のように記載されています。
Alexa Voice Service (AVS) の開発キットは、Alexa搭載製品を作るために必要な要素がすべてそろったリファレンスソリューションです。開発キットには、チップセットや音声処理技術のほか、AVS API を活用したクライアントソフトウェアが含まれています。音声によって作動するデバイスを簡単に開発できるだけでなく、開発コストを下げ、実装プロセスを短期間化することが可能です。
要するに「ゼロから開発するよりも簡単に商用想定のAlexa対応デバイスを開発できる」というものです。
利用シーンに応じて「タッチ操作、ハンズフリーソリューション、遠隔ソリューション」に分類されていて、2017年12月の時点では7個のキットが紹介されています。
(英語サイトでは7個の表示になります。デフォルトだと下記のリンクは日本語ページに変わってしまうので、画面下の言語選択から「英語」を選択して切り替えて下さい。)
Development Kits for Alexa Voice Service
Microsemi AcuEdge™ Amazon AVS開発キット
今回試してみたキットは「Microsemi AcuEdge™ Amazon AVS開発キット」です。
これは「音声処理に不向きな騒がしい環境」でもウェイクワードに反応できる高い音声認識率を持ったキットになります。
Microsemi AcuEdge™ Amazon AVS 開発キット
下記のユーザガイドを元に実際に組み立てて「騒がしい場所でも応答してくれるかどうか」確認したいと思います。今回は英語と日本語で試してみました。
同梱パーツと組み立て
まずはキットを組み立てましょう。セットで送られてくるパーツは以下の4点です。
- プラスチック製フレーム
- 同梱の基板と接続したRaspberry Piを乗せます。
- 真ん中の爪の箇所にスピーカーを乗せます。
- ネジ類
- フレームと基板、Raspberry Piを固定します。
- 開発基板
- クイックスタートカード(紙)
Raspberry Piやスピーカーは付属していないので、今回はそれぞれ下記を別途用意しました。
- Raspberry Pi3 Model B
- Micro SDカードや電源アダプタ等も必要になります。
- OSは「Raspbian Strech」の最新版を用います。
- Raspberry Pi自体のセットアップは割愛させて頂きますが、Desktop版を利用して下さい。
- VNCもしくはキーボード、マウス、モニタを使ってGUIでデスクトップにアクセスできるようにしておきましょう。
- スピーカー
- スピーカーは下記のものを使いました。これだとフレームにピッタリ設置できるサイズです。
- JBL CLIP | Bluetoothスピーカー | JBL by HARMAN
組み上がったものが下記になります。配置方向やネジの箇所など詳しいことはユーザガイドに写真付きで載っているので迷うことは無いと思います。
ネジ締めは非常に硬いのでプラスドライバーを用意しておきましょう。
開発者ポータルの準備
まずAmazon開発者ポータルにログインして、商品(Product)を作成します。
この開発キットでは、ZLK38AVSというソフトウェアを利用しますが、そのインストールに必要な製品ID(Product ID)、クライアントID(ClientID)、クライアントのシークレット(Client secret)を開発者ポータルから取得します。
もしポータルのアカウントがなければ作成しておきましょう。アカウントができたらサインインして「Alexa voice Service」の「始める」をクリックしてください。
「開始する」をクリックします。
製品情報を入力する画面になるので、それぞれ下記のように入力していきます。
項目名 | 入力内容 | 備考 |
---|---|---|
製品名 | xxxxxxxxxxxx | 適当な名前を入力してください。 |
製品ID | xxxxxxxxxxxx | スペースを入れることはできません。適当なものを入力してください。 |
製品はアプリやデバイスを使用しますか? | 端末 | 開発キットを使う為です。 |
ご使用の端末は、コンパニオンアプリを使用しますか? | いいえ | |
商品カテゴリー | ワイヤレススピーカー | |
商品概要 | ワイヤレススピーカーのテスト | 適当な既述を入力してください |
エンドユーザーは、商品とどのようにやり取りするのでしょうか? | ハンズフリー | |
画像をアップロード | 不要です。 | |
この製品を商品として配信する予定ですか? | いいえ | |
これは子供向け商品、それ以外は13歳以下の子供向けですか? | いいえ |
入力できたら「次へ」をクリックしてください。
次のステップではセキュリティプロファイルを作成します。今回は新規に作成したので、「プロフィールを新規作成する」をクリックします。
セキュリティプロファイル名と説明の記載を入力します。
項目名 | 入力内容 | 備考 |
---|---|---|
セキュリティプロファイル名 | xxxxxxxxxxxxx | 適当な名前を入力してください。 |
セキュリティプロファイル既述 | xxxxxxxxxxxxx | 適当なものを入力してください。 |
次の画面に進むと、クライアントID、クライアントのシークレットが表示されるので、控えておきましょう。
後でRaspberry Pi上でZLK38AVSソフトウェアをセットアップする際に必要な情報になります。
その下にある2つの項目も必要事項になります。
次のように入力して、それぞれ「追加」をクリックしてください。
項目名 | 入力内容 |
---|---|
許可された出荷地 | http://localhost:3000 |
許可された返品URL | http://localhost:3000/authresponse |
追加できたら「以下に同意します」にチェックを入れて「完了する」をクリックして下さい。
最後に「OK」をクリックして開発者ポータルの作業は完了です。
下記のように製品情報が登録されます。
ちなみに「セキュリティプロファイルID」、「クライアントID」、「クライアントのシークレット」などの各情報は、「マイ商品」画面の「管理する」をクリックすることで参照可能です。
下記の3つ(クライアントID、クライアントのシークレット、製品ID)の情報が後で必要になります。
ZLK38AVSソフトウェアインストール
次にRaspberriy Piに「ZLK38AVSソフトウェア」をインストールします。ソースがGithub上にあるので、Raspberry Pi上にダウンロードします。ここからのコマンドは全てRaspberry Pi上で実行してください。
$ git clone https://github.com/Microsemi/ZLK38AVS
ディレクトリを移動して、インストールを開始します。make all
を実行するとインストールが始まりますが、約250MBのパッケージをダウンロードするので完了まで20〜30分ほどかかります。気長に待ちましょう。(回線状況によって時間は変わります。)
$ cd ZLK38AVS/ $ make all
インストールが進むと、利用許諾の確認が出るので、yes
で進めて下さい。更に進むと下記のように「Product ID(製品ID)」「Client ID(クライアントID)」「Client secret(クライアントのシークレット)」を入力する画面になります。Amazon開発者ポータルで確認したものをここで入力します。
入力した情報が間違っていなければ、次のようにRaspberry Pi上でhttp://127.0.0.1:3000/
にアクセスするよう指示が出ます。
Chromiumがインストールされているので、ブラウザを起動してアクセスします。
開発者ポータルのログイン情報を入力してサインインしてください。
問題なければ下記のように成功した旨のメッセージが表示されます。ブラウザは閉じても構いません。
コンソールに戻ると、Alexaのサンプルアプリの自動起動について確認が出るので、どちらか選択して下さい。
自動起動を有効にしておくとRaspberry Piが起動する時にサンプルアプリが起動するので、都度起動コマンドを実行しなくて済みます。また、有効にしておくと起動時にAlexaが利用可能になったことを知らせる音が鳴ります。
インストールが完了するとRasberry Piの再起動を促されます。そのままsudo reboot
で再起動しましょう。
以上で準備が全て完了しました!
サンプルアプリケーションによるデモ
それでは早速、動作確認してみます。アプリの自動起動を有効にしていない場合は、明示的に起動する必要があるので、Githubからダウンロードしたディレクトリに移動して起動コマンドを実行します。
$ cd ZLK38AVS/ $ make start_alexa
実行すると下記のようにズラズラーっとメッセージが流れます。
この状態で話しかけると下記のように、こちらの発話をリスニングして(Listening...)、内容を解釈して(Thinking...)、返答する(Speaking...)、というように動作に合わせてステータス表示が変わります。
自動起動を有効にしていれば、端末起動の都度make start_alexa
と入力しなくてもいいので、Raspberry Piにログインせずにそのまま話しかけるだけでOKです。
騒がしい環境でのテスト(英語バージョン)
動作テストですが、今回の「Microsemi AcuEdge™」は「騒がしい場所でもこちらの声を聞き取ることができる」というのが特徴の1つですので、Amazon Echo dotと比較してその性能を確認してみます。
静かな状態でテスト
まずは、静かな状態で確認します。(まだMicrosemi AcuEdge™を日本語化していないので英語になっています。)
また、Echo dotは日本語版を使っているので、こちらの発話に対してリングが光って反応はしますが応答を返すことができません。
その為、echo dotとの聞き取り能力の比較として、echo dotのリングが光るかどうかという点で見たいと思います。
騒がしい状況でテスト
下記の動画が騒がしい状況を想定した動作の様子になります。先程はecho dotのリングが光っていましたが今回は光らず、Microsemi AcuEdge™だけが反応しました。
(動画は雑音のボリュームが大きいので、再生時は気をつけてください。)
英語バージョンでも聞き取り能力が高いことが分かりました。次はいよいよ日本語で確認したいと思います。
Microsemi AcuEdge™の日本語対応
国内での商用利用を考えると、やはり日本語対応は必須になります。そこでMicrosemi AcuEdge™でも日本語が話せるようにしてみました。
やることは簡単で、ZLK38AVSソフトウェアをインストールする前に、コンフィグファイルを修正するだけです。
git clone
したZLK38AVSディレクトリ直下にあるconfig.mk
というファイルを修正します。下記の記載がある341行目です。
このsettings.defaultAVSClientSettings.locale
の内容をja-JP
に修正します。
jq '.settings.defaultAVSClientSettings.locale="en-US"' $(AMAZON_AVS_JSON_CONFIG)|sponge $(AMAZON_AVS_JSON_CONFIG); \ ↓ 下記のように修正 jq '.settings.defaultAVSClientSettings.locale="ja-JP"' $(AMAZON_AVS_JSON_CONFIG)|sponge $(AMAZON_AVS_JSON_CONFIG); \
config.mkを修正できたら、後は手順通りにmake all
でインストールします。
ZLK38AVSのアンインストール
すでにZLK38AVSをインストールしていたら、アンインストールしてから再インストールして下さい。アンインストール用のコマンドが用意されているので、それを実行します。
$ cd ZLK38AVS/ $ make cleanall
日本語で会話してみる
locale設定を変更して再インストールできたら、次の動画のように日本語で会話することができるようになっています。
尚、この動画では天気を聞いてますが、ここで出てくる「江戸堀」とは弊社の大阪オフィスがある地名です。住所の変更はAmazon Echoなどと同様に、スマホのAlexaアプリから住所設定をすることで変更可能です。
騒がしい環境でのテスト(日本語バージョン)
先程の英語バージョンの時と同じ要領でテストしてみたいと思います。雑音として利用する音声は日本語で喋っているものに変更しています。
動画の通りEcho dotは反応しておらず、Microsemi AcuEdge™が返答しています。
(動画は雑音のボリュームが大きいので、再生時は気をつけてください。)
(ちなみにAlexaが返答している時刻がおかしなことになっていますが、設定がおかしい訳ではありません。私が試している時間帯がおかしいので気にしないでくださいw)
日本語バージョンでも、騒がしい場所で正確に聞き取っていることが確認できました。
カスタムスキルを試す
もちろん日本語でカスタムスキルを利用することもできます。これで実際の開発に際して最低限のことはできるようになったかと思います。
尚、日本語スキルは下記の内容で作成したものを利用しました。
最後に
動画では分かりづらいかもしれませんが、ノイズに見立てた音声は実際にはかなりの音量です。実際このレベルの騒がしさの中でしゃべるのは結構つらいものがあると思います。
実際の利用現場として、店舗で商品注文を音声処理するようなシーンを想定した開発にはピッタリなキットだと思います。また、日本語で利用できるので、より実践的な商品開発のデバイスとして取り組みやすいのではないでしょうか。
以上です。