Cloud Speech-to-Text 總覽

Cloud Speech-to-Text API 可讓您將 Google 的語音辨識技術整合至開發人員應用程式。本文涵蓋使用 Cloud Speech-to-Text 的基本概念,包括您可以向 Cloud STT 提出的要求類型、如何建構這些要求,以及如何處理其回應。深入瞭解如何使用 API 前,請先閱讀本指南和其中一篇相關教學課程。

Cloud Speech-to-Text 辨識要求

Cloud Speech-to-Text (STT) 有三種主要的語音辨識方法,可用方法如下:

  • 同步辨識 (REST 與 gRPC) 會將音訊資料傳送至 Cloud Speech-to-Text API,對該資料執行辨識,並在所有音訊資料處理完成後傳回結果。同步辨識要求會處理長度不超過 1 分鐘的音訊資料。

  • 非同步辨識 (REST 和 gRPC) 會將音訊資料傳送至 Cloud Speech-to-Text API,並啟動「長時間執行的作業」。您可以使用這項作業,對辨識結果進行定期輪詢。請針對任何長度最多為 480 分鐘的音訊資料使用非同步要求。

  • 串流辨識 (僅限 gRPC) 會對 gRPC 雙向串流內提供的音訊資料執行辨識。串流要求的用途是即時辨識,例如擷取麥克風的即時音訊。串流辨識會在擷取音訊時提供暫時結果,舉例來說,使用者還在說話時,系統就能顯示結果。

要求包含設定參數以及音訊資料。辨識要求可以選擇性地包含辨識器,也就是儲存且可重複使用的辨識設定。

音訊中繼資料

對於大多數音訊檔案,Cloud Speech-to-Text API 可以自動推斷音訊中繼資料。Cloud STT 會剖析檔案標頭,並根據該資訊解碼。如需支援的檔案類型,請參閱編碼頁面。

如果是沒有標頭的音訊檔案,Cloud Speech-to-Text API 可讓您在辨識設定中明確指定音訊中繼資料。詳情請參閱「編碼」頁面。

如果可以選擇編碼來源材料的方式,請使用 16000 Hz 的取樣率擷取音訊。低於這個值的取樣率可能會影響語音辨識準確度,而高於這個值的取樣率則不會對語音辨識品質產生明顯影響。

不過,如果音訊資料已以 16000 Hz 以外的取樣率錄製,請勿將音訊重新取樣為 16000 Hz。舉例來說,大多數舊版電話音訊使用的取樣率為 8000 Hz,這可能會導致結果準確度降低。如果必須使用這類音訊,請以原始取樣率將音訊提供給 Cloud Speech-to-Text API。

語言

Cloud STT 的辨識引擎支援各種語言與方言。您可以在要求設定的 languageCode 欄位內,使用 BCP-47 ID 指定音訊的語言 (以及國家或地區方言)。

如需各項功能支援的語言完整清單,請參閱「支援的語言」頁面。

辨識功能

Cloud Speech-to-Text API 具有其他辨識功能,例如自動標點符號字詞層級信賴度。您可以在要求中的辨識設定中啟用這些功能。如需功能適用情形,請參閱所提供連結中的程式碼範例和「語言」頁面。

多種模型供您選擇

Cloud STT 可以使用數種機器學習「模型」的其中一種來轉錄音訊檔案。Google 已針對特定語音類型與來源,對這些語音辨識模型進行訓練。請參閱模型選取說明文件,瞭解可用模型,以及如何在要求中選取模型。

內嵌音訊內容

如要在語音辨識要求中加入內嵌音訊,請在要求的 audio_source 欄位中傳遞 content 參數。如要提供嵌入式音訊做為 gRPC 要求中的內容,音訊必須與 Proto3 序列化相容,並以二進位資料形式提供。如要以 REST 要求中的內容提供內嵌音訊,音訊必須與 JSON 序列化相容,且必須先採用 Base64 編碼。詳情請參閱「Base64 編碼音訊」。

使用 Google Cloud 用戶端程式庫建構要求時,您通常會直接在 content 欄位中填入這項二進位 (或採用 Base64 編碼的) 資料。

傳送 URI 參照的音訊

更常見的做法是,在 Cloud 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 服務代理程式][speech-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 政策,請參閱 [管理專案、資料夾和機構的存取權][manage-access]。

您也可以授予服務帳戶特定 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 說明文件中的 [建立及管理存取權控管清單][buckets-manage-acl]。

Cloud Speech-to-Text API 回應

Cloud Speech-to-Text API 處理音訊後,會傳回 SpeechRecognitionResult 訊息中的語音轉錄結果 (適用於同步和批次要求),以及 StreamingRecognitionResult 訊息中的語音轉錄結果 (適用於串流要求)。在同步和批次要求中,RPC 回應會包含結果清單。系統會依序顯示辨識出的音訊清單。如果是串流回應,所有標示為 is_final 的結果會依序顯示。

無法辨識語音通常是因為音訊品質極差,或是語言代碼、編碼或取樣率值與提供的音訊不符。

選取替代方案

成功同步辨識回應內的每個結果都可以包含一或多個 alternatives (如果 max_alternatives 大於 1)。如果 Cloud STT 判斷某個替代轉錄擁有足夠的信心值,則會將該替代轉錄包含在回應中。回應中的第一個替代轉錄一律為最佳 (最可能) 的替代轉錄。

max_alternatives 設為高於 1 的值,並不代表或保證會傳回多個替代轉錄。一般來說,如果使用者透過串流辨識要求取得結果,提供多個替代方案會更適合。

處理轉錄

回應中的每個替代方案都包含 transcript,內含辨識的文字。收到連續替代方案時,請串連這些轉錄內容。

信心值

confidence 值是介於 0.0 和 1.0 之間的預估值。計算方式是彙整音訊中每個字詞的「可能性」值。數字越高,表示系統估計個別字詞正確辨識的機率越高。這個欄位通常只會提供給最佳假設,且僅適用於 is_final=true 的結果。舉例來說,您可以使用 confidence 值,決定是否要顯示替代結果或要求確認。

不過請注意,模型會根據比 confidence 分數更多的信號 (例如句子脈絡),判斷「最佳」結果並排序。因此,有時信心分數最高的結果並非排名第一。如果未要求多個替代結果,單一「最佳」結果的信賴值可能會低於預期。舉例來說,如果使用罕見字詞,就可能發生這種情況。即使系統正確辨識出罕用字,仍可能指派較低的「可能性」值。如果模型根據內容判斷罕見字詞是最有可能的選項,即使該結果的 confidence 值低於其他選項,模型仍會將該結果放在最上方。

後續步驟