在上一篇([32]Cognitive Service語音服務相關介紹)介紹了Cognitive Service裡面對於語音相關的服務介紹,在接下來將會關注在語音轉文字加翻譯的服務上面。
上篇提到有兩個服務在做這件事情,分別為Speech Service以及Translator Speech API。個人使用經驗是Translator Speech API比較準確,因此在這篇將環繞在如何在C#使用Translator Speech API。
使用Translator Speech API
Translator Speech API的文件在這邊:文件位置,基本上可以從上面找到不同語言的Quickstarts, 稍後的C# Console程式也是基於這個Quickstart的内容。
要使用Translator Speech Api基本上需要:
- 從Azure建立Key
- 從文件瞭解API參數
- 建立一個C# Console整合功能
從Azure建立Key
和其他的Cognitive Service服務一樣,要使用服務要先在Azure建立出一個key。如果測試用,只需要Free版本即可。
首先進入到Azure的portal找到Translator Speech
的服務按下Create,也可以用這個
鏈接直接開啓建立畫面:
- Name - 輸入可以識別的名稱就好
- Pricing Tier - 測試用Free即可,有10小時可以用。其他等級以及費用可以在右邊展開的畫面看到
- Resource Group - 選擇要放在那個Resource Group
沒問題了之後,按下Create
,然後稍等一下服務建立出來之後在點進去。
看到一個常見的畫面,點選Keys
,記錄好其中一組即可:
從文件瞭解API參數
有了key之後,就可以使用Translator Speech API,但是怎麽呼叫這個API呢?
Translator Speech Api是一個WebSocket的服務,API的文件在這裡,在裡面有幾個重要的參數:
- from
- 輸入的來源語言
- to
- 文字要被翻譯的語言
- format
-
語音的格式,有支援
audio/wav
和audio/mp3
。預設是wav。wav檔案要求16 bit, single channel PCM with a sampling rate of 24kHz or 16kHz
當然,這邊列的只有幾個比較重要的參數,完整的參數還是要看文件裡面。
建立一個C# Console整合功能
整個程式碼有點長,因此這邊不會show code的部分,不過整個console程式拆解下來大概有:
- TranslateSpeech:這個方法在設定呼叫url的參數以及實際觸發送語音檔案以及從Translator Speech Api得到結果的部分
- Send:定義把要辨識的聲音檔案發送出去的方法
- Receive:定義從Translator Speech Api取得辨識結果的方法
要呼叫使用console之前需要修改static string key = "";
,把從Azure取得的key放到這個variable裡面。
測試的語音檔則是speak.wav
,這個語音内容是:What's the wather like?
剩下的應該還滿直覺容易懂,完整的程式碼請看: mhat-hotelbot/src/MHAT.TranslatorSpeechQuickStart/Program.cs
測試結果
接下來就把整個C# Console run起來,看到的結果如下圖:
從截圖可以發現:
- 語音轉文字成功
- 轉出的文字被翻譯成爲繁體中文
結語
這篇介紹了如何用程式碼的方式來呼叫Translator Speech Api。做出了一個C#的Console程式,并且可以看出識別的很成功。
在下一篇([34]賦予Chatbot用語音下指令以及翻譯的功能)將把這個服務整合到chatbot裡面。