這個頁面說明如何使用 Speech-to-Text API 和非同步語音辨識,將長音訊檔案 (長度超過 1 分鐘) 轉錄為文字。
非同步語音辨識簡介
「非同步語音辨識」會啟動長時間執行的音訊處理作業。使用非同步語音辨識功能,轉錄長度超過 60 秒的音訊。如果是較短的音訊,使用同步語音辨識會更快、更簡單。非同步語音辨識的上限為 480 分鐘。
Speech-to-Text 和非同步處理
您可以將音訊內容直接從本機檔案傳送至 Speech-to-Text,進行非同步處理。不過,本機檔案的音訊時間限制為 60 秒。如果嘗試轉錄長度超過 60 秒的本機音訊檔案,系統會顯示錯誤訊息。如要使用非同步語音辨識功能轉錄超過 60 秒的音訊,必須將資料儲存在 Google Cloud Storage bucket 中。
您可以使用 google.longrunning.Operations 方法擷取作業結果。結果會保留 5 天 (120 小時),您也可以選擇直接將結果上傳至 Google Cloud Storage bucket。
使用 Google Cloud Storage 檔案轉錄長音訊檔案
這些範例會使用 Cloud Storage 值區,儲存長時間語音轉錄程序使用的原始音訊輸入內容。如要查看一般 longrunningrecognize
作業的回應範例,請參閱參考說明文件。
通訊協定
如要瞭解完整的詳細資訊,請參閱 speech:longrunningrecognize
API 端點。
如要執行同步語音辨識,請提出 POST
要求並提供適當的要求內容。以下為使用 curl
的 POST
要求示例。這個範例使用 Google Cloud CLI 產生存取權杖。如需安裝 gcloud CLI 的操作說明,請參閱快速入門導覽課程。
curl -X POST \ -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \ -H "Content-Type: application/json; charset=utf-8" \ --data "{ 'config': { 'language_code': 'en-US' }, 'audio':{ 'uri':'gs://cloud-samples-tests/speech/brooklyn.flac' } }" "https://speech.googleapis.com/v1/speech:longrunningrecognize"
如要進一步瞭解如何設定要求內容,請參閱 RecognitionConfig 與 RecognitionAudio 參考說明文件。
如果要求成功,伺服器會傳回 200 OK
HTTP 狀態碼與 JSON 格式的回應:
{ "name": "7612202767953098924" }
其中 name
是為要求建立的長時間執行作業名稱。
等待處理程序完成。處理時間會因來源音訊而異。在大多數情況下,結果會在來源音訊長度的一半時間內產生。如要取得長時間執行作業的狀態,請對 https://speech.googleapis.com/v1/operations/
端點發出 GET
要求。將 your-operation-name
替換為從 longrunningrecognize
要求傳回的 name
。
curl -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \ -H "Content-Type: application/json; charset=utf-8" \ "https://speech.googleapis.com/v1/operations/your-operation-name"
如果要求成功,伺服器會傳回 200 OK
HTTP 狀態碼與 JSON 格式的回應:
{ "name": "7612202767953098924", "metadata": { "@type": "type.googleapis.com/google.cloud.speech.v1.LongRunningRecognizeMetadata", "progressPercent": 100, "startTime": "2017-07-20T16:36:55.033650Z", "lastUpdateTime": "2017-07-20T16:37:17.158630Z" }, "done": true, "response": { "@type": "type.googleapis.com/google.cloud.speech.v1.LongRunningRecognizeResponse", "results": [ { "alternatives": [ { "transcript": "how old is the Brooklyn Bridge", "confidence": 0.96096134, } ] }, { "alternatives": [ { ... } ] } ] } }
如果作業尚未完成,您可以重複發出 GET
要求來輪詢端點,直到回應的 done
屬性為 true
為止。
gcloud
如要瞭解完整的詳細資訊,請參閱
recognize-long-running
指令。
如要執行非同步語音辨識,請使用 Google Cloud CLI,提供本機檔案路徑或 Google Cloud Storage 網址。
gcloud ml speech recognize-long-running \ 'gs://cloud-samples-tests/speech/brooklyn.flac' \ --language-code='en-US' --async
如果要求成功,伺服器會傳回 JSON 格式長時間執行作業的 ID。
{ "name": OPERATION_ID }
然後您可以執行下列指令,取得關於作業的資訊。
gcloud ml speech operations describe OPERATION_ID
您也可以執行下列指令來對作業進行輪詢,直到作業完成為止。
gcloud ml speech operations wait OPERATION_ID
作業完成後,作業會以 JSON 格式傳回音訊的轉錄稿。
{ "@type": "type.googleapis.com/google.cloud.speech.v1.LongRunningRecognizeResponse", "results": [ { "alternatives": [ { "confidence": 0.9840146, "transcript": "how old is the Brooklyn Bridge" } ] } ] }
Go
如要瞭解如何安裝及使用 Speech-to-Text 的用戶端程式庫,請參閱這篇文章。 詳情請參閱 Speech-to-Text Go API 參考說明文件。
如要向語音轉文字服務進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Java
如要瞭解如何安裝及使用 Speech-to-Text 的用戶端程式庫,請參閱這篇文章。 詳情請參閱 Speech-to-Text Java API 參考說明文件。
如要向語音轉文字服務進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Node.js
如要瞭解如何安裝及使用 Speech-to-Text 的用戶端程式庫,請參閱這篇文章。 詳情請參閱 Speech-to-Text Node.js API 參考說明文件。
如要向語音轉文字服務進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
Python
如要瞭解如何安裝及使用 Speech-to-Text 的用戶端程式庫,請參閱這篇文章。 詳情請參閱 Speech-to-Text Python API 參考說明文件。
如要向語音轉文字服務進行驗證,請設定應用程式預設憑證。 詳情請參閱「為本機開發環境設定驗證」。
其他語言
C#: 請按照用戶端程式庫頁面的 C# 設定說明操作, 然後前往 .NET 適用的 Speech-to-Text 參考說明文件。
PHP: 請按照用戶端程式庫頁面的 PHP 設定說明 操作,然後前往 PHP 適用的 Speech-to-Text 參考文件。
Ruby: 請按照用戶端程式庫頁面的Ruby 設定說明操作, 然後前往 Ruby 適用的 Speech-to-Text 參考說明文件。
將轉錄結果上傳至 Cloud Storage bucket
語音轉文字支援將長時間辨識結果直接上傳至 Cloud Storage bucket。如果使用 Cloud Storage 觸發條件實作這項功能,Cloud Storage 上傳作業可以觸發通知,進而呼叫 Cloud Functions,不必輪詢 Speech-to-Text 即可取得辨識結果。
如要將結果上傳至 Cloud Storage bucket,請在長時間辨識要求中提供選用的 TranscriptOutputConfig
輸出設定。
message TranscriptOutputConfig {
oneof output_type {
// Specifies a Cloud Storage URI for the recognition results. Must be
// specified in the format: `gs://bucket_name/object_name`
string gcs_uri = 1;
}
}
通訊協定
如要瞭解完整的詳細資訊,請參閱 longrunningrecognize
API 端點。
下列範例說明如何使用 curl
傳送 POST
要求,其中要求主體會指定 Cloud Storage 值區的路徑。結果會上傳至這個位置,並儲存為 JSON
檔案 SpeechRecognitionResult
。
curl -X POST \ -H "Authorization: Bearer $(gcloud auth application-default print-access-token)" \ -H "Content-Type: application/json; charset=utf-8" \ --data "{ 'config': {...}, 'output_config': { 'gcs_uri':'gs://bucket/result-output-path.json' }, 'audio': { 'uri': 'gs://bucket/audio-path' } }" "https://speech.googleapis.com/v1p1beta1/speech:longrunningrecognize"
LongRunningRecognizeResponse
包含嘗試上傳的 Cloud Storage bucket 路徑。如果上傳失敗,系統會傳回輸出錯誤。如果已有同名檔案,上傳作業會將結果寫入新檔案,並以時間戳記做為後置字串。
{ ... "metadata": { ... "outputConfig": {...} }, ... "response": { ... "results": [...], "outputConfig": { "gcs_uri":"gs://bucket/result-output-path" }, "outputError": {...} } }
歡迎試用
如果您未曾使用過 Google Cloud,歡迎建立帳戶,親自體驗實際使用 Speech-to-Text 的成效。新客戶可以獲得價值 $300 美元的免費抵免額,可用於執行、測試及部署工作負載。
免費試用 Speech-to-Text