〜『第一弾』Raspberry PIでAmazon Alexaを動かしてみた 〜

1.はじめに

「小さなものでいいから、自分たちで企画から考えて何か作ってみよう!」という方針のもと、開発部でフリープロジェクトを始動しました。

みんなであれこれと案を出し合った結果、全員一致でIoTをやってみようということになりました。と、いうのも、開発部はみんなソフトウェアエンジニアだったので、ハードウェアに関心を持つスタート地点としては良い題材だと思ったからです。

具体的に何をするのか、いくつか候補があがりましたが、最終的には、「Raspberry PIでAmazon Alexaと繋げて何か喋らせてみよう!」という内容に決まりました。

今回は、大雑把ではありますが、どんなことをしたのか振り返りたいと思います。

2.必要なもの

  • Raspberry PI(Raspbian OSインストール済みのもの)
  • スピーカー
  • マイク
  • Amazon Developerのアカウント

必要機材はそれほど多くないので、プロジェクトを始めるのはとても簡単でした。

Raspberry PI(ちなみにRaspberry PI 3のモデルBです)とスピーカーは、以前社内で使用していたものがありましたし、Amazon Developerのアカウントも簡単に取得できました。問題はマイクがないことでした。

幸い、Skypeで使うようなヘッドホンマイクが社内にあったので、それを使用していましたが、やはり不便だったのでUSBマイクを購入しました。マイクと聞くと高価なイメージですけど、実はコレは300円ほどで買えます。

3.Raspberry PIのセットアップ

Raspberry PIのセットアップはとても簡単でした。 ダウンロードしたRaspbian OSをRaspberry PIのメモリカードに書き込むだけです。

最初は、モニターは必要ないと思っていたので、Raspberry PI Stretch Liteを使用しました。

そして、マイクロSDカードをPIに差し込んで、Raspberry PIを起動します。

次に、以下のコマンドで、Alexa Voice Service(AVS)SDKをダウンロードしました。

次に、Raspberry PIのhome/config.txtにデバイスの情報を記述します。(デバイスの情報とは、AmazonのDeveloper consoleから確認できる、デバイスのIDなどです。)

次に、SDKを以下のコマンドでビルドしようとしました。

表示されたEULAのプロンプトにAGREEと入力します。
インストールが終わったので、次にstartsample.shを試しました。

順調にいくかと思ったのですが、ここでMediaPlayerに関する問題が発生してしまいました。

いくつかのアプローチを試しましたが、最終的には、Raspbian Stretch Liteのインストールでパッケージが見つからないことが原因であることがわかりました。

問題は判明したものの、修復することは難しく、もう一度最初からやり直すことにしました。Raspbian OSをSDカードに書き込み、同じ手順をやり直しました。

4. アプリが起動するまで

次の目的は、1回目で失敗してしまった startsample.sh の実行を成功させることです。

この時点では、リフレッシュトークンを取得しようとgetを試みるも、サーバレスポンスが401を返してきます。

request 情報に誤りがありそうだったので調べてみると、config.txtに情報が足りないことがわかりました。

config.txtを修正し、もう一度getをしてみると、リフレッシュトークンを取得し、Amazonに設定情報が反映されました。

これでRaspberry PIでAmazon Alexaを喋らせる準備が整いました!

5. Amazon AlexaをRaspberry PIの起動と同時に自動起動させる

喋らせることは成功しましたが、Amazon Alexaの起動を毎回手動(startsample.shをコマンドで実行する)で行うのは少々手間です。なので、Raspberry PIの電源ON時に、Amazon Alexaも同時に起動するようにしました。

まず、alexa.shという名称でスクリプトを作成しました。スクリプトは以下のようになっています。

次に、作成したスクリプトを実行可能ファイルにします。

そして、Alexaのスタートアップサービス(alexa.serviceという名称のファイル)を作成しました。

alexa.serviceの中身は以下のようになっています。

次に、ファイルの権限を変更します。

すると、daemonがリロードされ、サービスが使用可能となり、サービスがスタートします。

6. 日本語に対応させる

Alexaアプリはデフォルトで英語になっているので、日本語に対応させたいところです。

難しいのかなと思いきや、とても簡単でした。画面にしたがって、まずCを押して、次に1、次に6とキーボードを押すだけで日本語化できました。

実際に動いているRaspberry PI Alexaはこんな感じです。とりあえず東京の天気を聞いてみました。

…デフォルトだと摂氏ではなく華氏で教えてくれるので、ちょっとわかりづらいですね…。

他にもなぞなぞを出してくれたりします。

7. 今後の計画

こうして、無事に第1目標のAmazon Alexaの起動までできました!

今後の目標としては、Raspberry PIから電子部品に信号を送ったり、Alexaのスキル開発を視野に入れていますが、それはまたメンバーで話し合っていきたいと思います。

ここまで読んでくださってありがとうございました!