使用谷歌Cloud Speech API將語音轉換爲文字

Google Cloud Speech API是由谷歌雲平臺提供的,利用機器學習技術將語音轉換爲文字的服務。這個API能識別超過80種語言和語言變體,包括中文、日語、英語甚至廣東話。此次,我總結了使用Google Cloud Speech API的基本流程。html

花5秒鐘試用Cloud Speech API吧

Cloud Speech API概覽頁,咱們能夠體驗將語音轉換爲文字的效果。只須要選擇一種語言便可開始使用,甚至不須要登陸谷歌帳號。(加載出來須要一些時間)編程

在項目中添加API

使用Cloud Speech API須要登陸谷歌雲平臺並申請免費試用,申請試用谷歌雲平臺的流程能夠參考這篇文章json

咱們假定你可以使用谷歌雲平臺,而且已經建立了一個項目,下面介紹如何把Cloud Speech API添加到項目中。segmentfault

點擊控制檯左上角的 打開導航欄,找到 API和服務api

在搜索框中鍵入 Speech 便可找到 Cloud Speech API瀏覽器

打開API頁面,點擊 啓用app

建立API密鑰

回到以前的頁面,選擇 憑據建立憑據API密鑰curl

立刻 API密鑰 就建立好了,雖然隨時都能在這個頁面查詢,但爲了方便起見,將其記錄下來備用吧,很快就要用到它。機器學習

限制密鑰 選項默認狀況下應該是「無」,此次只是試着使用API,保持默認「無」便可。編程語言

準備聲音文件

雖然有些麻煩,可是接下來咱們要準備聲音文件。Cloud Speech API沒辦法直接識別mp三、mp4中的聲音,咱們須要準備FLAC、WAV格式的音頻。並且僅支持單聲道音頻,因此通常都須要轉碼之類的工做。

詳細的聲音文件要求參見:AudioEncoding | Google Cloud Speech API

基於上述狀況,我讀了下面這段文稿,並製成了FLAC格式(單聲道)的聲音文件。是用手機麥克風進行錄音的,質量通常(´・ω・`) 是否能夠正確識別呢?

voice.flac

寄蜉蝣於天地,渺滄海之一粟。哀吾生之須臾,羨長江之無窮。挾飛仙以遨遊,抱明月而長終。

《赤壁賦》

將聲音文件上傳到Cloud Storage

若是要使用Cloud Speech API識別本地聲音文件,必須將音頻文件編碼爲base64,而後嵌入到稍後將建立的json請求文件中,這雖然可行但並不方便。若是你想使用這種方法,請參考:Embedding Base64 encoded audio | Google Cloud Speech API

咱們將使用另外一種方案,將聲音文件上傳到Google Cloud Storage。

點擊控制檯左上角的 打開導航欄,找到 存儲瀏覽器

點擊 建立存儲分區

輸入合適的 存儲分區名稱,後文將要用到。默認存儲類別選擇"Multi-Regional",Multi-Regional位置選擇"亞洲"。點擊 建立

點擊 上傳文件 ,上傳聲音文件,勾選 公開連接(該音頻將能被任何人訪問,請注意)

2018年10月18日更新:
剛看了一下,頁面有所改變,暫時沒找到公開單個音頻文件的方法。
你能夠這樣作,把整個存儲分區公開:
導航欄→存儲→瀏覽器→存儲分區最後有個選項,點開來→修改存儲分區權限→「添加成員」填「allUsers」,「角色」選「存儲對象查看者」→添加
注意:這樣該分區內全部內容均可能被任何人訪問到

另外,請記住上傳文件的 文件名 ,後文將用到。

將語音轉換爲文字

終於,可使用Cloud Speech API將語音轉換爲文字了。

首先,咱們新建一個json格式的請求文件(request.json)。文件名無特殊要求。

{
  "config":
  {
    "encoding":"FLAC",
    "languageCode":"cmn-Hans-CN"
  },

  "audio":
  {
    "uri":"gs://存儲分區名稱/文件名"
  }
}

注意3個地方:

cmn-Hans-CN :表示識別語言爲中文普通話。經常使用的還有American English (en-US)、British English (en-GB)、日本語(ja-JP)、廣東話(yue-Hant-HK)。更多語言支持能夠在Language Support | Google Cloud Speech API查詢。

存儲分區名稱 :剛纔是否有記錄下來呢?若是沒有記住能夠點擊控制檯左上角的 打開導航欄,找到 存儲瀏覽器 查看。

文件名 :存儲在Cloud Storage中的音頻文件名,能夠在存儲分區中查看。

最後,咱們使用curl命令(Windows平臺需另外安裝)向Cloud Speech API發出請求。

cd到json請求文件所在目錄。

curl -H "Content-Type: application/json" -d @ request.json "https://speech.googleapis.com/v1/speech:recognize?key= API密鑰"

注意2個加粗處:

request.json :json請求文件的文件名。

API密鑰 :替換爲你記錄下來的API密鑰。若是沒有記下來,能夠點擊控制檯左上角的 打開導航欄,找到 API和服務憑據 查看。

獲得結果:

能夠看到返回結果也是json格式的數據。"confidence"是置信度,越接近1準確性越高。

小結

第一次嘗試語音識別服務,獲得結果的時候很開心。或許有人會驚訝上例語音識別的準確性,但正如文章開頭所說「Cloud Speech API是利用機器學習技術將語音轉換爲文字的服務」,像上例中這樣的俗語、名著甚至是歌詞,準確率都出奇地高。若是你錄製一段平常語音交給Cloud Speech API識別,結果就不那麼滿意了。

最後,此次只是使用curl命令在LX終端得到了識別結果,下次將會總結如何在編程語言中使用Cloud Speech API。

感謝你閱讀文章!

相關文章
相關標籤/搜索