使用 Cloud Speech-to-Text API 將語音轉錄為文字

Cloud Speech API 可將音訊檔案轉錄成 80 多種語言的文字稿。

在本實驗室中,我們將錄製音訊檔案並傳送到 Cloud Speech API 進行語音轉錄。

課程內容

  • 建立 Speech API 要求並使用 curl 呼叫 API
  • 使用不同語言的音訊檔案呼叫 Speech API

軟硬體需求

您會如何使用本教學課程?

僅閱讀 閱讀並完成練習

你對 Google Cloud Platform 的使用體驗滿意嗎?

新手 中級 熟練

自行設定環境

如果您還沒有 Google 帳戶 (Gmail 或 Google 應用程式),請先建立帳戶。登入 Google Cloud Platform 主控台 (console.cloud.google.com),然後建立新專案:

Screenshot from 2016-02-10 12:45:26.png

請記住專案 ID,這是所有 Google Cloud 專案中不重複的名稱 (上述名稱已遭占用,因此不適用於您,抱歉!)。本程式碼研究室稍後會將其稱為 PROJECT_ID。

接著,您必須在 Cloud 控制台中啟用帳單,才能使用 Google Cloud 資源。

完成本程式碼研究室的費用不應超過數美元,但如果您決定使用更多資源,或是將資源繼續執行 (請參閱本文件結尾的「清除」一節),則可能會增加費用。

Google Cloud Platform 新使用者享有價值 $300 美元的免費試用期。

按一下畫面左上方的「選單」圖示。

從下拉式選單中選取「API 和服務」 資訊主頁。

按一下「啟用 API 和服務」。

然後在搜尋框中搜尋「語音」。按一下「Google Cloud Speech API」:

按一下「啟用」來啟用 Cloud Speech API:

稍待片刻,等待按鈕重新啟用。啟用後,畫面會顯示以下內容:

Google Cloud Shell 是 在雲端執行的指令列環境,這種以 Debian 為基礎的虛擬機器,搭載各種您需要的開發工具 (包括 gcloud、bq、git 等等),而且主目錄提供 5 GB 的永久儲存空間。我們會使用 Cloud Shell 建立 Speech API 的要求。

如要開始使用 Cloud Shell,請按一下標題列右上角的「啟用 Google Cloud Shell」圖示 Screen Shot 2015-06-08 at 5.30.32 PM.png。

系統會在控制台底部的新頁框中開啟 Cloud Shell 工作階段,並顯示指令列提示。等待 user@project:~$ 提示出現

我們會使用 curl 將要求傳送至 Speech API,因此需要產生 API 金鑰,才能傳入要求網址。如要建立 API 金鑰,請前往專案資訊主頁的「APIs & Services」(API 和服務) >「Credentials」(憑證) 部分:

然後按一下「建立憑證」:

在下拉式選單中選取「API 金鑰」:

接下來,請複製您剛產生的金鑰並選取「Close」(關閉) (不要限制金鑰)。

您現在已擁有 API 金鑰,儲存為環境變數後,就不需要為每個要求插入 API 金鑰值。您可以在 Cloud Shell 中執行此操作。請務必將 <your_api_key> 替換成您剛才複製的金鑰。

export API_KEY=<YOUR_API_KEY>

您可以在 request.json 檔案中建立要傳送至 Speech API 的要求。如要建立及編輯這個檔案,您可以使用偏好的指令列編輯器 (nano、vim、emacs),或使用 Cloud Shell 內建的網頁編輯器:

在主目錄中建立檔案,方便您輕鬆參照,並在 request.json 檔案中新增下列內容:

request.json

{
  "config": {
      "encoding":"FLAC",
      "languageCode": "en-US"
  },
  "audio": {
      "uri":"gs://cloud-samples-tests/speech/brooklyn.flac"
  }
}

要求主體具有 config 和 audio 物件,我們會在 config 中告知 Speech API 如何處理要求。encoding 參數則說明傳送至 API 的音訊檔案是使用哪種音訊編碼類型。FLAC 是 .raw 檔案的編碼類型 (詳情請參閱編碼類型說明文件)。您也可以新增其他參數至 config 物件,但 encoding 是唯一必填項目。如果未在要求中填寫此項目,則 languageCode 預設值為英文。

在 audio 物件中,您可以將 Cloud Storage 音訊檔案的 URI 傳送給 API,或是將 Base64 編碼的音訊以字串形式傳送。我們這裡採用 Cloud Storage 網址。下一步是呼叫 Speech API!

使用下列 curl 指令,傳送要求主體及稍早儲存的 API 金鑰環境變數至 Speech API (請在單一指令列中輸入所有指令):

curl -s -X POST -H "Content-Type: application/json" --data-binary @request.json "https://speech.googleapis.com/v1/speech:recognize?key=${API_KEY}"

這項 curl 指令傳回的內容應如下所示:

{
  "results": [
    {
      "alternatives": [
        {
          "transcript": "how old is the Brooklyn Bridge",
          "confidence": 0.98267895
        }
      ]
    }
  ]
}

transcript 值會傳回 Speech API 轉錄音訊檔案的文字成果,confidence 值則表示 API 對正確轉錄音訊的信心程度。

您會發現上述要求中我們呼叫了 recognize 方法。Speech API 支援同步和非同步的語音轉文字作業。在這個例子中,我們將完整的音訊檔案傳送至 API,不過您也能使用 longrunningrecognize 方法,在使用者說話的同時將語音轉錄為文字。

您說多種語言嗎?Speech API 語音轉文字功能支援超過 100 種語言!您可以在 request.json 中變更 languageCode 參數。如要查看支援的語言清單,請按這裡。

我們來試試法文的音訊檔案 (如要先試聽,請按這裡)。將 request.json 改為以下內容:

request.json

 {
  "config": {
      "encoding":"FLAC",
      "languageCode": "fr"
  },
  "audio": {
      "uri":"gs://speech-language-samples/fr-sample.flac"
  }
}

您應會看到以下回應內容:

{
  "results": [
    {
      "alternatives": [
        {
          "transcript": "maître corbeau sur un arbre perché tenait en son bec un fromage",
          "confidence": 0.9710122
        }
      ]
    }
  ]
}

這個句子來自法國著名童話。如果您有其他語言的音訊檔案,可以嘗試新增至 Cloud Storage,並變更要求中的 languageCode 參數。

您已瞭解如何使用 Speech API 執行語音轉文字轉錄功能。在本範例中,您將音訊檔案的 Google Cloud Storage URI 傳送給 API。您也可以傳送採用 Base64 編碼的音訊內容字串。

涵蓋內容

  • 將語音檔案的 Google Cloud Storage URI 傳遞給 Speech API
  • 建立 Speech API 要求並使用 curl 呼叫 API
  • 使用不同語言的音訊檔案呼叫 Speech API

後續步驟