語音轉文字 Google API:AI技術應用的新里程碑!快速搭建屬於你的智慧語音辨識系統

語音轉文字 是一項有趣的任務,現在我們也可以在市場上看到大量的 API。然而,當涉及到語音文件,特別是針對客服中心數據時,這項任務會變得有一點困難。假設一個客服對話大概持續十分鐘,在這種情況下,現在市面上僅有一些少量的 API 可以處理這種類型的數據。(Google、Amazon、IBM、Microsoft、Nuance、Rev.ai、Open source Wavenet、Open source CMU Sphinx)。在這篇文章中,我將會詳細介紹如何從命令行使用 Google Cloud 工具向 Speech-to-Text 發送語音識別請求,它可支援 125 種語言的語音識別和轉錄服務。

語音轉文字 Google API

根據語音服務的內容不同,谷歌提供了三種類型的 API 可以讓用戶來使用。

內容限制音檔時長
同步請求約 1 分鐘
異步請求約 480 分鐘(長時間)
流式請求約 5 分鐘(實時)

同步需求

當需要同步需求服務時,語音文件的內容應該在大約 1 分鐘之內,對於這種類型的需求,用戶不需要把自己的數據上傳到谷歌雲端伺服器。這對用戶提供了很大的便利,因為他們可以把自己的語音文件儲存在本地的電腦或是伺服器上,然後去訪問谷歌的 API 轉錄成文本。而這正是我們在這篇文章終將要詳細介紹的。

異步需求

這類需求涉及的語音文本內容大概是 480 分鐘(8 小時)之內。對於這種請求,用戶需要把他們自己的數據上傳到谷歌雲端伺服器。

流式需求

當用戶直接對著麥克風講話並且需要進行實時轉錄的話,流逝需求是比較適合的。使用這種需求要求劉數據內容應該持續在 5 分鐘之內。

語音轉文字 前期準備工作

在開始之前,我們需要去做一些初始化的設定,可根據下方我們所提供的指示完成這次設定。

您必須先完成以下操作,然後才能向 Speech-to-Text API 發送請求。

  • 在 GCP 上啟用 Speech-to-Text API
    1. 確保已針對 Speech-to-Text 啟用結算功能
    2. 創建和/或向 Speech-to-Text 分配一個或多個服務帳號
    3. 下載服務帳號憑證密碼鑰
  • 設置身份驗證環境變量
  • (可選)創建新的 Google Cloud Storage 儲存桶以存取您的語音數據

步驟一: 在 GCP 上啟用 Speech-to-Text API

語音轉文字 Google Cloud Speech-to-Text API (1)
語音轉文字 Google Cloud Speech-to-Text API (2)

步驟二:創建一個服務帳號

語音轉文字 Google Cloud Speech-to-Text API (3)
語音轉文字 Google Cloud Speech-to-Text API (4)

步驟三:下載服務帳號憑證密碼鑰

語音轉文字 Google Cloud Speech-to-Text API (5)
語音轉文字 Google Cloud Speech-to-Text API (6)

步驟四:設置身份驗證環境變量

激活 Cloud Shell

1.創建新的 Node.js 應用目錄:

$mkdir speech-to-text-nodejs

2.將 speech-to-text-nodejs 目錄設置為您的 Cloud Shell 工作區並打開:

$cd speech-to-text-nodejs;cloudshell open-workspace .

上傳密鑰文件至當前 speech-to-text-nodejs 工作目錄:

4. 將密匙設置為默認憑證:

$export GOOGLE_APPLICATION_CREDENTIALS=XXXXXX.json

發出音檔轉錄請求

步驟一、創建包含以下文本 JSON 請求文件,然後將其另存為

sync-speechtotext.json 純文本文件:

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

說明:此 JSON 片段表明,音檔文件具有 FLAC 編碼格式,採樣率為 16000 Hz,以及音頻文件存取在 Google Cloud Storage 中的給定 URI 處。    

步驟二、使用 curl 發出 speech:識別請求:

$curl -s -H "Content-Type: application/json" \
    -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
    https://speech.googleapis.com/v1/speech:recognize \
    -d @sync-speechtotext.json

返回請求结果:

{
  "results": [
    {
      "alternatives": [
        {
          "transcript": "how old is the Brooklyn Bridge",
          "confidence": 0.9828748
        }
      ],
      "resultEndTime": "1.770s",
      "languageCode": "en-us"
    }
  ],
  "totalBilledTime": "2s",
  "requestId": "866425412681567144"
}

恭喜!您已向 Speech-to-Text 發送了您的第一个請求!

