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