Raspi2にAlexa Voice Service(AVS)を 〜Raspi2にAlexa Voice Service(AVS)をインストール編〜

# はじめに
2019年年始の（勝手にやってる)宿題の一貫でRaspiにAVSを入れるってのをやってみることにしました。
前回はRaspberry Pi2にRaspbianをインストールするを行いました。
今回は、そのRasbianをインストールしたところにAlexa Voice Service(AVS)をインストールしてみます。

## 参考サイト
https://github.com/alexa/avs-device-sdk/wiki/Raspberry-Pi-Quick-Start-Guide-with-Script
https://developer.amazon.com/ja/docs/alexa-voice-service/input-avs-credentials.html
https://developer.amazon.com/ja/docs/alexa-voice-service/build-the-avs-device-sdk.html
https://developer.amazon.com/ja/docs/alexa-voice-service/get-a-refresh-token.html
https://developer.amazon.com/ja/docs/alexa-voice-service/talk-with-alexa.html
https://developer.amazon.com/ja/docs/alexa-voice-service/set-device-location.html
https://qiita.com/Dimeiza/items/182c4847d7c1ead7df54


## 前提条件
Raspberry Pi 2 modelB
macOS High Sierra バージョン10.13.6
microSD 16GB
Rasbian Stretch with desktop
WiFiに接続済み

# AVSのインストール
それでは、RaspiにAVSをインストールしていきます。
内容は公式サイトに書いてる内容を実行していきます。

## 1. インストールスクリプトと設定ファイルのダウンロード
まずはインストールスクリプトや設定ファイルをダウンロードします。

```
wget https://raw.githubusercontent.com/alexa/avs-device-sdk/master/tools/Install/setup.sh \
wget https://raw.githubusercontent.com/alexa/avs-device-sdk/master/tools/Install/genConfig.sh \
wget https://raw.githubusercontent.com/alexa/avs-device-sdk/master/tools/Install/pi.sh
```

