[機器學習] Google Cloud Platform (1) Cloud Speech API 介紹與應用

最近用信用卡開通了 Google Cloud Platform 的帳戶,一共得到了 300 美元的免費使用額度,和 12 個月的免費試用期。裡面的 API 相當的多 (連結)。裡頭關於機器學習的 API羅列如下:

  1. Cloud Vision API
  2. Cloud Speech APi
  3. Natural Language API
  4. Translation API

而這次要介紹的是第二項, Cloud Speech API(連結)。準備好了嗎,開始囉!

快速測試

由於沒一村待的實驗室,時常需要 train 各種 model 來解決各種研究上會遇到的問題,因此我深知,要 train 一個可以用的語音辨識模型,對於沒有大量和有品質的資料的小公司或小團隊而言,是一件相當麻煩的事。更何況如果軟體服務是要面對多國語言,並處理各種糟雜的情況,那就更麻煩了。

Google 提供的 Cloud Speech  API,旨在解決這個問題。 在 Cloud Speech API 的介紹頁面上,也提供了按鈕可以快速讓大家體驗這個 API的強大,圖片如下,選好語言,然後按下藍色按鈕就可以了!

quick_look

快速測試一下的結果如下:

quick test result

雖然 Cloud Speech API 目前的強度能轉換 80 種語言,但可惜的是,沒一村只會說中文和英文,不能幫各位測試更多的可能性 XD,就請會說各種語言的各位自行測試囉!

測試真正的語音檔

測試完我的實際語音後,我們來測試真正的語音檔,看看他到底會回傳我們什麼東西 XD。Google API 的一大好處就是 document 寫得很清楚,關於 Cloud Speech API,則可以參考這一篇。在開始之前,首先我們需要先在 Google console 上建立一個專案,按下 SET UP A PROJECT 的藍色按鈕,然後輸入 project 的名稱。所有在 Google Cloud Platform 上運行的 project,都會放在這個網址

輸入 project 名稱後,會自動下載一個 private key。我們之後會使用到這個 private key 來存取 Cloud Speech API,如下:

private key

接著,要把 google cloud sdk 裝在本機上, Linux / OSX 的用戶,可以在 terminal 使用以下指令來做安裝。Windows 10 的用戶,也可以在 Ubuntu bash shell 輸入以下指令。(教學連結

curl https://sdk.cloud.google.com | bash

以上事情都搞定後,我們要來產生 REST API Header 的 access token。有這個 access token 就可以存取 API。輸入以下指令,而 XXX則是剛拿下來的 private  key。

gcloud auth activate-service-account --key-file=XXX.json

接著,我們還需要讓我們的 google 帳戶能夠擁有 Google Cloud Platform 的完整存取權。輸入以下指令:

gcloud auth application-default login

最後輸入以下這行指令拿到 access token

gcloud auth application-default print-access-token

接著,要來產生 REST API 的 request body。產生一個 json 檔如下。裡頭的 brooklyn.flac 是 Google 提供的範例。

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

最後在 command line 上輸入以下指令就可以了,ACCESS_TOKEN 要換成剛剛拿到的 access token。

curl -s -H "Content-Type: application/json" \
    -H "Authorization: Bearer ACCESS_TOKEN" \
    https://speech.googleapis.com/v1/speech:recognize \
    -d @sync-request.json

那麼拿回來的 result 應該會是長這個樣子:

response1

換個自己的語音檔

接著我們嘗試使用自己的一個語音檔。進入 Google console,並在上方選擇我們剛剛建立的專案。然後點選選單,下拉點選 Storage 的「瀏覽器」選項。

change ringtone

接著,建立一個 bucket ,這個 bucket 要放我們的音樂檔。如果是 MP3 的音樂,那請用  ffmpeg 轉成 FLAC 檔,輸入以下指令,然後上傳這個檔案,並選擇公開連結。

ffmpeg -i test.mp3 -ac 1 -ar 16000 test2.flac

storage

storage2

點進去公開連結後,拿到網址,更改 sync-request.json 的 languageCode 到 zh-TW,然後 audio 也要更改。例如網址為 https://storage.googleapis.com/A/B.flac ,就要改成 gs://A/B.flac 。如下:

test config

接著輸入以下指令。如果 FLAC 檔長度超過1分鐘,記得要更改紅色字的部分,。

curl -s -H "Content-Type: application/json" \
    -H "Authorization: Bearer ACCESS_TOKEN" \
    https://speech.googleapis.com/v1/speech:longrunningrecognize \
    -d @sync-request.json

回傳應該會如下

{
 "name": "1294243978595186795"
}

然後再 curl 一次

curl -H "Content-Type: application/json" \
   -H "Authorization: Bearer ACCESS_TOKEN" \
   https://speech.googleapis.com/v1/operations/1294243978595186795

就可以拿回資料,如下:

response

大功告成!不過可能是因為歌手一直唱的關係,斷詞沒有斷的很好 XD

計價方式

price

前 60 分鐘是免費的,而 61 分鐘以上每15秒鐘 0.006 美元,換算起來,300 美元大概可以玩個 200 個小時左右。

結語

以上就是這次的教學啦。首先,我先提到如何快速體驗 Cloud Speech API 的威力。接著我們使用 command line 了解如何使用 Clooud Speech API。最後,我們結合 Google 自己提供的 Cloud Storage API,辨識一首歌的歌詞。

Google Cloud API 是個非常好用的服務,可以在 APP,網站做任何形式的搭配來增進服務品質。如果有問題的話,歡迎底下留言,或者分享拿它來做什麼事囉!

更多GCP加值服務歡迎隨時聯繫GCP專門家,也可以至GCP技術部落格查看更多GCP 最新消息與技術內容!

關於我:

我是沒一村,專長和興趣是程式、主動投資、科技商業模式。可以參考我的書單和比較熱門的文章:

分享:

This Post Has 3 Comments

Leave a Reply