gRPC (gRPC Remote Procedure Calls)については、以下の参考文献を参照
http://charleysdiary.hatenablog.com/entry/2016/09/08/163909
http://charleysdiary.hatenablog.com/entry/2016/09/08/163909
■ ハードウェア要件
[1] Raspberry PIのようなインターネットに繋がるデバイス [2] マイク [3] スピーカーhttps://developers.google.com/assistant/sdk/develop/grpc/
■ 手順
* 今回は、Pythonを選択
[1] ハードウェアとネット接続の設定
https://developers.google.com/assistant/sdk/develop/python/hardware/setup以下の関連記事を参照
https://blogs.yahoo.co.jp/dk521123/37155840.html
https://blogs.yahoo.co.jp/dk521123/37157434.html
https://blogs.yahoo.co.jp/dk521123/37171100.html
[2] オーディオ(スピーカー / マイク)の設定とテスト
https://developers.google.com/assistant/sdk/develop/python/hardware/audio[2-1-a] スピーカーをラズパイに接続し、以下のコマンドを実行し、スピーカーの接続テストをする
speaker-test -t wav => 何かしら聞こえたら、OK => 終了する場合は、「Ctrl+C」[2-1-b] 以下のコマンドを実行する
record --format=S16_LE --duration=5 --rate=16000 --file-type=raw out.raw => エラーが発生した場合は、[2-2-a] 以降を行う[2-1-c] 以下のコマンドを実行する
aplay --format=S16_LE --rate=16000 out.raw[2-1-d] 以下のコマンドを実行し、ボリュームを調整する
alsamixer => エラーがなくここまで進めれば、[2-2-a] 録音に使えるデバイス(マイク)の一覧を、以下のコマンドで取得する
arecord -l **** ハードウェアデバイス CAPTURE のリスト **** カード 1: Device [USB PnP Sound Device], デバイス 0: USB Audio [USB Audio] << ★a サブデバイス: 1/1 サブデバイス #0: subdevice #0 => マイクは、★aより、デバイス番号:0、カード番号:1[2-2-b] オーディオ・デバイスの一覧を、以下のコマンドで取得する
aplay -l **** ハードウェアデバイス PLAYBACK のリスト **** カード 0: ALSA [bcm2835 ALSA], デバイス 0: bcm2835 ALSA [bcm2835 ALSA] << ★b サブデバイス: 8/8 サブデバイス #0: subdevice #0 ... 略 ... カード 0: ALSA [bcm2835 ALSA], デバイス 1: bcm2835 ALSA [bcm2835 IEC958/HDMI] サブデバイス: 1/1 サブデバイス #0: subdevice #0 => スピーカーは、★bより、デバイス番号:0、カード番号:0[2-2-c] [2-2-a]、[2-2-b]で調べた「デバイス番号」および「カード番号」を .asoundrc ファイルに反映させる
vi ~/.asoundrc -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= pcm.!default { type asym capture.pcm "mic" playback.pcm "speaker" } pcm.mic { type plug slave { pcm "hw:1,0" << 「pcm "hw:<マイクのカード番号>,<マイクのデバイス番号>"」 } } pcm.speaker { type plug slave { pcm "hw:0,0" << 「pcm "hw:<スピーカーのカード番号>,<スピーカーのデバイス番号>"」 } } -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=[2-2-d] もし、 HDMI モニターと3.5mmジャックスピーカーが繋がっていたら、以下を行う
sudo raspi-config => 実行したら、[Advanced options]-[Audio]を、お好きな方を選ぶ (今回は「Force 3.5mm('headphone') jack」を選択)[2-2-e] [2-1-a]を繰り返す
[3] Google Developerプロジェクトとアカウントを設定
https://developers.google.com/assistant/sdk/develop/python/config-dev-project-and-account[3-1] プロジェクトを作成 [3-2] 作成したプロジェクトに対して、Google Assistant APIを有効にする [3-3] OAuth クライアント ID を作成する [3-4] シークレットjsonファイル「client_secret_【client-id】.json」をダウンロードする
[4] ライブラリのダウンロードとサンプルの実行
https://developers.google.com/assistant/sdk/develop/python/run-sample[4-1] Python3 を設定するために、以下のコマンドを実行
sudo apt-get update sudo apt-get install python3-dev python3-venv python3 -m venv env env/bin/python -m pip install --upgrade pip setuptools source env/bin/activate => 「source env/bin/activate」を実行すると、画面表示が「(env)$ ...」と変化する※ エラーが出た場合...
赤字で『TypeError: unsupported operand type(s) for -=: 'Retry' and 'int'』等の エラーが表示された場合、以下のコマンドを実行して再度、コマンドを実行する ~~~~~ apt-get remove python-pip python3-pip wget https://bootstrap.pypa.io/get-pip.py python get-pip.py python3 get-pip.py ~~~~~https://stackoverflow.com/questions/37495375/python-pip-install-throws-typeerror-unsupported-operand-types-for-retry
[4-2] サンプルコード及びGoogle Assistantライブラリをインストールするために、以下のコマンドを実行
(env)$ python -m pip install --upgrade google-assistant-library[4-3] サンプルの実行
* 以降、サンプルを実行するための手順。[4-3-1] authorizationツールをインストールするために、以下のコマンドを実行
(env)$ python -m pip install --upgrade google-auth-oauthlib[tool] => 『...[tool]』はまとめて実行する[4-3-2] Google Assistant SDKのサンプルに権限を与えるために以下のコマンドを実行
(env)$ google-oauthlib-tool --client-secrets ~/client_secret_【client-id】.json --scope https://www.googleapis.com/auth/assistant-sdk-prototype --save => 『client_secret_【client-id】.json』は、[3-4]でダウンロードしたjsonファイル。 ssh接続の場合は以下。 (env)$ google-oauthlib-tool --client-secrets ~/client_secret_【client-id】.json --scope https://www.googleapis.com/auth/assistant-sdk-prototype --save => ブラウザが立ち上がり、googleアカウントでログインし、自分のアカウントをクリック。 そして、選択したアカウントへ許可のリクエストが送られるので「許可」ボタン押下[4-3-3] 以下を実行しサンプルを起動する
(env)$ google-assistant-demo ON_MUTED_CHANGED: {'is_muted': False} ON_START_FINISHED[4-3-4] 「Ok Google」又は「Hey Google」とアメリカ英語の発音(!?)でいった後で、何か英語でいう(例「How are you?」)
ON_CONVERSATION_TURN_STARTED ON_END_OF_UTTERANCE ON_RECOGNIZING_SPEECH_FINISHED: {'text': 'how are you'} << 「How are you?」って言ってみた ON_RESPONDING_STARTED: {'is_error_response': False} ON_RESPONDING_FINISHED ON_CONVERSATION_TURN_FINISHED: {'with_follow_on_turn': True} ON_CONVERSATION_TURN_STARTED ON_END_OF_UTTERANCE ON_RECOGNIZING_SPEECH_FINISHED: {'text': 'thank you'} << 「Thank you」って言ってみた ON_RESPONDING_STARTED: {'is_error_response': False} ON_RESPONDING_FINISHED ON_CONVERSATION_TURN_FINISHED: {'with_follow_on_turn': False}
参考文献
https://qiita.com/szk3/items/2785badd49fd7abbd8d3https://qiita.com/PonDad/items/52eaa93338496b06cb1a
https://robotstart.info/2017/05/17/google_assistant_sdk.html
https://ficus.myvnc.com/ja/blog/Google%20Assistant%E3%81%AB%E3%82%88%E3%82%8B%E9%9F%B3%E5%A3%B0%E3%82%B3%E3%83%B3%E3%83%88%E3%83%AD%E3%83%BC%E3%83%AB_b67
arecord(録音)とaplay(再生)
http://suen-study.blogspot.jp/2014/02/usbusbarecordaplay.html
http://raspi.ryo.sc/raspi_play_sound/