このガイドでは、音声入力を API を使用してインテント検出リクエストに送信する方法を説明します。Dialogflow は音声を処理し、テキストに変換してからインテント マッチングを実行します。このコンバージョンは音声入力、音声認識、音声文字変換、または STT と呼ばれています。
始める前に
この機能は API をエンドユーザー インタラクションに使用する場合にのみ利用できます。統合を使用している場合は、このガイドをスキップできます。
このガイドを読む前に、次の手順を行ってください。
- Dialogflow の基本をご覧ください。
- 手順に沿って設定してください。
エージェントを作成する
エージェントをまだ作成していない場合は、ここで作成します。
- Dialogflow ES コンソールに移動します。
- Dialogflow コンソールにログインするよう求められたら、ログインします。詳細については、Dialogflow コンソールの概要をご覧ください。
- 左側のサイドバー メニューで [Create Agent] をクリックします。(すでに他のエージェントをお持ちの場合は、エージェント名をクリックし、一番下までスクロールして [Create new agent] をクリックします)。
- エージェント名、デフォルトの言語、デフォルトのタイムゾーンを入力します。
- すでにプロジェクトを作成している場合は、そのプロジェクトを入力します。Dialogflow コンソールでプロジェクトを作成できるようにする場合は、[Create a new Google project] を選択します。
- [Create] ボタンをクリックします。
エージェントにサンプル ファイルをインポートする
このガイドの手順でエージェントの前提条件を設定するため、このガイド用に準備されたエージェントをimportする必要があります。インポート時に、この手順では restorerestore オプションが使用されます。これにより、すべてのエージェント設定、インテント、エンティティが上書きされます。
ファイルをインポートする手順は次のとおりです。
-
room-booking-agent.zip
ファイルをダウンロードします。 - Dialogflow ES コンソールに移動します。
- エージェントを選択します。
- エージェント名の横にある設定 settings ボタンをクリックします。
- [Export and Import] タブを選択します。
- [Restore from Zip] を選択し、手順に従ってダウンロードした zip ファイルを復元します。
インテントの検出
インテントを検出するには、Sessions
タイプの detectIntent
メソッドを呼び出します。
REST
サンプルの入力音声ファイルbook-a-room.wav
をダウンロードします。このファイルには「book a room」という音声が収録されています。この例では、音声ファイルが base64 でエンコードされている必要があります。これにより、下記の JSON リクエストでの指定が可能になります。Linux の例を次に示します。
wget https://cloud.google.com/dialogflow/es/docs/data/book-a-room.wav base64 -w 0 book-a-room.wav > book-a-room.b64
他のプラットフォームの例については、Cloud Speech-to-Text API ドキュメントの Base64 エンコード音声コンテンツをご覧ください。
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_ID: 実際の Google Cloud プロジェクト ID
- AUDIO: base64 でエンコードされた音声コンテンツ
HTTP メソッドと URL:
POST https://dialogflow.googleapis.com/v2/projects/PROJECT_ID/agent/sessions/123456789:detectIntent
リクエストの本文(JSON):
{ "queryInput": { "audioConfig": { "languageCode": "en-US" } }, "inputAudio": "AUDIO" }
リクエストを送信するには、次のいずれかのオプションを展開します。
次のような JSON レスポンスが返されます。
{ "responseId": "3c1e5a89-75b9-4c3f-b63d-4b1351dd5e32", "queryResult": { "queryText": "book a room", "action": "room.reservation", "parameters": { "time": "", "date": "", "guests": "", "duration": "", "location": "" }, "fulfillmentText": "I can help with that. Where would you like to reserve a room?", "fulfillmentMessages": [ { "text": { "text": [ "I can help with that. Where would you like to reserve a room?" ] } } ], "intent": { "name": "projects/PROJECT_ID/agent/intents/e8f6a63e-73da-4a1a-8bfc-857183f71228", "displayName": "room.reservation" }, "intentDetectionConfidence": 1, "diagnosticInfo": {}, "languageCode": "en-us" } }
なお、queryResult.action
フィールドは「room.reservation」となり、queryResult.fulfillmentMessages[0|1].text.text[0]
フィールドではユーザーに詳細情報を要求しています。
Go
Dialogflow への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Java
Dialogflow への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Node.js
Dialogflow への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
Python
Dialogflow への認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証の設定をご覧ください。
その他の言語
C#: クライアント ライブラリ ページの C# の設定手順を行ってから、.NET 用の Dialogflow リファレンス ドキュメントをご覧ください。
PHP: クライアント ライブラリ ページの PHP の設定手順を行ってから、PHP 用の Dialogflow リファレンス ドキュメントをご覧ください。
Ruby: クライアント ライブラリ ページの Ruby の設定手順を行ってから、Ruby 用の Dialogflow リファレンス ドキュメントをご覧ください。