私的AI研究会? > SDK on RaspberryPi

Assistant SDK (Python) の Raspberry Pi へのインストール

#ref(): File not found: "20200209_142556_001s.jpg" at page "画像一覧"

#ref(): File not found: "20200216_092138_001s.jpg" at page "画像一覧"

事前準備

オーディオのテスト

  1. 録音および再生デバイスを見る。
    a. キャプチャハードウェアデバイスのリストでUSBマイクを見つけ、カード番号とデバイス番号を書き留める。
    $ arecord -l
    b. 再生ハードウェアデバイスのリストでスピーカーを見つけ、カード番号とデバイス番号を書き留める。
     3.5mmジャックには通常、Analogまたはbcm2835 ALSA(bcm2835 IEC958/HDMIではない)というラベルが付いていることに注意。
    $ aplay -l
  2. ホームディレクトリ(~/)に .asoundrc の名前で新しいファイルを作成する。<card number>と<device number>を前のステップで書き留めた番号に変更する。
    $ vi .asoundrc
    
    pcm.!default {
      type asym
      capture.pcm "mic"
      playback.pcm "speaker"
    }
    pcm.mic {
      type plug
      slave {
        pcm "hw:<card number>,<device number>"
      }
    }
    pcm.speaker {
      type plug
      slave {
        pcm "hw:<card number>,<device number>"
      }
    }
  3. 記録と再生が機能することを確認
    a. 再生音量を調整。
    $ alsamixer
    または
    $ amixer sset PCM 80% -c0
    b. テストサウンドを再生。確認できたら、Ctrl + Cを押す。これを実行しても何も聞こえない場合は、スピーカーの接続を確認。
    $ speaker-test -t wav
    speaker-test 1.1.8
    
    再生デバイス: default
    ストリームパラメータ: 48000Hz, S16_LE, 1 チャネル
    WAV ファイル
    レート 48000Hz (要求値 48000Hz)
    バッファサイズ範囲 512 ? 65536
    ピリオドサイズ範囲 512 ? 65536
    最大バッファサイズ 65536 を使用
    ピリオド数 = 4
    period_size = 16384 で設定
    buffer_size = 65536 で設定
     0 - Front Left
    ピリオド時間 = 0.358402
     0 - Front Left
    ピリオド時間 = 1.371160
     0 - Front Left
    ピリオド時間 = 1.360027
     0 - Front Left
    ^C
    c. 短いオーディオクリップを録音。
    $ arecord --format=S16_LE --duration=5 --rate=16000 --file-type=raw out.raw
    d. 再生して記録を確認。何も聞こえない場合は、で録音ボリュームを確認する。
    $ aplay --format=S16_LE --rate=16000 out.raw
    録音と再生が機能している場合、オーディオの設定は完了。そうでない場合は、マイクとスピーカーが正しく接続されていることを確認する。

Raspberry Pi での導入準備

仮想環境のコントロール

Assistant SDK (Python) インストール

認証情報の登録

Google Assistant のデモ機能実行

google-assistant-demo の実行

※ 2020/02/15 記

5. SDKとサンプルコードをインストールする

6. サンプルコードを実行する

冒頭に出る WARNING: については、ドキュメント「初回にデバイスインスタンスIDを見つける」の項目によれば

6-1. Google Assistant を日本語化する

スマートスピーカーのカスタマイズ

#ref(): File not found: "fig4-2.jpg" at page "画像一覧"

#ref(): File not found: "fig4-1.jpg" at page "画像一覧"

 ハードウェアボタン(タクトSW)とLEDを紐づけて、ボタンを押して「Push to Talk」を起動させるようにする。
LEDタクトSWの接続回路は右記のとおり。

7. Button To Talk プログラムの作成

7-1. 独自コマンド Traits 追加

WARNING:root:SoundDeviceStream write underflow について

7-1. 項の問題とは無関係と結論。--audio-block-size はデフォールトのままとする。

参考サイト:Python SoundDeviceStream write/read underflow/overflow errors