「あれくさー!」と話しかけてみたいけど、 海外のAmazonで販売されているEcho(Echo, Dot, Tap)を個人輸入するのはちょっとアレだし・・・。と思っていたら、Echo の中の人Alexa Voice Service が Echo 以外のデバイスやPCでも動かせるようになったというので、早速Raspberry Piに入れてみました。
準備・用意するもの
Amazon開発者ポータルのアカウント
Amazon開発者ポータル でアカウントが必要です。AmazonアプリストアにAndroid向けアプリを公開している場合など、すでにアカウント開設済みの場合は、既存のものが使えます。無償で開設できますので、持ってない場合は、サインアップしておきます。
Raspberry Pi
Raspberry Pi 3かRaspberry Pi 2 Model Bがいいみたいです。ここでは Raspberry Pi3 を使って試してみました。Raspberry Pi本体を動作させるために必要な一式(電源、SDカード、HDMIケーブル)以外に、マイクとスピーカーが必要です。Raspberry Piには音声入出力がついてないので、USBマイクと3.5mmのAudio Jackでつながる外部スピーカーを用意します。
Raspberry Pi はRaspbian (Jessie)をインストールしました。NOOBS使ってデフォルトの状態でJessieをインストールしてます。
Raspbian のインストール時はHDMIで繋いだモニターを使っても、Alexa完成後はヘッドレスで使用したい場合は、SSHの他にVNCのインストール・設定が必要です(Terminal を3つ開かなくては行けないし、ブラウザを開いて認証する必要があるので)。Tightvncserverのインストールについてはこの辺を参考に。
Alexa Voice Service への登録
Alexa Voice Service をインストールするデバイスを予め登録する必要があります。Amazon開発者ポータルに入って、Alexa Voice Service へ行き、今回インストールするRaspberry Piを登録します。
メニューから ALEXA へ行き、Alexa Voice Service をクリック。
右上 Register a Product のドロップダウンから Device をクリック。
Create a new Device Type でこれからインストールするRaspberry Pi用のDevice Typeを作成します。Device Type ID、Display Name が必要項目。Device Type IDは半角英数とアンダースコアのみ。Display Name は日本語が使えないみたいです。
Nextをクリックし、次の Security Profile 作成へ。Security Profile のセレクトボックスから”Create a new profile” を選び、Security Profile Name、Security Profile Description を適当に埋め Next をクリック。
Client ID、Client Secret が生成されます。Device Type ID と合わせて後で必要になるので、テキストファイルにこの3つをコピペしておきます。タブから Web Settings をクリック 。
Allowed Origin, Allowed Return URLs へそれぞれ、
https://localhost:3000/authresponse
を入力して完了。
Alexa Voice Service のインストール
Raspberry Pi の Terminal を開き、Alexa AVS Sample Appをクローンします。
cd
git clone https://github.com/alexa/alexa-avs-sample-app.git
ダウンロードしたばかりの alexa-avs-sample-app ディレクトリへ入り、automated_install.sh ファイルをnanoやviエディタで開きま、下記の3つの変数を自分の環境に合わせてアップデートします。
<!–
ProductID="Device Type InfoセクションのDevice Type ID"
ClientID="Security ProfileセクションのClient ID"
ClientSecret="Security ProfileセクションのClient Secret"
–>
これでやっとAVSのインストール開始です。
cd ~/alexa-avs-sample-app
. automated_install.sh
インストールスクリプトが始まり、ターミナルに表示される質問にいくつか答えて、インストール完了です。Localeを選ぶところがありますが、1) en-USを選びます。思ったより時間がかかりました。コーヒーでも買いに行ってればよかった。
Alexa Voice Service の起動
automated_install.sh が滞りなく終了すればインストールは完了です。早速Alexa Voice Serviceを起動してみます。
Raspberry Piでターミナルウィンドウを3つ開きます。
- 1つ目のウィンドウ
cd ~/alexa-avs-sample-app/samples
cd companionService && npm start
- 2つ目のウィンドウ
cd ~/alexa-avs-sample-app/samples
cd javaclient && mvn exec:exec
この“`mvn exec:exec“`を実行するとポップアップが表示されるので、Yes/はいをクリックしてブラウザを開きます。ブラウザは Amazon開発者ポータルの認証ページを開きますので、IDとパスワードを入れて、認証を完了します。
ブラウザの画面にはDevice Token Ready と表示され、ポップアップのダイアログの表示も変わます。OKをクリックするとAlexaが使えるJavaのアプリが立ち上がってます。このJavaのアプリ、中央の”Listen”ボタンを押すと、Alexaが入力待ちの状態になりますので、話しかけることができます。ブラウザを開いてもセキュリティアラートが出てしまう場合はこちらを。
- 3つ目のウィンドウ
cd ~/alexa-avs-sample-app/samples
cd wakeWordAgent/src && ./wakeWordAgent -e sensory
もしくは
cd ~/alexa-avs-sample-app/samples
cd wakeWordAgent/src && ./wakeWordAgent -e kitt_ai
のどちらかを実行します。これはJavaアプリのボタンを押さなくても、Wake Up Wordで音声認識を開始することができるようにするためです。ボタンを押して実行させるだけでいい場合には不要です。今回試した環境ではなぜかSensoryが動いてくれず、KITT.ai を使いました。
Alexa と話しかけてみる
“あれくさー” と話しかけ、Wake Up Wordとして認識されると短いビープ音がなりますので、そのあと命令を話しかけてみてください。
Enable Sleep Sounds でSleep Soundsスキルをインストールして、是非 Swiss Massage に挑戦してみてください。
Appendix
Alexa Voice Service Github リポジトリ
Step-by-Step Guide for Raspberry Pi
Raspberry Pi インストール&設定
Raspberry Pi 3インストール→無線LAN→日本語入出力→Macから操作(SSH・VNCサーバ・AFP)
Raspberry Pi 3でRaspbian Jessieをセットアップする方法
Raspberry Piの設定【VNCサーバ(tightVNC)の設定】
[メモ] Raspberry Pi : VNCサーバ設定(自動起動)
Tightvncserver のインストール
Tightvncserverで起動。初回はパスワードの設定など
ブラウザのプライバシーエラー
mvn exec:exec で開くJavaアプリからAmazon 開発者ポータルで認証が行われるはずですが、ブラウザによってはセキュリティ警告が出てくる場合があります。
そんな時は、詳細設定 をクリックして、
localhost にアクセスする をクリックして、先に進みましょう。
Pingback: Alexa Skill全20カテゴリーから、気になるSkillをピックアップ!(その3) | SPARROWS Blog - No Challenge, No Wings
Pingback: 技適通ってなくてもAlexaを使ってみる Mac編 | SPARROWS Blog - No Challenge, No Wings
Pingback: 技適通ってなくてもAlexaを使ってみる Windows 編 | SPARROWS Blog - No Challenge, No Wings