如果您收到來自 Speech-to-Text 的錯誤或空反應,请查看问题排查檢錯步骤。

這裡舉辦常見無法通過 Speech-to-Text 的身份驗證而抱錯物訊息 403 代碼,其原因指出您的 “應用默認憑證 ” 不可用:

$ curl -s -H "Content-Type: application/json" \
    -H "Authorization: Bearer "$(gcloud auth application-default print-access-token) \
    https://speech.googleapis.com/v1/speech:recognize \
    -d @sync-speechtotext.json
{
  "error": {
    "code": 403,
    "message": "Your application has authenticated using end user credentials from the Google Cloud SDK or Google Cloud Shell which are not supported by the speech.googleapis.com. We recommend configuring the billing/quota_project setting in gcloud or using a service account through the auth/impersonate_service_account setting. For more information about service accounts and how to use them in your application, see https://cloud.google.com/docs/authentication/. If you are getting this error with curl or similar tools, you may need to specify 'X-Goog-User-Project' HTTP header for quota and billing purposes. For more information regarding 'X-Goog-User-Project' header, please check https://cloud.google.com/apis/docs/system-parameters.",
    "status": "PERMISSION_DENIED",
    "details": [
      {
        "@type": "type.googleapis.com/google.rpc.ErrorInfo",
        "reason": "SERVICE_DISABLED",
        "domain": "googleapis.com",
        "metadata": {
          "consumer": "projects/618104708054",
          "service": "speech.googleapis.com"
        }
      }
    ]
  }
}

您必須擁有項目的服務帳號,並將服務帳號的密鑰 (JSON 文件)下載到開發環境,然後將該 JSON 文件的位置設置成名為 GOOGLE_APPLICATION_CREDENTIALS 的環境變量。

以下命令可驗證您是否在 GOOGLE_APPLICATION_CREDENTIALS 環境變量中存取有效的服務帳號密鑰 JSON 文件。

$cat $GOOGLE_APPLICATION_CREDENTIALS

若不正確,可將密鑰文件設置為默認憑證:

$export GOOGLE_APPLICATION_CREDENTIALS=XXXXXX.json

語音轉文字 Google API 可以處理特定類型的語音編碼

Speech-to-Text API 支持多種不同編碼。下表列出了支持的音檔解碼器:

编解碼器名稱無損使用說明
mp3MPEG第三層音檔MP3 編碼是一項 Beta 版功能,僅在 v1p1beta1 中提供。如需了解詳情,請參閱 RecognitionConfig 参考文件。
FLAC免费無損音檔编解碼器訊息流要求使用 16 位或 24 位的位深
LINEAR16線性 PCM16 位線性脈冲編碼調制 (PCM) 編碼。文件頭必須包含采樣率。
MULAWμ 律8 位 PCM 编码
AMR自適應多速率窄帶采樣率必須為 8000 Hz
AMR_WB自適應多速率寬帶采樣率必須為 16000 Hz
OGG_OPUSOgg 容器中的 Opus 编码音频帧采樣率必須為 8000 Hz、12000 Hz、16000 Hz、24000 Hz 或 48000 Hz 之一
SPEEX_WITH_HEADER_BYTESpeex 寬帶采樣率必須為 16000 Hz
WEBM_OPUSWebM Opus采樣率必須為 8000 Hz、12000 Hz、16000 Hz、24000 Hz 或 48000 Hz 之一
注意FLAC 既是一種音檔编解碼器,也是一種音檔文件格式。如需使用 FLAC 編碼轉錄音檔文件,您必须提供.FLAC 格式的文件,該格式帶有一个包含元數據的文件頭。注意:Speech-to-Text 支持含有 LINEAR16MULAW 編碼音頻的 WAV 文件。
由思想科技製作

這意味著如果你的語音文件不在谷歌 API 支持的編碼方式之中的話,你必須要把語音文件轉化為谷歌支持的編碼方式。
如果您在對源素材進行編碼時可以選擇編碼方式,請使用 FLAC 或 LINEAR16 之類的無損編碼,以獲得更好的語音識別效果。如需瞭解為您的任務選擇適當編解碼器的准則,請參閱最佳做法

最專業的技術團隊! 提供您最完善的技術教學和服務

思想科技 Master Concept

Leave Us Your Message.
We are ready to talk!

歡迎您與我們聯絡。
我們會協助您取得最佳解決方案!

歡迎您與我們聯絡。
我們會協助您取得最佳解決方案!

Leave Us Your Message.
We are ready to talk!

找不到您需要的? 加入我們的最新活動!

搶先了解
新趨勢