Amazonの音声アシスタントAmazon Echo、すっごい欲しいのですが日本では技適が通っておらず、輸入できないらしい。
会社内で詳しい人に「でも欲しいっすね〜」と聞いたら、「自作する手がある」という答えをいただいたのでやっちゃいました。
Amazon EchoとAVSとRaspberry Pi
AVS(Alexa Voice Service)というAmazon Echoの裏側で動作している人工知能技術を利用した音声認識、自然言語サービスがあり、開発者向けという制限の下に、マイクとスピーカを接続したデバイスで動作させることができます。
また、サンプルアプリが公開されていて、以下のプラットフォームで動作させることができるようです。
- Raspberry Pi
- Linux
- Mac
- Windows
- Raspberry Pi + Conexant 2-Mic Development Kit for Amazon AVS
今回はRaspberry Piを利用することにしました。
材料
- Raspberry Pi3 Model B
- BUFFALO Class10 microSDHCカード SD変換アダプター 16GB RMSD-16GC10AB
- Raspberry Pi 3 model B 用電源 ACアダプタ 5V/2.5A KSY製
- スピーカー USB給電
- USBマイクロホン
全てAmazonで購入。
Raspberry Piの設定
SDカードのフォーマット
MacBook Proでマウントしてディスクユーティリティで初期化。
OSイメージの書き込み
OSイメージとしてraspbianをダウンロードする。今回はRASPBIAN JESSIE WITH PIXELを使う。
$ sudo dd bs=1m if=2016-11-25-raspbian-jessie.img of=/dev/disk2
SSH接続のための設定
現在の最新版2016-11-25リリースバージョンでは、リリースノートや以下のリンク先に書かれているようにデフォルトでSSHログインが無効化されているようです。
2016-11-25:
* SSH disabled by default; can be enabled by creating a file with name "ssh" in boot partition
- Raspberry Piをディスプレイ・キーボード・マウス無しの三重苦でもセットアップする方法
http://karaage.hatenadiary.jp/entry/2015/07/15/080000
boot
パーティションにssh
という空ファイルを作っておくことでSSHログインできるようになります。
$ cd /Volumes/boot/
$ touch ssh
配線
OSイメージを書き込んだSDカードをRasbperry Piに差し込む。
Raspberry Piとマイクやスピーカーを繋げる。
また、LANケーブルを接続してIPアドレスが自動で取れるようにしておく。
最後に、電源ケーブルを接続する。
SSH接続
Raspberry Piが取得したIPアドレスをカンで当てます。
というか、
$ arp -a
で出てくるアドレスのうち、新しそうなものにSSHでログインを試して見ると、そのうち当たります。
$ ssh pi@<IPアドレス>
初期パスワードはraspberry
なので、変えておきます。
VNC Serverのインストール
$ sudo apt-get install tightvncserver
$ tightvncserver
$ vi /home/pi/.config/tightvnc.desktop
[Desktop Entry]
Type=Application
Name=TightVNC
Exec=vncserver :1
StartupNotify=false
アカウント情報の取得
Amazon Developer アカウントの登録とALEXA デバイスの登録
https://developer.amazon.com/home.html
のアカウントを作成し、ALEXAタブからデバイスとセキュリティプロファイルを登録します。
この辺りは手順の通りに進めればOK。
ここで作成した
- ProductID (Device Type IDのこと)
- ClientID
- ClientSecret
を後に利用します。
ALEXA AVS Sample Appのインストール
alexa-avs-sample-appのインストール
Raspberry Piにログインして
cd Desktop
git clone https://github.com/alexa/alexa-avs-sample-app.git
インストールスクリプトの設定
cd ~/Desktop/alexa-avs-sample-app
vi automated_install.sh
ここでautomated_install.sh
内の
- ProductID (Device Type IDのこと)
- ClientID
- ClientSecret
の項目に自分が取得したアカウントの情報を指定します。
インストールスクリプト実行
cd ~/Desktop/alexa-avs-sample-app
. automated_install.sh
いくつか質問されるが、そんなに回答に困るものはなかったと思います。(画面キャプチャするの忘れた・・・)
20分程度は時間がかかるので、しばし待ちましょう。
アプリ実行
Raspberry PiにVNCログインして、3つのターミナルを立ち上げてコマンドを順番に実行します。順番大事。
ターミナル1: AVS認証用のWebサービス実行
cd ~/Desktop/alexa-avs-sample-app/samples
cd companionService && npm start
ターミナル2: Sample App実行
cd ~/Desktop/alexa-avs-sample-app/samples
cd javaclient && mvn exec:exec
しばらくすると、ポップアップ画面が現れてAVSへの認証を促される。Amazon Developerアカウントでログインします。device tokens ready
という表示が出ればOK。
このあたりの画面遷移は手順に詳しく書かれています。
ターミナル3: wake word engine実行
cd ~/Desktop/alexa-avs-sample-app/samples
cd wakeWordAgent/src && ./wakeWordAgent -e sensory
これを実行することで「ALEXA」とマイクで呼びかけると処理を実行してくれるようになります。
話しかけて遊ぶ
マイクの性能のせいか、自分の発音が良くないのか、なかなか認識精度が良くない・・・
でロケーションの設定や、会話のログが見れる。
http://www.atmarkit.co.jp/ait/articles/1612/08/news025.html
に紹介されていた、以下の会話が個人的には可愛かったです。是非聞いてみて。
試しに「Alexa, sing a song.」と言ってみたところ、「Who? Me? I couldn’t… I… Hit it!」(誰? 私が? できない… ええい、演奏して!)と言いながら、カントリー調でAlexaの日常を表現した歌を歌ってくれた。
雑感
材料さえ揃えれば、1~2時間で作れてしまうのでびっくりしました。
というより、ここまで開発者向けに丁寧なガイドを用意していることからAmazonの本気が伺えます。
参考にさせてもらったサイト
- [Raspberry Pi 3にRaspbianをインストール(Mac OS X を使用)]
(http://qiita.com/onlyindreams/items/acc70807b69b43e176bf) - Amazon Echoを6,000円で自作する 〜Raspberry Pi 3 + Alexa Voice Services (AVS)〜