使用 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 為基礎的虛擬機器,搭載各種您需要的開發工具 (包括 gcloudbqgit 等等),而且主目錄提供 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"
  }
}

要求主體具有 configaudio 物件,我們會在 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

後續步驟