おうちにGoogle Homeがやってきましたが、Google AIY Voice Kitでも、AIスピーカーの学習を進めております。
というわけで、本日は、付属の冊子の第7章をやってみます。
冊子は、ネットでPDFでダウンロードできますが、この52ページからの内容です。
具体的には、AIYスピーカーに、ブレッドボードやLEDライトを付けて、音声コマンドでLEDライトを点灯させる、ということをやっていきます。
なお、これから紹介するプログラムを実行するには、Google Cloud Speech APIの登録作業が完了していることが前提になります。まだの方はこちらをご参照くださいませ。
Repeat after meのプログラム
第7章には、LEDライトを光らせる前に、Repeat after meのプログラムがあります。まずは、そっちを試してみます。
これは、どういうプログラムかというと、「Repeat after me」の後の言葉をAIYスピーカーさんが復唱してくれるというもの。
さっそくやってみます。
まずは、前回作ったcloudspeech_demo.pyのバックアップを作成しておきます(万一間違えたり、消したときに元の状態に戻せるため)。
具体的には、デスクトップ画面にあるstart dev terminalのアイコンをダブルクリックして、ファイルをコピーするコマンドを入力します。
cp src/cloudspeech_demo.py src/cloudspeech_demo_backup.py
こうして、元のファイルのバックアップを取っておいて…、
ターミナル上でテキスト編集できるnanoエディタを開きます。
nano src/cloudspeech_demo.py
そして、cloudspeech_demo.pyにrepeat after meのプログラムを足していくわけです。
冊子の55ページにあるプログラムを参考に必要事項を加えていきます。
すると…
あら、できたわ。
って、カンタンに書きましたが、実際は、エラーが出て、自分の写経したプログラムのどこが間違っていたのか検証する時間がずいぶんありました。「:」が抜けてたっていうオチでしたが。
プログラムを実行して上手くいくと、「Press the button and speak」の文字がターミナル画面に出てくるので、AIYスピーカーのボタンを押した後に、
「Repeat after me good morning」と言うと
「Good Morning」とスピーカーが音声で返してくれます。
ターミナル画面を見ると、こんな風に表示されます。
私が発音した「repeat after me good morning」が表示されています。
ただし、音声認識をテキスト化できないとダメみたいなので、英語の言葉しか分かってくれません。
「Repeat after me こんにちは」と言っても、無反応になります。
どんだけ長いテキストを読み上げて、分かってくれるんだろうと思って、冊子のテキストの英語を読み上げてみましたが、そこそこ長い行をリピートしてくれました。やはりGoogleの音声認識はスゴイ!
LEDをつけてみるぞ!
次は、LEDを付ける作業に取り掛かりますが、実は、私、これまで電子工作の経験ゼロ。LEDとか抵抗とかもさっぱり分かってない人です。
なので、少し前にクジラ飛行机さんの「やさしくはじめるラズベリーパイ」の本を買ってきて、学習を初めていたのでした。
まずは予行練習
最初に、通常のラズパイで、LEDを点灯させる実験をして、動作を確認しようと思い、もう一台のラズパイにブレッドボードを接続して、LEDを光らせるってのがどんなものなのか試してみました。
「やさしくはじめるラズベリーパイ」の本の第3-3章にあたります。
やってみたら、あら光った。
ふーん、こんな風になってるんだぁ、ということを何となく理解したうえで、さぁ、いざ、Mag Piの冊子に従ってプログラムを写経してみます。
いざ、LEDライトまわりを組み立て
AIYスピーカーでLEDライトを点灯させるのに使った材料は以下のとおりでした。
- ブレッドボード 1つ
- 赤色LEDライト 1つ
- 330Ωのカーボン抵抗器 1つ
- ジャンパワイヤ オス‐オス 3つ
これらは以前、秋月電子通商さんで購入したものです(^-^)。 「やさしくはじめるラズベリーパイ」の本では、本で使う電子工作の部品の買い物リストが掲載されていまして、そこに秋月電子通商さんで購入する際の通販コードが書いてあります。
なので、秋月電子通商さんのホームページに行って通販コードで検索するとお目当ての部品が簡単に出てくるので楽ちんでした(^^♪。とりあえず、第3章で使用する部品だけ事前に買っておいたんですね。それが今回のAIYスピーカーにも流用できたっていうわけです。
ブレッドボードのLEDライトたちをAIYスピーカーの基板に繋げます。
ジャンパワイヤは、GPIO26番にあたるVoice Hatの基板で、Servos 0となっている3つの穴のうち左右の2か所に、軽くすーっと挿すだけ。固定はされていません。ハンダとか必要ないですよ。GPIOの番号と、Voice Hatの基板の対応表は、Mag Piの冊子の巻末(72~73ページ)に掲載されています。
こうして、LEDライトの配線を準備できたら、AIYスピーカーのラズパイを立ち上げて、デスクトップ画面から、start dev terminalのアイコンをダブルクリックして、ターミナル画面に入ります。
そこで、nanoエディタで、led_demo.pyという新規ファイルを作成して、冊子に書かれているプログラムを写経していきます。写経するプログラムはPDFファイルをご参照くださいませ(57ページ)。
なお、本にも書いてありますが、コマンドラインからコードを実行するために、ファイルの最初に
#!/usr/bin/env python3
と付け加えるのを忘れずに。
ファイルを一旦保存したら、コマンドラインからコマンドを実行できるファイルにするために、以下のコマンドをターミナル画面で入力します。
chmod +x src/led_demo.py
えっと、もともとの冊子の説明では、「chmod +x /src/led_demo.py」となっているのですが、そのまま入力するとエラーになります。赤字のスラッシュは誤植ですね。
ちゃんと実行できるファイルになったかを確認するには、「ls」コマンドを打った時に表示されるファイル一覧の中の、「led_demo.py」の文字の色が灰色から緑色に変わるので、すぐに分かるはずです。
そして、いざ、下を入力してプログラムを実行!
src/led_demo.py
ですが、私の場合…
さっそく出た。
Syntax Error
何がいけないんだろう…。考えること、数分…いや十数分。プログラムを一字一句見直す。うーん。そして、判明しました。
ズバリ、私のタイプミス。
コンマがピリオドになっていた箇所が1か所ありました。
うわー、こんな小さなミスでエラー出ちゃうのね。気を付けないと。
気を取り直して、再度、実行。
そして、見事成功!
「Turn on the light」で、ブレッドボードの赤色LEDライトの光が点灯し、「Turn off the light」で光が消灯しました。言葉を発してから、ライトが反応するまでちょっとタイムラグがあるのがまた、なんとも…。
音声でシャットダウンも
冊子には、そのあと、シャットダウンのプログラムが紹介されています。
これは、AIYスピーカーのラズベリーパイをシャットダウンする際に、「Shut down」と音声コマンドでシャットダウンするためのものだそうです。
これも、後でやってみようと思います。
コメント