私的AI研究会? > VoiceKit on Pi4
Voice Kit V2 を Raspberry Pi4 で動かす
「Google Cloud」サイトの変更により、書籍「Raspberry Pi + AI 電子工作入門」やサイトの情報が交錯して正確な情報がつかみにくいので、「Google AIY Project」のサイトを検証してみる。
販売されている「Voice Kit V2」は Raspberry Pi Zero 他一式のセットだがこれを利用せず、サイトのソフトウェアを使用して Raspberry Pi4 上で動作させ 2020/03 現在の手順を確立する。
Raspberry Pi3 ではすでに各種事例がある。
#ref(): File not found: "20200121_115948_001s.jpg" at page "画像一覧"
#ref(): File not found: "20200111_163013_001s.jpg" at page "画像一覧"
#ref(): File not found: "daiso_spks.jpg" at page "画像一覧"
#ref(): File not found: "raspberry_pi4.jpg" at page "画像一覧"
#ref(): File not found: "voice_kit01m.jpg" at page "VoiceKit on Pi4"
#ref(): File not found: "voice_kit03m.jpg" at page "VoiceKit on Pi4"
● オフィシャルサイト
● GitHab ソフトウェアリリースページ
#ref(): File not found: "voice_kit02m.jpg" at page "VoiceKit on Pi4"
#ref(): File not found: "voice_kit04m.jpg" at page "VoiceKit on Pi4"
#ref(): File not found: "voice_kit05s.jpg" at page "VoiceKit on Pi4"
● GitHubのリリースページから最新のイメージファイルをダウンロード
● ダウンロードしたファイルを解凍し、Rufus(Windowsの場合)などのプログラムを使用して MicroSDカードにコピーする。
#ref(): File not found: "voice_kit06m.jpg" at page "VoiceKit on Pi4"
#ref(): File not found: "voice_kit07m.jpg" at page "VoiceKit on Pi4"
● Raspberry Pi4 にMicroSD カードをいれて、モニター、マウス、キーボードを接続する。
● 日本語のページをGoogle Chrome ブラウザで表示しながら手順を確認する。
● Raspberry を起動する。
#ref(): File not found: "20200312_171730_001s.jpg" at page "画像一覧"
#ref(): File not found: "20200312_172333_001s.jpg" at page "画像一覧"
● 初期設定ウイザードに従い設定を進める。
初期ユーザー(rootユーザー) としてあらかじめ「pi」が設定されている。初期設定でパスワードの入力は必要。
● 無線LANの設定をする。
● 最後のステップでソフトウェアのアップデートをする。(数分~数十分)
● 再起動して、AIYプロジェクトのロゴマークの入ったデスクトップが表示されれば最初のセットアップは完了。
$ sudo vi /boot/config.txt #dtparam=audio=on → dtparam=audio=on コメントをはずす $ sudo reboot 再起動
$ sudo raspi-config
$ sudo apt install tightvncserver パッケージリストを読み込んでいます... 完了 依存関係ツリーを作成しています 状態情報を読み取っています... 完了 以下の追加パッケージがインストールされます: xfonts-base xfonts-encodings xfonts-utils 提案パッケージ: tightvnc-java 以下のパッケージは「削除」されます: realvnc-vnc-server 以下のパッケージが新たにインストールされます: tightvncserver xfonts-base xfonts-encodings xfonts-utils アップグレード: 0 個、新規インストール: 4 個、削除: 1 個、保留: 220 個。 7,104 kB のアーカイブを取得する必要があります。 この操作後に 26.8 MB のディスク容量が解放されます。 続行しますか? [Y/n] y 取得:1 http://ftp.jaist.ac.jp/pub/Linux/raspbian-archive/raspbian buster/main armhf tightvncserver armhf 1:1.3.9-9+deb10u1 [551 kB] 取得:2 http://ftp.jaist.ac.jp/pub/Linux/raspbian-archive/raspbian buster/main armhf xfonts-encodings all 1:1.0.4-2 [574 kB] 取得:3 http://ftp.jaist.ac.jp/pub/Linux/raspbian-archive/raspbian buster/main armhf xfonts-utils armhf 1:7.7+6 [82.5 kB] 取得:4 http://ftp.jaist.ac.jp/pub/Linux/raspbian-archive/raspbian buster/main armhf xfonts-base all 1:1.0.5 [5,897 kB] 7,104 kB を 4秒 で取得しました (1,665 kB/s) (データベースを読み込んでいます ... 現在 145384 個のファイルとディレクトリがインストールされています。) realvnc-vnc-server (6.5.0.41824) を削除しています ... 以前に未選択のパッケージ tightvncserver を選択しています。 (データベースを読み込んでいます ... 現在 145305 個のファイルとディレクトリがインストールされています。) .../tightvncserver_1%3a1.3.9-9+deb10u1_armhf.deb を展開する準備をしています ... tightvncserver (1:1.3.9-9+deb10u1) を展開しています... 以前に未選択のパッケージ xfonts-encodings を選択しています。 .../xfonts-encodings_1%3a1.0.4-2_all.deb を展開する準備をしています ... xfonts-encodings (1:1.0.4-2) を展開しています... 以前に未選択のパッケージ xfonts-utils を選択しています。 .../xfonts-utils_1%3a7.7+6_armhf.deb を展開する準備をしています ... xfonts-utils (1:7.7+6) を展開しています... 以前に未選択のパッケージ xfonts-base を選択しています。 .../xfonts-base_1%3a1.0.5_all.deb を展開する準備をしています ... xfonts-base (1:1.0.5) を展開しています... tightvncserver (1:1.3.9-9+deb10u1) を設定しています ... update-alternatives: /usr/bin/vncserver (vncserver) を提供するために自動モードで /usr/bin/tightvncserver を使います update-alternatives: /usr/bin/Xvnc (Xvnc) を提供するために自動モードで /usr/bin/Xtightvnc を使います update-alternatives: /usr/bin/vncpasswd (vncpasswd) を提供するために自動モードで /usr/bin/tightvncpasswd を使います xfonts-encodings (1:1.0.4-2) を設定しています ... xfonts-utils (1:7.7+6) を設定しています ... xfonts-base (1:1.0.5) を設定しています ... fontconfig (2.13.1-2) のトリガを処理しています ... desktop-file-utils (0.23-4) のトリガを処理しています ... mime-support (3.62) のトリガを処理しています ... hicolor-icon-theme (0.17-2) のトリガを処理しています ... gnome-menus (3.31.4-3) のトリガを処理しています ... man-db (2.8.5-2) のトリガを処理しています ... shared-mime-info (1.10-1) のトリガを処理しています ...
$ tightvncserver You will require a password to access your desktops. Password: Verify: Would you like to enter a view-only password (y/n)? y Password: Verify: New 'X' desktop is raspberrypi-aiy:1 Creating default startup script /home/pi/.vnc/xstartup Starting applications specified in /home/pi/.vnc/xstartup Log file is /home/pi/.vnc/raspberrypi-aiy:1.log
#ref(): File not found: "voice_kit08m.jpg" at page "VoiceKit on Pi4"
● ホストコンピュータから、VNCクライアントで接続する。
接続先のipアドレス指定に必ずポート番号を付加すること (アドレス:5901)
● 詳しくは → VNC リモート接続?
pi@raspberrypi-aiy:~ $ aplay -l **** ハードウェアデバイス PLAYBACK のリスト **** カード 0: ALSA [bcm2835 ALSA], デバイス 0: bcm2835 ALSA [bcm2835 ALSA] サブデバイス: 7/7 サブデバイス #0: subdevice #0 サブデバイス #1: subdevice #1 サブデバイス #2: subdevice #2 サブデバイス #3: subdevice #3 サブデバイス #4: subdevice #4 サブデバイス #5: subdevice #5 サブデバイス #6: subdevice #6 カード 0: ALSA [bcm2835 ALSA], デバイス 1: bcm2835 IEC958/HDMI [bcm2835 IEC958/HDMI] サブデバイス: 1/1 サブデバイス #0: subdevice #0 カード 0: ALSA [bcm2835 ALSA], デバイス 2: bcm2835 IEC958/HDMI1 [bcm2835 IEC958/HDMI1] サブデバイス: 1/1 サブデバイス #0: subdevice #0
pi@raspberrypi-aiy:~ $ arecord -l **** ハードウェアデバイス CAPTURE のリスト **** カード 1: Device [USB PnP Sound Device], デバイス 0: USB Audio [USB Audio] サブデバイス: 1/1 サブデバイス #0: subdevice #0
$ speaker-test -c2 speaker-test 1.1.8 再生デバイス: default ストリームパラメータ: 48000Hz, S16_LE, 2 チャネル 16 オクターブのピンクノイズを使用 レート 48000Hz (要求値 48000Hz) バッファサイズ範囲 480 ? 32768 ピリオドサイズ範囲 480 ? 32768 最大バッファサイズ 32768 を使用 ピリオド数 = 4 period_size = 8192 で設定 buffer_size = 32768 で設定 0 - Front Left 1 - Front Right ピリオド時間 = 5.134241 0 - Front Left 1 - Front Right
#ref(): File not found: "voice_kit09m.jpg" at page "VoiceKit on Pi4"
#ref(): File not found: "voice_kit10m.jpg" at page "VoiceKit on Pi4"
● Google Platform をアクセスする。
もし、ログインしていなければログイン画面が表示されるのでGoogleアカウントでログインする。
#ref(): File not found: "voice_kit11m.jpg" at page "VoiceKit on Pi4"
● Google Console トップ画面(左)から「プロジェクトを選択」
#ref(): File not found: "voice_kit12m.jpg" at page "VoiceKit on Pi4"
#ref(): File not found: "voice_kit13m.jpg" at page "VoiceKit on Pi4"
● 「新しいプロジェクト」を選択。
● プロジェクト名(例:AIJproject)を入力。
● 「作成「」を押しプロジェクトを作成する。
#ref(): File not found: "voice_kit14m.jpg" at page "VoiceKit on Pi4"
● 左ナビゲーションの[ ホーム]リンクをクリックする。
● 画面上部の「プロジェクトの選択」をもう一度クリック、作成したプロジェクトを選択する。
#ref(): File not found: "voice_kit15m.jpg" at page "VoiceKit on Pi4"
● 左側のナビゲーションがまだ表示されていない場合は、ページの左上にある3行のメニューアイコンをクリックして開く。
● 「APIとサービス」の上にマウスを移動し、「ライブラリ」をクリックする。
#ref(): File not found: "voice_kit16m.jpg" at page "VoiceKit on Pi4"
#ref(): File not found: "voice_kit17m.jpg" at page "VoiceKit on Pi4"
● 検索ボックスに「google assistant」と入力
● Google Assistant APIというラベルの付いたカードをクリックする。
#ref(): File not found: "voice_kit18m.jpg" at page "VoiceKit on Pi4"
● Google Assistant APIを有効にする
#ref(): File not found: "voice_kit19m.jpg" at page "VoiceKit on Pi4"
● Google Assistant APIのダッシュボードページに移動する。
●「認証情報の作成」ボタンを押す。
#ref(): File not found: "voice_kit20m.jpg" at page "VoiceKit on Pi4"
●「どのAPIを使用していますか」で、「Google Assistant API」を選択。
●「どこからAPIを呼び出すのですか?」で、「その他のUI(Windows、CLIツールなど)」を選択。
●「どのデータにアクセスしますか?」で、「ユーザーデータ」を選択。
●「必要な認証情報」をクリックする。
#ref(): File not found: "voice_kit21m.jpg" at page "VoiceKit on Pi4"
●「同意画面の設定」を押す。
#ref(): File not found: "voice_kit22m.jpg" at page "VoiceKit on Pi4"
●「外部」を選ぶ。(外部しか選べない)
●「作成」を押す。
#ref(): File not found: "voice_kit23m.jpg" at page "VoiceKit on Pi4"
#ref(): File not found: "voice_kit24m.jpg" at page "VoiceKit on Pi4"
●「アプリケーション名」を入力する。(例:AIYapp)
● ページを下にスクロールし、「保存」ボタンを押す。
#ref(): File not found: "voice_kit25m.jpg" at page "VoiceKit on Pi4"
● 最初の「OAuth 同意画面の設定」ページに戻る。
● 自動的に次の画面になる。
#ref(): File not found: "voice_kit26m.jpg" at page "VoiceKit on Pi4"
#ref(): File not found: "voice_kit27m.jpg" at page "VoiceKit on Pi4"
● クライアントIDを入力します。以前に使用したものと同じプロジェクト名の使用を推奨。
●「更新」ボタンを押す。
●「OAuthクライアントIDの作成」ボタンを押す。
#ref(): File not found: "voice_kit28m.jpg" at page "VoiceKit on Pi4"
#ref(): File not found: "voice_kit29m.jpg" at page "VoiceKit on Pi4"
●「ダウンロード」ボタンを押す。
● ダウンロード開始ダイアログで「保存」ボタンを押しファイルをダウンロードする。
●「完了」ボタンを押す。
$ vi assistant.jsonで新規ファイルを作成し、クリップボードの内容をペーストする。
$ cat assistant.json {"installed":{"client_id":"1029345425416-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.apps.googleusercontent.com","project_id":"aijproject","auth_uri":"https://accounts.google.com/o/oauth2/auth","token_uri":"https://oauth2.googleapis.com/token","auth_provider_x509_cert_url":"https://www.googleapis.com/oauth2/v1/certs","client_secret":"Wsl-IjR_tO0t7UEFv-VHOTU2","redirect_uris":["urn:ietf:wg:oauth:2.0:oob","http://localhost"]}}
pi@raspberrypi-aiy:~ $ cd AIY-voice-kit-python pi@raspberrypi-aiy:~/AIY-voice-kit-python $ ls
pi@raspberrypi-aiy:~/AIY-voice-kit-python/src/examples $ ls button_led.py buzzer gpiozero leds_example.py vision voice pi@raspberrypi-aiy:~/AIY-voice-kit-python/src/examples $
pi@raspberrypi-aiy:~/AIY-voice-kit-python/src/examples $ voice/assistant_grpc_demo.py DEBUG:requests_oauthlib.oauth2_session:Generated new state XgTsap1N3etZNBuFXZoE6evP9CeJSL. Please visit this URL to authorize this application: https://accounts.google.com/o/oauth2/auth?response_type=code&client_id=1029345425416-ud313r0lt4ttrsu4ebmb00v20udao5m0.apps.googleusercontent.com&redirect_uri=urn%3Aietf%3Awg%3Aoauth%3A2.0%3Aoob&scope=https%3A%2F%2Fwww.googleapis.com%2Fauth%2Fassistant-sdk-prototype&state=XgTsap1N3etZNBuFXZoE6evP9CeJSL&prompt=consent&access_type=offline Enter the authorization code: ■
Enter the authorization code: 4/xgFTln6xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx DEBUG:requests_oauthlib.oauth2_session:Requesting url https://oauth2.googleapis.com/token using method POST. DEBUG:requests_oauthlib.oauth2_session:Supplying headers {'Accept': 'application/json', 'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8'} and data {'grant_type': 'authorization_code', 'code': '4/xgFTln6RpRfFYYjyX67NZXp6ExauaZEpjbMox5TSBDQhNz0cJFUXLFQ', 'client_id': '1029345425416-ud313r0lt4ttrsu4ebmb00v20udao5m0.apps.googleusercontent.com', 'redirect_uri': 'urn:ietf:wg:oauth:2.0:oob', 'client_secret': 'Wsl-IjR_tO0t7UEFv-VHOTU2'} DEBUG:requests_oauthlib.oauth2_session:Passing through key word arguments {'json': None, 'timeout': None, 'auth': None, 'verify': True, 'proxies': None}. DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): oauth2.googleapis.com:443 DEBUG:urllib3.connectionpool:https://oauth2.googleapis.com:443 "POST /token HTTP/1.1" 200 None DEBUG:requests_oauthlib.oauth2_session:Prepared fetch token request body grant_type=authorization_code&code=4%2FxgFTln6RpRfFYYjyX67NZXp6ExauaZEpjbMox5TSBDQhNz0cJFUXLFQ&client_id=1029345425416-ud313r0lt4ttrsu4ebmb00v20udao5m0.apps.googleusercontent.com&redirect_uri=urn%3Aietf%3Awg%3Aoauth%3A2.0%3Aoob&client_secret=Wsl-IjR_tO0t7UEFv-VHOTU2 DEBUG:requests_oauthlib.oauth2_session:Request to fetch token completed with status 200. DEBUG:requests_oauthlib.oauth2_session:Request headers were {'User-Agent': 'python-requests/2.21.0', 'Accept-Encoding': 'gzip, deflate', 'Accept': 'application/json', 'Connection': 'keep-alive', 'Content-Type': 'application/x-www-form-urlencoded;charset=UTF-8', 'Content-Length': '266'} DEBUG:requests_oauthlib.oauth2_session:Request body was grant_type=authorization_code&code=4%2FxgFTln6RpRfFYYjyX67NZXp6ExauaZEpjbMox5TSBDQhNz0cJFUXLFQ&client_id=1029345425416-ud313r0lt4ttrsu4ebmb00v20udao5m0.apps.googleusercontent.com&redirect_uri=urn%3Aietf%3Awg%3Aoauth%3A2.0%3Aoob&client_secret=Wsl-IjR_tO0t7UEFv-VHOTU2 DEBUG:requests_oauthlib.oauth2_session:Response headers were {'Content-Type': 'application/json; charset=utf-8', 'Vary': 'Origin, X-Origin, Referer', 'Content-Encoding': 'gzip', 'Date': 'Fri, 13 Mar 2020 04:04:58 GMT', 'Server': 'scaffolding on HTTPServer2', 'Cache-Control': 'private', 'X-XSS-Protection': '0', 'X-Frame-Options': 'SAMEORIGIN', 'X-Content-Type-Options': 'nosniff', 'Alt-Svc': 'quic=":443"; ma=2592000; v="46,43",h3-Q050=":443"; ma=2592000,h3-Q049=":443"; ma=2592000,h3-Q048=":443"; ma=2592000,h3-Q046=":443"; ma=2592000,h3-Q043=":443"; ma=2592000', 'Transfer-Encoding': 'chunked'} and content { "access_token": "ya29.a0Adw1xeV-Hs3pmXqRWGEL-9cL34qlnLt2s1E9ON47-exrOxeHAw2nm0rcB2-mIKaicy-mAZty_AYbNDNDW80W1hiSort9XeabBypY508cde6tZJcZIrbXTv_7ULvQ7gOvR2zHYyBRsH30LtexYHwiEMD5ZRPLuBoGH2o", "expires_in": 3599, "refresh_token": "1//0eae-GiYSU1CBCgYIARAAGA4SNwF-L9IrfI8KVWYSnx-YEfVFhrfcN5METqR2rrlJfZeBkq5RwTv93FJPU-mURdiO2sA59MAHUdI", "scope": "https://www.googleapis.com/auth/assistant-sdk-prototype", "token_type": "Bearer" }. DEBUG:requests_oauthlib.oauth2_session:Invoking 0 token response hooks. DEBUG:requests_oauthlib.oauth2_session:Obtained token {'access_token': 'ya29.a0Adw1xeV-Hs3pmXqRWGEL-9cL34qlnLt2s1E9ON47-exrOxeHAw2nm0rcB2-mIKaicy-mAZty_AYbNDNDW80W1hiSort9XeabBypY508cde6tZJcZIrbXTv_7ULvQ7gOvR2zHYyBRsH30LtexYHwiEMD5ZRPLuBoGH2o', 'expires_in': 3599, 'refresh_token': '1//0eae-GiYSU1CBCgYIARAAGA4SNwF-L9IrfI8KVWYSnx-YEfVFhrfcN5METqR2rrlJfZeBkq5RwTv93FJPU-mURdiO2sA59MAHUdI', 'scope': ['https://www.googleapis.com/auth/assistant-sdk-prototype'], 'token_type': 'Bearer', 'expires_at': 1584075897.5179968}. INFO:root:OAuth credentials initialized: /home/pi/.cache/voice-recognizer/assistant_credentials.json DEBUG:urllib3.util.retry:Converted retries value: 3 -> Retry(total=3, connect=None, read=None, redirect=None, status=None) DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): embeddedassistant.googleapis.com:443 DEBUG:urllib3.connectionpool:https://embeddedassistant.googleapis.com:443 "GET /v1alpha2/projects/aijproject/deviceModels/aijproject-voice-kit HTTP/1.1" 404 None DEBUG:urllib3.connectionpool:https://embeddedassistant.googleapis.com:443 "POST /v1alpha2/projects/aijproject/deviceModels HTTP/1.1" 200 None DEBUG:urllib3.util.retry:Converted retries value: 3 -> Retry(total=3, connect=None, read=None, redirect=None, status=None) DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): embeddedassistant.googleapis.com:443 DEBUG:urllib3.connectionpool:https://embeddedassistant.googleapis.com:443 "GET /v1alpha2/projects/aijproject/devices/aijproject-voice-kit-dfab0b2a-9abc-4b3c-be51-e9cd1e423f48 HTTP/1.1" 404 None DEBUG:urllib3.connectionpool:https://embeddedassistant.googleapis.com:443 "POST /v1alpha2/projects/aijproject/devices HTTP/1.1" 200 None INFO:aiy.assistant.grpc:device_model_id: aijproject-voice-kit INFO:aiy.assistant.grpc:device_id: aijproject-voice-kit-dfab0b2a-9abc-4b3c-be51-e9cd1e423f48 DEBUG:google.auth.transport.requests:Making request: POST https://oauth2.googleapis.com/token DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): oauth2.googleapis.com:443 DEBUG:urllib3.connectionpool:https://oauth2.googleapis.com:443 "POST /token HTTP/1.1" 200 None INFO:aiy.assistant.grpc:Connecting to embeddedassistant.googleapis.com INFO:root:Press button to start conversation... ^CTraceback (most recent call last): File "voice/assistant_grpc_demo.py", line 57, in <module> main() File "voice/assistant_grpc_demo.py", line 52, in main board.button.wait_for_press() File "/home/pi/AIY-projects-python/src/aiy/board.py", line 164, in wait_for_press return event.wait(timeout) File "/usr/lib/python3.7/threading.py", line 552, in wait signaled = self._cond.wait(timeout) File "/usr/lib/python3.7/threading.py", line 296, in wait waiter.acquire() KeyboardInterrupt pi@raspberrypi-aiy:~/AIY-voice-kit-python/src/examples $
Google Actionページ にアクセスし、デバイスを登録する。
#ref(): File not found: "voice_kit30m.jpg" at page "VoiceKit on Pi4"
●「New Project」を押し登録してあるプロジェクト名を入れる。
#ref(): File not found: "voice_kit31m.jpg" at page "VoiceKit on Pi4"
●「Language」→ Japanese 「Country」→ Japan を選択して「inprt project」を押す。
#ref(): File not found: "voice_kit32m.jpg" at page "VoiceKit on Pi4"
●「Device registration」を選択する。
#ref(): File not found: "voice_kit33m.jpg" at page "VoiceKit on Pi4"
● デモソフトの実行ですでにモデルが登録されている。
● 登録されている名前を選択する。
#ref(): File not found: "voice_kit34m.jpg" at page "VoiceKit on Pi4"
● Product name:Voice Kit
● Model Id :aijproject-voice-kit
● Manufacturer name :AIY Projects
● Device type :Speaker
● 右端のペンマークを押して「traits」の設定をする。
#ref(): File not found: "voice_kit35m.jpg" at page "VoiceKit on Pi4"
● On/Off と Start/Stop にチェックを入れる。
●「Save」を押す。
#ref(): File not found: "voice_kit36m.jpg" at page "VoiceKit on Pi4"
●「traits」の項目が追加される。
#ref(): File not found: "20200314_173510_001s.jpg" at page "画像一覧"
#ref(): File not found: "fig7.jpg" at page "画像一覧"
・基本的に push_talk プログラムで、スイッチを押してから話しかける。
・hot-word のデモソフトではない。
・サイトには「次のステップ」の項目があるので、こちらの方を進めていく方が期待できる。
pi@raspberrypi-aiy:~ $ cd AIY-projects-python pi@raspberrypi-aiy:~/AIY-projects-python $ ls CHANGES.md CONTRIBUTING.md HACKING.md LICENSE MANIFEST.in Makefile README.md checkpoints docs schematics scripts setup.py src stdeb.cfg pi@raspberrypi-aiy:~/AIY-projects-python $ src/examples/voice/assistant_grpc_demo.py DEBUG:google.auth.transport.requests:Making request: POST https://oauth2.googleapis.com/token DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): oauth2.googleapis.com:443 DEBUG:urllib3.connectionpool:https://oauth2.googleapis.com:443 "POST /token HTTP/1.1" 200 None INFO:aiy.assistant.grpc:device_model_id: aijproject-voice-kit INFO:aiy.assistant.grpc:device_id: aijproject-voice-kit-dfab0b2a-9abc-4b3c-be51-e9cd1e423f48 DEBUG:google.auth.transport.requests:Making request: POST https://oauth2.googleapis.com/token DEBUG:urllib3.connectionpool:Starting new HTTPS connection (1): oauth2.googleapis.com:443 DEBUG:urllib3.connectionpool:https://oauth2.googleapis.com:443 "POST /token HTTP/1.1" 200 None INFO:aiy.assistant.grpc:Connecting to embeddedassistant.googleapis.com INFO:root:Press button to start conversation... INFO:root:Conversation started! INFO:aiy.assistant.grpc:Recording started. INFO:aiy.assistant.grpc:You said: "今日". INFO:aiy.assistant.grpc:You said: "今日の". INFO:aiy.assistant.grpc:You said: "今日のて". INFO:aiy.assistant.grpc:You said: "今日の天". INFO:aiy.assistant.grpc:You said: "今日の天気". INFO:aiy.assistant.grpc:You said: "今日の天気は". INFO:aiy.assistant.grpc:You said: "今日の天気は". INFO:aiy.assistant.grpc:You said: "今日の天気は". INFO:aiy.assistant.grpc:End of audio request detected. INFO:aiy.assistant.grpc:You said: "今日の天気は". INFO:aiy.assistant.grpc:Assistant said: "足元に注意してお出かけください 今日の八尾は、予想最高気温12度、最低気温7度で、断続的に雨が降るでしょう。 現在気温8度、雨です。 --- (weather.com でもっと見る)" INFO:aiy.assistant.grpc:Not expecting follow-on query from user. INFO:aiy.assistant.grpc:Recording stopped. INFO:aiy.assistant.grpc:Playing started. INFO:aiy.assistant.grpc:Playing stopped. INFO:root:Press button to start conversation... INFO:root:Conversation started! INFO:aiy.assistant.grpc:Recording started. INFO:aiy.assistant.grpc:You said: "今". INFO:aiy.assistant.grpc:You said: "今の". INFO:aiy.assistant.grpc:You said: "今何". INFO:aiy.assistant.grpc:You said: "今何時". INFO:aiy.assistant.grpc:End of audio request detected. INFO:aiy.assistant.grpc:You said: "今何時". INFO:aiy.assistant.grpc:You said: "今何時". INFO:aiy.assistant.grpc:Assistant said: "時刻は、9:23です。" INFO:aiy.assistant.grpc:Not expecting follow-on query from user. INFO:aiy.assistant.grpc:Playing started. INFO:aiy.assistant.grpc:Recording stopped. INFO:aiy.assistant.grpc:Playing stopped. INFO:root:Press button to start conversation... INFO:root:Conversation started! INFO:aiy.assistant.grpc:Recording started. INFO:aiy.assistant.grpc:You said: "さや". INFO:aiy.assistant.grpc:You said: "佐用". INFO:aiy.assistant.grpc:You said: "さような". INFO:aiy.assistant.grpc:You said: "さようなら". INFO:aiy.assistant.grpc:End of audio request detected. INFO:aiy.assistant.grpc:You said: "さようなら". INFO:aiy.assistant.grpc:Recording stopped. INFO:aiy.assistant.grpc:Assistant said: "はい、ありがとうございました??" INFO:aiy.assistant.grpc:Not expecting follow-on query from user. INFO:aiy.assistant.grpc:Playing started. INFO:aiy.assistant.grpc:Playing stopped. INFO:root:Press button to start conversation... ^CTraceback (most recent call last): File "src/examples/voice/assistant_grpc_demo.py", line 57, in <module> main() File "src/examples/voice/assistant_grpc_demo.py", line 52, in main board.button.wait_for_press() File "/home/pi/AIY-projects-python/src/aiy/board.py", line 164, in wait_for_press return event.wait(timeout) File "/usr/lib/python3.7/threading.py", line 552, in wait signaled = self._cond.wait(timeout) File "/usr/lib/python3.7/threading.py", line 296, in wait waiter.acquire() KeyboardInterrupt pi@raspberrypi-aiy:~/AIY-projects-python $