機器學習

[機器學習] 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 最新消息與技術內容!

[機器學習] Google Cloud Platform (1) Cloud Speech API 介紹與應用 有 “ 4 則迴響 ”

  1. 您好,想請問一下,如果是要應用在line的話,就是說用line語音輸入,丟到dialogflow來作語音轉文字處理,要怎麼作?有否資料可以參考,謝謝!

發表迴響

Please log in using one of these methods to post your comment:

WordPress.com 標誌

您的留言將使用 WordPress.com 帳號。 登出 /  變更 )

Google photo

您的留言將使用 Google 帳號。 登出 /  變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 /  變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 /  變更 )

連結到 %s