本文是使用 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 API 允許在辨識設定中明確指定音訊中繼資料。詳情請參閱「編碼」頁面。
如果您在編碼原始內容時可以進行選擇,請使用 16000 Hz 的取樣率擷取音訊。若低於這個值,可能會影響語音辨識準確率,若層級較高,則不會對語音辨識品質造成明顯影響。
但是,如果已經採用 16000 Hz 以外的現有取樣率錄製音訊資料,請勿將音訊重新取樣為 16000 Hz。例如,大多數舊版電話音訊都使用 8000 Hz 的取樣率,產生的結果準確率可能會比較低。如果必須使用這類音訊,請以原始取樣率將音訊提供給 Speech-to-Text API。
語言
Speech-to-Text 的辨識引擎支援各種語言與方言。您可以在要求設定的 languageCode
欄位內,使用 BCP-47 ID 指定音訊的語言 (以及國家或地區方言)。
如需各項功能支援的語言完整清單,請前往「語言支援」頁面。
辨識功能
Speech-to-Text 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 服務代理程式角色:
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
值低於其他選項,該結果仍會顯示在最上方。