このページでは、API を使用して音声インテントを検出インテント リクエストにストリーミングする方法を示します。Dialogflow は音声を処理し、テキストに変換してからインテント マッチングを実行します。このコンバージョンは音声入力、音声認識、音声文字変換、または STT と呼ばれています。
始める前に
この機能は API をエンドユーザー インタラクションに使用する場合にのみ利用できます。統合を使用している場合は、このガイドをスキップできます。
このガイドを読む前に、次の手順を行ってください。
- Dialogflow の基本をご覧ください。
- 手順に沿って設定してください。
エージェントを作成する
エージェントをまだ作成していない場合は、ここで作成します。
- Dialogflow ES コンソールに移動します。
- Dialogflow コンソールにログインするよう求められたら、ログインします。 詳細については、Dialogflow コンソールの概要をご覧ください。
- 左側のサイドバー メニューで [Create Agent] をクリックします。(すでに他のエージェントをお持ちの場合は、エージェント名をクリックし、一番下までスクロールして [Create new agent] をクリックします)。
- エージェント名、デフォルトの言語、デフォルトのタイムゾーンを入力します。
- すでにプロジェクトを作成している場合は、そのプロジェクトを入力します。Dialogflow コンソールでプロジェクトを作成できるようにする場合は、[Create a new Google project] を選択します。
- [Create] ボタンをクリックします。
エージェントにサンプル ファイルをインポートする
このガイドの手順でエージェントの前提条件を設定するため、このガイド用に準備されたエージェントをインポートする必要があります。インポート時に、この手順では restore オプションが使用されます。これにより、すべてのエージェント設定、インテント、エンティティが上書きされます。
ファイルをインポートする手順は次のとおりです。
-
room-booking-agent.zipファイルをダウンロードします。 - Dialogflow ES コンソールに移動します。
- エージェントを選択します。
- エージェント名の横にある設定 settings ボタンをクリックします。
- [Export and Import] タブを選択します。
- [Restore from Zip] を選択し、手順に従ってダウンロードした zip ファイルを復元します。
ストリーミングの基本
Session タイプの streamingDetectIntent メソッドから双方向の gRPC ストリーミング オブジェクトが返されます。このオブジェクトで使用できるメソッドは言語によって異なるため、詳細についてはクライアント ライブラリのリファレンス ドキュメントをご覧ください。
ストリーミング オブジェクトは、データの同時送受信に使用されます。このオブジェクトを使用すると、StreamingDetectIntentResponse の同時実行リスニングの間、クライアントから音声コンテンツが Dialogflow にストリーミングされます。
streamingDetectIntent メソッドには、音声認識に影響する query_input.audio_config.single_utterance パラメータが含まれています。
false(デフォルト)の場合、クライアントがストリームを閉じるまで音声認識は停止しません。trueの場合、Dialogflow では入力音声の 1 つの読み上げ音声が検出されます。Dialogflow で音声の停止や一時停止が検出されると、音声認識が停止し、StreamingDetectIntentResponseと認識結果END_OF_SINGLE_UTTERANCEがクライアントに送信されます。END_OF_SINGLE_UTTERANCEの受信後にストリームの Dialogflow に送信された音声は、無視されます。
双方向ストリーミングでは、クライアントがストリーミング オブジェクトを半クローズできます。これにより、それ以上のデータを送らないことをサーバーに通知します。たとえば、Java や Go では、このメソッドは closeSend と呼ばれます。次のような場合は半クローズでストリームすることが重要です。
- クライアントからのデータの送信が完了した。
- クライアントで
single_utteranceが true に設定され、認識結果END_OF_SINGLE_UTTERANCEとともにStreamingDetectIntentResponseが受信された。
ストリームをクローズした後、クライアントは必要に応じて新しいストリームで新しいリクエストを開始します。
Streaming detect intent
次のサンプルでは、
Session
タイプの streamingDetectIntent メソッドを使用して音声をストリーミングします。
Go
Dialogflow CX への認証を行うには、アプリケーションのデフォルト認証情報を設定します。 詳細については、 ローカル開発環境の認証の設定をご覧ください。
Java
Dialogflow CX への認証を行うには、アプリケーションのデフォルト認証情報を設定します。 詳細については、 ローカル開発環境の認証の設定をご覧ください。
Node.js
Dialogflow CX への認証を行うには、アプリケーションのデフォルト認証情報を設定します。 詳細については、 ローカル開発環境の認証の設定をご覧ください。
Python
Dialogflow CX への認証を行うには、アプリケーションのデフォルト認証情報を設定します。 詳細については、 ローカル開発環境の認証の設定をご覧ください。
その他の言語
C#: クライアント ライブラリ ページの C# の設定手順 を行ってから、 .NET 用の Dialogflow CX リファレンス ドキュメント をご覧ください。
PHP: クライアント ライブラリ ページの PHP の設定手順 を行ってから、 PHP 用の Dialogflow CX リファレンス ドキュメント をご覧ください。
Ruby: クライアント ライブラリ ページの Ruby の設定手順 を行ってから、 Ruby 用の Dialogflow CX リファレンス ドキュメント をご覧ください。
サンプル
ブラウザのマイクから Dialogflow にストリーミングするおすすめの方法については、サンプルページをご覧ください。