成功したらこんな感じになります。
![IMG_3275.JPG](https://qiita-image-store.s3.amazonaws.com/0/105220/e4076f14-6ff5-0667-fde8-a33859280834.jpeg)

## 2. config.jsonの配置
[AVSの設定編](https://qiita.com/areaz_/items/60cbdf8059881ee33ec3)で取得したconfig.jsonを配置するときがやってきました。
今回の場合だと、「/home/pi/」配下にconfig.jsonを配置してください。

## 3. セットアップスクリプトの実行
先程ダウンロードしたセットアップスクリプトとconfig.jsonを使って、実行を行います。
最後に設定する数字はデバイスのシリアル番号となります。「-s」以降を設定しない場合は、
自動的にデバイスのシリアル番号は「123456」となります。
デバイスのシリアル番号は、任意で一意の英数字文字列（最大64文字）で形成します。

```
$ sudo bash setup.sh config.json -s alexa123456
```

実行すると以下のような画面になりますので、最後に「AGREE」と入力して、Enterキーを押してください。ちょっと時間がかかります。
![avs101.png](https://qiita-image-store.s3.amazonaws.com/0/105220/8a166852-e35a-a3d7-8305-ee772c440afd.png)

しばらくすると
`Press RETURN to review the license agreement and update the files.`
と出力しますので、Enterキーを押してください。

その直後に、

```
Please type yes or no.
Do you accept this license agreement? [yes or no]:
```

と出力しますので、「yes」と入力してください。
この後、コンパイルが実行されてだいたい１０〜１５分程度で完了します。
![IMG_3408.JPG](https://qiita-image-store.s3.amazonaws.com/0/105220/ad75a5b6-5661-b813-3fce-1edc88e5ee1b.jpeg)


## 4. 承認と実行
デバイス上で初めてサンプルアプリケーションを実行するときは、クライアントにAVSへのアクセスを許可する必要があります。

次のコマンドを実行します。

```
$ sudo bash startsample.sh
...
...
######################################################
#       > > > > > NOT YET AUTHORIZED < < < < <       #
######################################################

############################################################################################
#     To authorize, browse to: 'https://amazon.com/us/code' and enter the code: {XXXX}     #
############################################################################################
```

実行すると上記のような結果が出力されます。
メッセージの最後に、 **「認証するためにはURLにアクセスして、「code」の後ろに書かれたコードを入力しろ」** と書かれているので、Raspberry Piのブラウザを立ち上げて、以下のURLにアクセスします。

`https://amazon.com/us/code`

するとAmazonのユーザー認証画面が表示されるので、サインインしてください。
![IMG_9526.JPG](https://qiita-image-store.s3.amazonaws.com/0/105220/4d4cc063-7b9b-29c6-e036-8704080b2862.jpeg)

サインインしたら、先程出力されてた「code」の後ろに書かれたコードを入力して、「Continue」ボタンをクリックしてください。
![IMG_0020.JPG](https://qiita-image-store.s3.amazonaws.com/0/105220/d3e7fe47-64d1-d88c-8b3a-349f73a22892.jpeg)

すると「Alexa Voice Services and Alexa Account Connection」という画面が表示されますので、「Allow」ボタンをクリックしてください。
![IMG_0110.JPG](https://qiita-image-store.s3.amazonaws.com/0/105220/007395a4-b1eb-6329-37ea-8985b795ec1f.jpeg)

すると「Success!」画面が出ます。
![IMG_1153.JPG](https://qiita-image-store.s3.amazonaws.com/0/105220/c0b3c27e-87fa-b8a7-973f-1076cd4d4591.jpeg)

が、このタイミングでは、プロンプトにて実行していたプログラムが終了していた。
どうやら、プログラムが終了している状態では認証ができないようなので、もう一度コマンドを実行して、認証を行っていきます。

```
$ sudo bash startsample.sh
...
...
######################################################
#       > > > > > NOT YET AUTHORIZED < < < < <       #
######################################################

############################################################################################
#     To authorize, browse to: 'https://amazon.com/us/code' and enter the code: {XXXX}     #
############################################################################################
```

この後に色々出力されますので、これを早く探してください。
（子のタイミングでプロンプトのメニュー「編集」→「設定」から「ディスプレイ」の「履歴の行数」を「100000」にしておくことをオススメします）
そして、またブラウザでURLを入力してください。
`https://amazon.com/us/code`
後は同じように、サインインしてコードを入力してください。
そうすることで、以下のようなログが出力されるようになります。

```
########################################
#       Alexa is currently idle!       #
########################################
```

これで、Alexaが動く状態にはなりましたが、まだ日本語対応していないので、このまま以下を実行します。

`c` `1` `6` の順で実行すると以下のようになります。

```
c
+----------------------------------------------------------------------------+
|                          Setting Options:                                  |
| Change Language:                                                           |
|       Press '1' followed by Enter to see language options.                 |
+----------------------------------------------------------------------------+


1
+----------------------------------------------------------------------------+
|                          Language Options:                                 |
|                                                                            |
| Press '1' followed by Enter to change the language to US English.          |
| Press '2' followed by Enter to change the language to UK English.          |
| Press '3' followed by Enter to change the language to German.              |
| Press '4' followed by Enter to change the language to Indian English.      |
| Press '5' followed by Enter to change the language to Canadian English.    |
| Press '6' followed by Enter to change the language to Japanese.            |
| Press '7' followed by Enter to change the language to Australian English.  |
| Press '8' followed by Enter to change the language to French.              |
+----------------------------------------------------------------------------+


6
###################################
#       locale set to ja-JP       #
###################################
```

これで日本語対応が出来上がりとなります。
後は、いつもどおり、「Alexa」と声をかけてあげてください。

# さいごに
「Alexa」と声をかけてみましたが、全然反応せず。
「Alexa」だけめっちゃ英語風な呼び方にすれば反応してくれました。
どうやら、ライブラリを追加することで改善するようですが、今回はここまでにします。
参考URL:https://qiita.com/Dimeiza/items/182c4847d7c1ead7df54
次回はこのあたりもやってみます。

# 関連記事
[Raspi2にAlexa Voice Service(AVS)を 〜AVS設定編〜](https://qiita.com/areaz_/items/60cbdf8059881ee33ec3)
[Raspi2にAlexa Voice Service(AVS)を 〜Raspi2にRaspbianをインストール編〜](https://qiita.com/areaz_/items/6fc869cd2bf1ea1549c4)