ラズパイでGoogle アシスタントの応答をテキストに変換してみる


Google Assistant SDKのサンプルの中のpushtotalk.pyを使ってやってみます。

 

こんな感じ

やってみました…..の図

SDKのインストールとかはここを参照

Google Assistantのpushtotalk.pyとtextinput.pyは1つのものと書いてましたが、この2つを使えば、Google Assistantの音声認識の結果を、テキストでも取得できます。

 

 


目次

メインPythonコード

コントロール用GUI・Pythonコード

Assistantのコンソール表示用シェルコード

Assistant起動用Pythonコード

ファイル配置

実行

 


主に使用するコードはサンプルのpushtotalk.pyですが、これを以下のようにカスタマイズします。

(行番号は下のフルコードを参照してください)

① 210 – 211行

リクエストの発声の音声認識をtextで返してくれるところにコードを追加
if resp.speech_results:
txt_request = ‘ ‘.join(r.transcript for r in resp.speech_results)

②  201 – 207行

リクエストのtext化の最終処理はここでとっています
if resp.event_type == END_OF_UTTERANCE:
logging.info(‘End of audio request detected.’)
logging.info(‘Stopping recording.’)
self.conversation_stream.stop_recording()
print(txt_request)

③  218 – 229行

リクエストに対するAssistantの応答をtextで返してもらうところではtextinput.pyからコードを拝借しています
ここで結果をGUIに送ります。

text_response = None
if resp.dialog_state_out.supplemental_display_text:
text_response = resp.dialog_state_out.supplemental_display_text

④  232 – 242行

Googleからの応答の最終処理はここでとっています
if resp.dialog_state_out.conversation_state:
ここでtext_responseがNoneのままなら、Googleからの応答がなかったということになります

⑤  245 – 274行

Assistantの音声応答部分、フラグで応答を流すか止めるかしています
if(speak_flag == True):
if len(resp.audio_out.audio_data) > 0:


⑥  560 – 565行

ボタンのプッシュを待ち受けているところを変更します、ここで条件を与えればGoogleにリクエストを送るかどうか決められます
while True:
if(hotword_flag == True):
continue_conversation = assistant.assist()
wait_for_user_trigger = not continue_conversation
if once and (not continue_conversation):
break

⑥ 61 – 74行

通信用関数の送信部

⑦ 77 – 106行

通信用関数の受信部

⑧ 109 – 112行

GUIからの通信待ち受け開始


フルコードです。

TOP

 


音声入力ボタンなどを配置したGUI

Assistantの応答が表示されます

【Gui.py】

 

 

TOP

 


Assistantのコンソール表示用シェル

【grpc_assistant.sh】

XXXXXXXX、YYYYYYYYYY はAssistant SDKをインストールした際に取得したプロジェクトIDとデバイスモデルIDです、ご自分ので置き換えてください。

#!/bin/bash

source /home/pi/env/bin/activate
lxterminal -e googlesamples-assistant-talk2text –project-id XXXXXXXX –device-model-id YYYYYYYYYY

 

TOP

 


Assistant起動コード

【googlesamples-assistant-talk2text】

TOP

 


ファイルの配置

アーカイブ

Assistantの環境をSDKで作った場合、ラズパイのホームに仮想環境(env)が作成されています。

そこに配置します。

 

/home/pi/env/bin/googlesamples-assistant-talk2text

/home/pi/env/lib/python3.5/site-packages/googlesamples/assistant/grpc/talk2text.py

以下の2つのファイルはどこに置いてもいいです。talk2textというフォルダーを作ってまとめて配置しときましょう。

grpc_assistant.shは上記に従ってIDを書き換えてください。

/home/pi/talk2text/grpc_assistant.sh

/home/pi/talk2text/Gui.py

 

TOP

 


実行

左がGui.pyの起動画面、先に起動しておきます。右がgrpc_assistant.shの起動画面。

初期画面

音声入力ボタンをクリックしてから話しかけてください

(Googleの音声出力も再生する場合はチェックを入れてからクリック)

 

TOP


ボタンをクリックしてフラッグを送信している部分をJuliusの音声認識にすれば、ホットワードをご自分のものに置き換えられます。ここ参照


 

ラズパイでGoogle Assistantへのリクエストをテキストでやってみる

 


 

Be the first to comment

Leave a Reply

Your email address will not be published.


*