このページでは、API を使用して音声入力をインテント検出リクエストにストリーミングする方法について説明します。Dialogflow は音声を処理し、テキストに変換してからインテント マッチングを実行します。このプロセスは音声入力、音声認識、音声文字変換、または STT と呼ばれています。
始める前に
この機能は API をエンドユーザー インタラクションに使用する場合にのみ利用できます。統合を使用している場合は、このガイドをスキップできます。
このガイドを読む前に、次のタスクを完了してください。
- Dialogflow の基本をご覧ください。
- 手順に沿って設定してください。
エージェントを作成する
- Dialogflow ES コンソールに移動します。
- プロンプトが表示されたら、コンソールにログインします。詳細については、Dialogflow コンソールの概要をご覧ください。
- サイドバー メニューで [エージェントを読み込み中] を開きます。
- [CREATE AGENT] をクリックします。
- エージェント名、デフォルトの言語、デフォルトのタイムゾーンを入力します。
- 既存のプロジェクトを入力します。Dialogflow コンソールでプロジェクトを作成するには、[Create a new Google project] を選択します。
- [作成] をクリックします。
ストリーミングの基本
Session 型の streamingDetectIntent メソッドは、双方向 gRPC ストリーミング オブジェクトを返します。このオブジェクトで使用できるメソッドは言語によって異なるため、詳細については、クライアント ライブラリのリファレンス ドキュメントをご覧ください。
ストリーミング オブジェクトは、データの送受信を同時に行うために使用されます。このオブジェクトを使用して、クライアントは音声コンテンツを Dialogflow にストリーミングしながら、同時に StreamingDetectIntentResponse をリッスンします。
streamingDetectIntent メソッドには、音声認識に影響する query_input.audio_config.single_utterance パラメータがあります。
false(デフォルト)の場合、クライアントがストリームを閉じるまで音声認識は停止しません。trueの場合、Dialogflow は入力音声で 1 つの音声発話を検出します。Dialogflow は、音声が停止または一時停止したことを検出すると、音声認識を停止し、END_OF_SINGLE_UTTERANCEの認識結果を含むStreamingDetectIntentResponseをクライアントに送信します。END_OF_SINGLE_UTTERANCEの受信後にストリームで Dialogflow に送信された音声は、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 へのストリーミングに関するベスト プラクティスの詳細については、サンプルページをご覧ください。