本頁面說明如何使用 API,將音訊輸入串流至偵測意圖要求。Dialogflow 會先處理音訊並轉換成文字,再嘗試比對意圖。這個程序稱為「音訊輸入」、「語音辨識」、「語音轉文字」或「STT」。
事前準備
這項功能僅適用於使用 API 進行使用者互動的情況。如果您使用整合,可以略過本指南。
閱讀本指南前,請先完成下列工作:
- 詳閱 Dialogflow 基本概念。
- 執行設定步驟。
建立虛擬服務專員
- 前往 Dialogflow ES 控制台。
- 如果出現提示,請登入控制台。詳情請參閱「Dialogflow 控制台總覽」。
- 在側欄選單中,展開「Loading agents」(載入代理程式)。
- 按一下「Create new agent」。
- 輸入代理名稱、預設語言和預設時區。
- 輸入現有專案。如要讓 Dialogflow 控制台建立專案,請選取「Create a new Google project」(建立新的 Google 專案)。
- 按一下「Create」(建立)。
串流基本概念
Session 類型的 streamingDetectIntent 方法會傳回雙向 gRPC 串流物件。這個物件可用的方法因語言而異,詳情請參閱用戶端程式庫的參考文件。
串流物件用於同時傳送及接收資料。用戶端會使用這個物件,將音訊內容串流至 Dialogflow,同時監聽 StreamingDetectIntentResponse。
streamingDetectIntent 方法有 query_input.audio_config.single_utterance 參數,會影響語音辨識:
- 如果設為
false(預設),語音辨識功能會持續運作,直到用戶端關閉串流為止。 - 如果設為
true,Dialogflow 會偵測輸入音訊中的單一語音語句。當 Dialogflow 偵測到音訊的語音已停止或暫停時,就會停止語音辨識,並將StreamingDetectIntentResponse傳送至用戶端,其中包含END_OF_SINGLE_UTTERANCE的辨識結果。收到END_OF_SINGLE_UTTERANCE後,Dialogflow 會忽略串流中傳送至 Dialogflow 的任何音訊。
在雙向串流中,用戶端可以「半關閉」串流物件,向伺服器表示不會再傳送資料。例如,在 Java 和 Go 中,這個方法稱為 closeSend。
在下列情況下,請務必半關閉 (而非取消) 串流:
- 您的用戶端已完成資料傳送作業。
- 用戶端的
single_utterance設為true,並收到辨識結果為END_OF_SINGLE_UTTERANCE的StreamingDetectIntentResponse。
關閉串流後,用戶端應視需要使用新串流啟動新要求。
串流偵測意圖
以下範例使用 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 的最佳做法,請參閱範例頁面。