這個頁面說明如何使用 Cloud Speech-to-Text API 和非同步語音辨識,將長音訊檔案 (長度超過 1 分鐘) 轉錄為文字。
關於非同步語音辨識
「非同步語音辨識」會啟動長時間執行的音訊處理作業。使用非同步語音辨識功能,轉錄長度超過 60 秒的音訊。如果是較短的音訊,使用同步語音辨識會更快、更簡單。非同步語音辨識的上限為 480 分鐘。
Cloud Speech-to-Text 和非同步處理
您可以從本機檔案將音訊內容直接傳送至 Cloud Speech-to-Text,進行非同步處理。不過,本機檔案的音訊時間限制為 60 秒。如果嘗試轉錄長度超過 60 秒的本機音訊檔案,系統會顯示錯誤訊息。如要使用非同步語音辨識功能轉錄長度超過 60 秒的音訊,請務必將資料儲存在 Cloud Storage bucket 中。
您可以使用 google.longrunning.Operations 方法擷取作業結果。結果會保留 5 天 (120 小時),您也可以選擇直接將結果上傳至 Cloud Storage 值區。
使用 Cloud Storage bucket 轉錄長音訊檔案
這些範例會使用 Cloud Storage bucket 儲存長期轉錄程序使用的原始音訊輸入內容。如要查看一般 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,提供本機檔案路徑或 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
如要瞭解如何安裝及使用 Cloud STT 的用戶端程式庫,請參閱「Cloud STT 用戶端程式庫」。詳情請參閱「Cloud STT Go API 參考文件」。
如要向 Cloud STT 進行驗證,請設定應用程式預設憑證。詳情請參閱「為本機開發環境設定驗證機制」。
Java
如要瞭解如何安裝及使用 Cloud STT 的用戶端程式庫,請參閱「Cloud STT 用戶端程式庫」。詳情請參閱「Cloud STT Java API 參考文件」。
如要向 Cloud STT 進行驗證,請設定應用程式預設憑證。詳情請參閱「為本機開發環境設定驗證機制」。
Node.js
如要瞭解如何安裝及使用 Cloud STT 的用戶端程式庫,請參閱「Cloud STT 用戶端程式庫」。詳情請參閱「Cloud STT Node.js API 參考文件」。
如要向 Cloud STT 進行驗證,請設定應用程式預設憑證。詳情請參閱「為本機開發環境設定驗證機制」。
Python
如要瞭解如何安裝及使用 Cloud STT 的用戶端程式庫,請參閱「Cloud STT 用戶端程式庫」。詳情請參閱「Cloud STT Python API 參考文件」。
如要向 Cloud STT 進行驗證,請設定應用程式預設憑證。詳情請參閱「為本機開發環境設定驗證機制」。
其他語言
C#:請按照用戶端程式庫頁面上的 C# 設定操作說明完成相關步驟,然後參閱「.NET 適用的 Cloud STT 參考文件」。
PHP:請按照用戶端程式庫頁面上的 PHP 設定操作說明完成相關步驟,然後參閱「PHP 適用的 Cloud STT 參考文件」。
Ruby:請按照用戶端程式庫頁面上的 Ruby 設定操作說明完成相關步驟,然後參閱「Ruby 適用的 Cloud STT 參考文件」。
將轉錄結果上傳至 Cloud Storage bucket
Cloud Speech-to-Text 支援將長時間辨識結果直接上傳至 Cloud Storage bucket。如果您使用 Cloud Storage 觸發條件實作這項功能,Cloud Storage 上傳作業可以觸發通知,進而呼叫 Cloud Functions,不必輪詢 Cloud 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/v2/speech:longrunningrecognize"
LongRunningRecognizeResponse 包含上傳嘗試的 Cloud Storage bucket 路徑。如果上傳失敗,系統會傳回輸出錯誤。如果已有同名檔案,上傳作業會將結果寫入新檔案,並以時間戳記做為後置字串。
{
...
"metadata": {
...
"outputConfig": {...}
},
...
"response": {
...
"results": [...],
"outputConfig": {
"gcs_uri":"gs://bucket/result-output-path"
},
"outputError": {...}
}
}
歡迎試用
如果您未曾使用過 Google Cloud,歡迎建立帳戶,親自體驗實際使用 Cloud STT 的成效。新客戶還能獲得價值 $300 美元的免費抵免額,用於執行、測試及部署工作負載。
免費試用 Cloud STT