語音合成及TTS,我們嘗試使用百度的語音合成技術 不過我發現
有一種缺點在於沒有離線包讓我有些很不舒服,可能是在線版的
原因微軟語音識別技術在Windows 2000是默認集成在系統組件中
或許我們不必去尋找新的語音合成替代方案,不過在線版一旦離線
只有Game Over,Hah不過有一點好處在於使用方便適合廣發開發
者,第二百度語音合成後的音頻流,妹子的聲音聽著較舒服 如果可
以在“卡哇伊”的萌妹妹,一定會更好,不過應該在解決一下聲音堅
硬的感覺或許會更好,雖然語音合成技術發展這麼多年 至少目前我
還沒有見到有什麼服務可以提供與人說話的自然感,始終會有些機
械干不過要談到“百度語音識別”與“光學識別 / OCR”的話,我不好意
思討論 但是支持國產的心是不變的,不過百度的文檔只有那麼簡潔
我可以斷定一定是百度的開發人員做的,Hah 我們又不是日本人與
印度人寫不好什麼注釋與文檔,人家那是寫作文 我們能造嗎?
首先你需要具備一個百度賬號,然後到新版百度語音的官方的首頁
http://yuyin.baidu.com/fc.html
屆時你會看到上面的兩種不同的技術,我們選擇語音合成技術
你可以試試快速體驗實際上它就是利用REST API實現的,不要糾結
我們點擊立即使用,如果是第一次使用百度的技術服務 那麼你需要
注冊開發者信息一次 爛填最好 免得百度把你的信息哪去賣錢,Hah.
如果是你已經登記信息,沒有創建應用你也無法使用百度的服務
你必須創建一個項目,在下圖如所示右上角“創建新應用”
那麼你會看見如下頁面,隨意填寫一個有效名稱確認即可 應用類別
也是隨意選擇,搞那麼清楚給百度干什麼 只是用服務 又不是賣信息
當應用創建完畢後你會看到如下的頁面,那麼你需要點擊開通服務
如果你沒有看到開通服務的標簽按鈕,可以回到百度語音支持首頁
選擇“百度語音合成”然後直接點擊“立即使用”
它會提示你選擇你的應用隨便選擇一個充數就可以,然後點擊下一步
如果提示如下頁面表示成功,你也可以直接點擊上圖右邊的“創建應用”
超鏈接快速開通服務
好吧,如果有需要百度幫助文檔的可以去“應用管理”頁面點擊你需
要的技術按鈕,會彈出如下的快捷菜單 選擇“下載SDK”即可,或者
從百度語音支持首頁選擇“百度語音合成”
點擊工具欄中的“相關下載”後我們選擇“REST API”選項卡,請參照下圖
點擊下載文檔,不過百度的文檔你或許看了可能會認為沒有看過 Hah。
現在我們需要去“獲取 Access Token”又是百度搞出來的新玩意
我們需要進入“應用管理”頁面中點擊包含“百度語音識別”技術的
應用,點擊“查看Key”圖形按鈕,會出現如下圖所示
我們現在需要提取兩個重要的參數及API Key、Secret Key話
說為什麼叫做“秘密Key”我估摸著是與密碼差不多的一個玩意
我們根據文檔拼接一個連接用於查詢自己的“Access Token”
https://openapi.baidu.com/oauth/2.0/token?
grant_type=client_credentials&
client_id=hINQTsu6G8C6XqwFvfbWT7Tm&
client_secret=8d5dbdb1b92bf945dca42f75c9eb1a69
解釋:
grant_type // 授權類型
client_id // API Key
client_secret // Secret Key
在浏覽中訪問了上面的連接會看到如上圖的文本Json代碼
我們什麼只需要“access_token / 訪問令牌”中的東西其他直
接刪刪刪 沒什麼太大的作用
下面開始用C#編寫使用百度語音合成服務的代碼,首先我們
需要知道,百度語音合成後輸出的音頻流是mp3不是wav所
以我們需要播放該音頻流則需要求助支持mp3音頻格式的媒體
庫,不過我們只是簡單的播放它的音頻而不是需要制作音樂播
放器,那麼使用mci是最方便與節省內存的一個辦法
[csharp] view plaincopy
從上面的代碼你或許會很疑惑為什麼或有那麼多常量那麼你看下圖
你便知道了,有些觀看文檔的朋友則不用
現在是不是發現與上述常量相同呢?它是“百度語音合成”所需要
的一些“必要或可選”的參數,我們在這裡使用POST的方式主要
在於使用GET方式顯得我有些太屌了,雖然文檔內是GET方式
[csharp] view plaincopy
.NET POST的方式無外乎那幾種,一般最常用的還是
.NET上層提供HttpWebRequest,不過百度語音識別
要求使用UTF-8的字符串POST,一定注意這裡的細節
否則你無法使用百度提供的服務,而對你返回錯誤代碼
想必這些細節作為一個開發人員應該是不會犯的
我們把POST後返回的HTTP流寫到文件,不過在上面
我說過百度是返回的mp3流,那麼你就需要以mp3的方
式寫到文件,如果使用BASS則不必它可以播放內存中
的媒體流,不過mci方式則不可以,如果你沒有看懂代碼
又急需要使用可以拷貝我的代碼 不過建議你能讀懂最好
依賴的命名空間:
[csharp] view plaincopy
到這裡基本結束了,百度語音合成 在C#中的使用並不是
你想象中的那麼困難,你沒有必要去糾結它的使用方法