Help us understand the problem. What is going on with this article?

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

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

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした