[應用] 中文語音合成+語音辨識 以百度的AI開放平台 in Python 開發

語音技術介紹

        語音合成 (Text-To-Speech) 和語音辨識 (Speech Recognition) 的技術存在數十年,不過近年來將這語音的技術應用在蘋果的Siri和亞馬遜的echo設備裡。對開發者而言,語音技術最麻煩的是各種語言、不特定人的字庫辭庫訓練,光要建立這龐大且精準的訓練庫就不是短時間能完成的。最近,發現百度(Baidu)提供中文語音合成和語音辨識的服務,網站如下:AI開放平台,裡面不只有語音技術服務,還有其他技術。調用百度各項技術的SDK,建立網路連結後,連上AI開放平台,便能取得合成的結果或者辨識的結果。另外,SDK也有提供各種程式語法的範例,如:Java、C++、C#、Python、Node.js ... 等等,以滿足各類程式開發者的需求。底下我以Python語法為例,開發一個中文語音合成+語音辨識的測試程式。

合成技術的開發

        在語音合成的過程,我們輸入中文字,如果調用成功,百度平台會返回一個語音binary,這時我們再儲存成wave file或者mp3格式,然後撥放這個音檔。語音辨識的使用正好相反,我們必須提供一個wave file傳給百度平台,如果成功,它會返回辨識的結果。因此,在python開發時,我們需要能錄音和播放音檔的模組,稱為pyaudio,安裝這個模組的方式如下圖所示。安裝後,還需要安裝百度的模組,透過 pip 方式安裝,"pip install baidu-aip"。
圖一:安裝 pyaudio 模組

        使用百度的開放平台之前,需要註冊一個百度帳號,然後在這帳號裡創建一個應用,如圖二所示,在這應用裡面我們可自行選擇想要載入的技術。下圖的MySpeechTest是我所創建的一個語音應用,這個應用選用了百度的語音合成和語音識別。一旦創建,在這個欄位上會出現三個參數:AppID、API Key和Secret Key數值,之後調用SDK,我們需要使用這三個參數。
圖二:註冊一個百度的應用連結

        圖三是以python語法所開發的語音合成和語音識別,圖的右半邊為python源代碼,圖的左半邊為合成與測試辨識的結果,我分別將上傳百度並取得合成音檔所花費的時間記錄下來,還有上傳音檔並且辨識過程需要花多少時間也記錄下來。
圖三:中文的語音合成和語音辨識的測試代碼

實現展示

        底下的影片是測試的過程,隨機說出一段語音,再傳給百度平台識別,返回後將結果顯示出來。測試了三段語音,辨識的結果沒有出錯。
影片:程式測試的過程

移植到樹莓派

        Python語言的好處就是方便移植到不同平台上面,上面測試的環境是Windows系統,同樣的程式碼也可以樹莓派 (Linux系統) 上面執行。在樹莓派上面,同樣要安裝 pyaudio 和 baidu-aip 模組,如下圖。

留言

Awei0541006說…
可以請問相關的程式碼出處嗎? 若能提供參考會非常感謝 想作為範本測試
漢亞科技說…
上百度的網站先下載SDK,同時註冊帳號取得token後,依據百度的範例程式改寫。

此網誌的熱門文章

[筆記] ESP32 在 VS Code 開發環境的編譯與除錯

[筆記] Raspberry Pi 樹莓派的軟體開發

[應用] 在 ESP32 Audio 開發板的 VoIP 範例

[應用] 藍芽 BLE client/server 架構:BLE remote controller

[筆記] Visual Studio 遠端偵錯的設定步驟

[模組] 無線資料傳輸:nRF905 和 nRF24L01 (以 Arduino 為控制器)

[應用] STM32 DFU (Device Firmware Upgrade)