本文是使用 Speech-to-Text 的基本概念指南。這份概念指南涵蓋了您可以向 Speech-to-Text 提出的要求類型、如何建構這些要求,以及如何處理其回應等資訊。我們建議 Speech-to-Text 的所有使用者都先閱讀這份指南以及其中一份相關聯的教學課程,然後再深入瞭解 API 本身。
Speech-to-Text 辨識要求
Speech-to-Text 有三個執行語音辨識的主要方法。方法如下:
同步辨識 (REST 與 gRPC) 會將音訊資料傳送至 Speech-to-Text API,對該資料執行辨識,並在所有音訊資料處理完成後傳回結果。同步辨識要求的音訊資料時間長度上限不超過 1 分鐘。
非同步辨識 (REST 與 gRPC) 會將音訊資料傳送至 Speech-to-Text API,並啟動長時間執行作業。您可以使用這個作業,對辨識結果進行定期輪詢。請針對任何長度最多為 480 分鐘的音訊資料使用非同步要求。
串流辨識 (僅 gRPC) 會對 gRPC 雙向串流內提供的音訊資料執行辨識。串流要求的用途是即時辨識,例如擷取麥克風的即時音訊。串流辨識會在擷取音訊時提供暫時結果,進而在例如使用者還在說話時顯示結果。
要求包含設定參數以及音訊資料。辨識要求可選擇包含辨識器,也就是已儲存且可重複使用的辨識設定。
音訊中繼資料
對於大多數音訊檔案,Speech-to-Text API 可自動推斷音訊中繼資料。Speech-to-Text 會剖析檔案的標頭,並根據該資訊進行解碼。請參閱「編碼」頁面,瞭解系統支援的檔案類型。
對於沒有標頭的音訊檔案,Speech-to-Text API 允許您在辨識設定中明確指定音訊中繼資料。詳情請參閱「編碼」頁面。
如果您在編碼原始內容時可以進行選擇,請使用 16000 Hz 的取樣率擷取音訊。若低於這個值,可能會影響語音辨識準確率,若層級較高,則不會對語音辨識品質造成明顯影響。
但是,如果已經採用 16000 Hz 以外的現有取樣率錄製音訊資料,請勿將音訊重新取樣為 16000 Hz。例如,大多數舊版電話音訊都使用 8000 Hz 的取樣率,產生的結果準確率可能會比較低。如果您必須使用這類音訊,請以原始取樣率將音訊提供給 Speech-to-Text API。
語言
Speech-to-Text 的辨識引擎支援各種語言與方言。您可以在要求設定的 languageCode
欄位內,使用 BCP-47 ID 指定音訊的語言 (以及國家或地區方言)。
如需各項功能支援的完整語言清單,請前往「語言支援」頁面查看。
辨識功能
語音轉文字 API 提供其他辨識功能,例如自動標點符號和字詞層級信賴度。這些功能會在要求的辨識設定中啟用。如要瞭解這些功能的適用情況,請參閱上述連結和「語言」頁面提供的程式碼範例。
多種模型供您選擇
Speech-to-Text 可以使用數種機器學習「模型」的其中一種來轉錄音訊檔案。Google 已針對特定音訊類型與來源,對這些語音辨識模型進行訓練。請參閱模型選取說明文件,瞭解可用的模型,以及如何在要求中選取模型。
嵌入的音訊內容
在要求的 audio_source
欄位中傳遞 content
參數時,語音辨識要求會納入內嵌音訊。如果嵌入的音訊是以內容形式提供於 gRPC 要求中,則該音訊必須與 Proto3 序列化相容,並以二進位資料的形式提供。針對 REST 要求內做為內容提供的嵌入音訊,該音訊必須與 JSON 序列化作業相容,且必須先採用 Base64 編碼。詳情請參閱「使用 Base64 編碼音訊」。
使用 Google Cloud 用戶端程式庫建構要求時,您通常會直接在 content
欄位中填入這項二進位 (或採用 base-64 編碼的) 資料。
傳送 URI 參照的音訊
通常,您會在 Speech-to-Text API 要求的 audio_source
欄位中傳遞 uri
參數,指向位於 Cloud Storage 中的音訊檔案 (以二進位格式,而非 base64 格式),格式如下:
gs://bucket-name/path/to/audio/file
Speech-to-Text 會使用服務帳戶存取 Cloud Storage 中的檔案。根據預設,服務帳戶可存取同一個專案中的 Cloud Storage 檔案。
服務帳戶的電子郵件地址如下:
service-PROJECT_NUMBER@gcp-sa-speech.iam.gserviceaccount.com
如要將其他專案中的 Cloud Storage 檔案轉錄,您可以為這個服務帳戶授予其他專案中的 Speech-to-Text Service Agent 角色:
gcloud projects add-iam-policy-binding PROJECT_ID \
--member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-speech.iam.gserviceaccount.com \
--role=roles/speech.serviceAgent
如要進一步瞭解專案 IAM 政策,請參閱「管理專案、資料夾和機構的存取權」。
您也可以授予服務帳戶特定 Cloud Storage 值區的權限,讓服務帳戶享有更精細的存取權:
gcloud storage buckets add-iam-policy-binding gs://BUCKET_NAME \
--member=serviceAccount:service-PROJECT_NUMBER@gcp-sa-speech.iam.gserviceaccount.com \
--role=roles/storage.admin
如要進一步瞭解如何管理 Cloud Storage 存取權,請參閱 Cloud Storage 說明文件中的「建立及管理存取權控管清單」。
Speech-to-Text API 回應
處理音訊後,Speech-to-Text API 會在 SpeechRecognitionResult
訊息中傳回同步和批次要求的轉錄結果,並在 StreamingRecognitionResult
訊息中傳回串流要求的轉錄結果。在同步和批次要求中,RPC 回應會包含結果清單。系統會以連續的順序顯示已辨識的音訊清單。對於串流回應,所有標示為 is_final
的結果會以連續順序顯示。
選取替代方案
成功同步辨識回應內的每個結果都可以包含一或多個 alternatives
(如果 max_alternatives
大於 1
)。如果 Speech-to-Text 判斷某個替代轉錄擁有足夠的信心值,則會將該替代轉錄包含在回應中。回應中的第一個替代轉錄一律為最佳 (最可能) 的替代轉錄。
將 max_alternatives
設為高於 1
的值,並不表示或保證會傳回多個替代值。一般來說,如果使用者透過串流辨識要求取得結果,提供多個替代選項會更適合提供即時選項。
處理轉錄
回應中提供的每個替代值都會包含 transcript
,其中包含辨識的文字。當您獲得依序的替代轉錄時,應將這些轉錄相互串聯。
信心值
confidence
值是介於 0.0 和 1.0 之間的預估值。系統會將音訊中每個字詞的「可能性」值加總,藉此計算出這個值。數字越高,表示系統越有可能正確辨識個別字詞。這個欄位通常只會提供給最可能的假設,且只提供 is_final=true
的結果。舉例來說,您可以使用 confidence
值決定是否要向使用者顯示其他結果,或要求使用者確認。
不過,請注意,模型會根據 confidence
分數以外的更多信號 (例如句子脈絡),判斷「最佳」的結果。因此,有時最上方的結果並非信心分數最高的結果。如果您未要求多個替代結果,則傳回的單一「最佳」結果的可信度值可能會低於預期。舉例來說,如果使用的是罕見字詞,就可能發生這種情況。即使系統正確辨識出不常使用的字詞,也可能會為該字詞指派低的「可能性」值。如果模型根據上下文判斷罕見字詞是最有可能的選項,即使結果的 confidence
值低於其他選項,系統仍會將該結果傳回至頂端。