語音轉文字 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 之類的無損編碼,以獲得更好的語音識別效果。如需瞭解為您的任務選擇適當編解碼器的准則,請參閱最佳做法

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

Leave Us Your Message.
We are ready to talk!

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

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

Leave Us Your Message.
We are ready to talk!

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

搶先了解
新趨勢