隨著.net技術深入人心,越來越多的程序員開始轉到.net平臺上進行開發。然而,在新發布的.net speech sdk里面并沒有對中文語音進行支持,目前支持中文的speech sdk最高版本為windows平臺下的sapi 5.1(),本文介紹如何在.net平臺下利用sapi5.1開發中文語音應用程序。
--------------------------------------------------------------------------------
目錄:
1. sapi.51 sdk淺析以及安裝
2. 導入com對象到.net
3. 用c#開發中文tts應用程序示例
4. 結論
5. 參考文獻
--------------------------------------------------------------------------------
1. sapi.51 sdk淺析以及安裝
sapi sdk是微軟公司免費提供的語音應用開發工具包,這個sdk中包含了語音應用設計接口(sapi)、微軟的連續語音識別引擎(mcsr)以及微軟的語音合成(tts)引擎等等。目前的5.1版本一共可以支持3種語言的識別 (英語,漢語和日語)以及2種語言的合成(英語和漢語)。sapi中還包括對于低層控制和高度適應性的直接語音管理、訓練向導、事件、語法編譯、資源、語音識別(sr)管理以及tts管理等強大的設計接口。其結構如圖(1):
圖(1)
語音引擎則通過ddi層(設備驅動接口)和sapi(speechapi)進行交互,應用程序通過api層和sapi通信。通過使用這些api,用戶可以快速開發在語音識別或語音合成方面應用程序。
sapi5.1 sdk可以從微軟網站下載:http://www.microsoft.com/speech/download/sdk51/ 需要安裝程序的有speech sdk 5.1(68m)和5.1 language pack (81.5m)。
--------------------------------------------------------------------------------
2. 導入com對象到.net
sapi5.1的基于windows平臺的,通過com接口進行調用。在.net平臺下要應用sapi5.1,我們可以利用.net framework自帶的強大工具tlbimp.exe來把sapi sdk的com對象導入到.net中。tlbimp.exe產生一個管制的包裝類,管理客戶端可以使用它。包裝類管理實際的com對象的參考數。當包裝類當作收集的垃圾時,包裝類釋放掉它包裝的com對象。當然,你也可以在vs.net環境中通過從項目參考對話框選擇com對象,實現com對象的導入,這個過程也是通過tlbimp.exe來完成的。
下面演示如何導入sapi的com對象:
d:/program files/common files/microsoft shared/speech>tlbimp sapi.dll /out: dotnetspeech.dll
在安轉sdk以后,可以在d:/program files/common files/microsoft shared/speech/目錄下面找到sapi.dll,這里面定義了sapi的com對象,用tlbimp.exe工具將該dll轉換成.net平臺下的assembly---dotnetspeech.dll,轉換的過程會提示不少的警告(warning),但這部影響我們的開發,可以忽略。最后,我們可以用ildasm查看dotnetspeech.dll里面的對象。
--------------------------------------------------------------------------------
3. 用c#開發中文tts應用程序示例
下面通過一個實例來介紹如何利用c# 進行開發語音應用程序,開發環境為:
操作系統: windows 2000 中文版+ sp3
.net framework: 1.0.3705(英文版)
visual studio.net 7.0.9466(英文版)
首先,新建一個c#的windows application工程speechapp,在開發環境的右邊的解決方案管理器(solution explorer)中,添加dotnetspeech對象庫。右鍵點擊"reference"(參考),選擇"add reference"(添加參考),在彈出的文件選擇對話框中找到剛才生成的dotnetspeech.dll。
圖(2)
打開form1.cs代碼文件,在代碼開頭添加名字空間(注意大小寫)。
using dotnetspeech;
這樣就實現了sapi sdk的導入,下面我們就可以開始編寫應用代碼了。本示例演示如何把文本通過喇叭朗讀出來以及把文本轉化成語音信號(wave聲音文件),程序界面如圖(3):
以下為引用的內容: //朗讀 |
新聞熱點
疑難解答
圖片精選