laotourの部屋

Voice Kit(Alexa)の製作


Google AIY Voice Kitをまねて、段ボールでケースを作り、RaspberryPiとマイク、スピーカーで動かしていたものを組込んだ。
AVS-Device-SDKを組込み、Amazonの”Echo Dot”と同様の物が出来上がった。

1.部品構成
 ・Raspberry Pi 3B …WiFiが動作不良。*1
 ・無線LANアダプタ …WLI-UG-GNM (buffalo)
 ・USBマイク    …最初は、VERY100 (Amazon)
            最終は、MM-MCU03BK (サンワサプライ)
 ・ダイナミックスピーカー 8Ω56mmΦ,0.2W (秋月電子通商)
 ・アンプモジュール …2W,PAM8012使用 (秋月電子通商) 

  *1 昨年購入して、自然会話ロボットとして組立、動かしていたが、半年ぐらいでWiFiが不良に
   なった。購入先のRSコンポーネンツに修理できないか問い合わせたら、修理は請負っていないが
   代品を無償で提供してくれた。(太っ腹!!)
   動作不良品はこちらで処分していいということだったので、余っていたUSBタイプの無線LANアダプ
   タをつけて、使用している。ラッキー!!

以下概ね参考資料@の手順に従って実行。一部参考資料Aによる。
SSH接続した端末から実行。

2.ラズパイの設定
 ・OSインストール Raspbian stretch 2017-11-29 をインストール
 ・基本設定 raspi-config 等で、Localization,Interface(SSH,VNC等),WiFiを設定
   WiFiは、固定IPアドレスとした。
 ・OSの最新化(Update)

3.AVSの構築
 ・必要な環境の設定 ディレクトリの作成など
 ・AVS-Device-SDKなど必要なパッケージを更新・インストール
 ・音声ライブラリ(portaudio)、タイマーとアラーム音(Amazon)等を借用インストール
 ・AVSのSDK、Snowboy(Wakeupに使用)をクローンし、ビルド
   Snowboyのクローン、Sampleアプリのビルドエラー防止のためのファイル2本の加筆・修正は、参考   資料A参照。

4.AVSの認証
 ・Amazonにサインインし、今回作成の製品を登録する。
  (Raspberry Pi+マイク+スピーカーでいろいろテストしていた時に登録したものがあるので、それを
  使うことにする。)
  登録した時の、Device ID、Client ID、Client Secret を控えておく。
 ・ AlexaClientSDKConfig.jsonに上記三つを書き込む。
 ・認証用プログラムを起動し、ブラウザでhttp://localhost:3000 にアクセスし、Developer用アカウン
  トでログインする。…この部分はVNC接続端末で実行。
  (認証の確認は、AlexaClientSDKConfig.jsonでrefreshTokenにコードが書込まれることでわかる)

5.Audio関係の設定、試験
 ・自分のシステムにあった設定ファイル(.asoundrc)を作成
 ・マイク・スピーカーのテスト(録音と再生)

6.Alexaの起動 参考資料A参照
 ・いよいよ”Alexa”の起動。下記のコマンドを実行し、”Alexa、今日は”と呼びかけてみる。
  何と返事が返ってくるか?

   cd /home/pi/sdk-folder/sdk-build/SampleApp/src && TZ=UTC ./SampleApp /home/pi/sdk-folder/sdk-build/Integration/AlexaClientSDKConfig.json /home/pi/sdk-folder/third-party/snowboy/resources/

7.いくらかの追記 以下は、参考資料A参照
7-1 Alexaの返答
 思ったより声が大きい。起動後、コマンドで音量設定できるのだが、起動直後から調整しておくには、
 amixerコマンドで設定できるはず。
 しかし私のシステムではうまくいかず、マイク出力とアンプモジュール入力間に500KΩボリュームを設
 けて電気的に調整している。
 (Audioにうるさい人に言わせれば、音の歪が出る悪法だと言われるだろうな)

7-2 Wakeupwordの感度(マイクの感度)
 Snowboyを採用すれば、SampleApplication.cpp内の数値で感度とボリュームが調整できるとのこと。
 やってみたのだが、もともと感度の悪いVERY100ではほとんど変化なし。思い切ってMM-MCU03BKを購入し
 て試してみたら、バッチリ!
 (やっぱり、少しは金をかけんとあかんかな!(笑))

7-3 自動起動
 電源投入後Alexaを自動起動させるため、/etc/rc.localの exit 0 の前に上記のAlexa実行文を置いて
 自動起動させている。

*天気予報、時刻確認、ニュースなど。時にはピカチューを呼んだりしていろいろ楽しんでいます。


参考サイト
  @Raspberry PiにAlexaを召喚する3つの方法

  Aラズパイでスマートスピーカーを自作(stretch)

8.日本語対応、自動起動など…ハンズフリーEcho Dotもどき品の製作
 他の用途でのテストのため、Raspberry Piを取り外していたが、VoiceKitをGoogle Homeもどき品として完成させるのに合わせて、こちらはハンズフリーのEcho Dotもどき品としてまとめることにした。

8-1 AVS-Device-SDKのインストール
 上記の1〜7の手順で、Alexaを再度導入しようとしたが、うまくいかない。
 4.項のAVSの認証の所で、認証のためのプログラムがどうも作成できていない。原因はよくわからない。
 AVS-Device-SDKの内容が変わって、Make-build時の中身が変わったように思われるのだが……

8-2 Alexaの導入方法の再調査
 色々調査し、参考サイトと同じ人がAlexaの導入を自動化するgitを公開していることが分かった。
 そのgitの内容に従って、操作してみた。
 AVS認証もうまく行ったが、今度は音声入出力がうまくいかない。
 よく調べると、サウンドカードを利用している。自分なりに音声入出力設定ファイルなどをいじって、3.5"ジャックから
 音が出るようにしてみたが、うまく働かない。
 同じAudioカードを購入した。

  TechRise 外付け サウンドカード 3.5mmマイクとヘッドホン対応 USB2.0接続 ドライバ不要
    https://www.amazon.co.jp/dp/B06Y3ZL2V4/

8-3 Audioカードを使用してのAlexa導入・動作
 参考サイトの手順通りに実行し、日本語対応のEcho Dotもどき品が動作しだした。
 同記事を参考にし、WakeupWord"Alexa"を受付けた時、起動音が鳴り、LEDが点灯するようにも設定した。

8-4 ハンズフリー化
 同記事の手順では、Alexaを動作させるシェルスクリプトstartsample.shが形成される。
 Google Assistantもどき品と同じく、startupファイルにstartsample.shが起動するよう記載し、AC電源投入により
 自動起動させている。


参考サイト
  ReSpeakerと共に働くAlexaとGoogle Assistant


ページTOPへ