Machine Learning(一):Cloud Speech API 介紹與實作

GCP 機器學習(1) – Cloud Speech API 應用實例

作者:沒一村
本文轉載自:沒一村生活點滴

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

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

快速測試

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

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

螢幕快照 2017-11-11 下午2.50.23

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

螢幕快照 2017-11-11 下午2.54.05

雖然 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,如下:

螢幕快照 2017-11-11 下午4.13.30

接著,要把 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 應該會是長這個樣子:

螢幕快照 2017-11-11 下午6.34.29

換個自己的語音檔

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

螢幕快照 2017-11-11 下午5.29.04

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

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

螢幕快照 2017-11-11 下午6.42.40

螢幕快照 2017-11-11 下午6.42.46

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

螢幕快照 2017-11-11 下午6.32.08

接著輸入以下指令。如果 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

就可以拿回資料,如下:

螢幕快照 2017-11-11 下午6.32.53

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

計價方式

螢幕快照 2017-11-11 下午2.57.56

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

結語

以上就是這次的教學啦。首先,我先提到如何快速體驗 Cloud Speech API 的威力。接著我們使用 command line 了解如何使用 Clooud Speech API。最後,我們結合 Google 自己提供的 Cloud Storage API,辨識一首歌的歌詞。Google Cloud API 是個非常好用的服務,可以在 APP,網站做任何形式的搭配來增進服務品質。

這一系列的文章將帶您跨過 GCP 機器學習領域的實作門檻,下一篇會為您介紹:Cloud Natural Language API想瞭解更多更多 GCP 的內容嗎?趕快聯絡 GCP 專門家了解更多資訊吧。

連絡我們