人工知能
音声認識
Raspberrypi3

Amazon EchoをRaspberry Piで自作する

More than 1 year has passed since last update.

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を利用することにしました。


材料

全てAmazonで購入。

完成図

2016-12-25 22.05.26.jpg


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

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


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://alexa.amazon.com/spa/index.html

でロケーションの設定や、会話のログが見れる。

スクリーンショット 2016-12-25 23.00.55.png

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の本気が伺えます。


参考にさせてもらったサイト