版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、Windows TTS開發(fā)介紹開篇介紹:我們都使用過一些某某詞霸的英語學(xué)習(xí)工具軟件,它們大多都有朗讀的功能,其實這就是利用的Windows的TTS(Text To Speech)語音引擎。它包含在Windows Speech SDK開發(fā)包中。我們也可以使用此開發(fā)包根據(jù)自己的需要開發(fā)程序。雞啄米下面對TTS功能的軟件開發(fā)過程進行詳細介紹。一.SAPI SDK的介紹 SAPI,全稱是The Microsoft Speech API。就是微軟的語音API。由Windows Speech SDK提供。 Windows Speech SDK包含語音識別SR引擎和語音合成SS引擎兩種語音引擎。語音識別引擎
2、用于識別語音命令,調(diào)用接口完成某個功能,實現(xiàn)語音控制。語音合成引擎用于將文字轉(zhuǎn)換成語音輸出。 SAPI包括以下幾類接口:Voice Commands API、Voice Dictation API、Voice Text API、Voice Telephone API和Audio Objects API。我們要實現(xiàn)語音合成需要的是Voice Text API。目前最常用的Windows Speech SDK版本有三種:5.1、5.3和5.4。 Windows Speech SDK 5.1版本支持xp系統(tǒng)和server 2003系統(tǒng),需要下載安裝。XP系統(tǒng)默認只帶了個Microsoft Sam英文
3、男聲語音庫,想要中文引擎就需要安裝Windows Speech SDK 5.1。 Windows Speech SDK 5.3版本支持Vista系統(tǒng)和Server 2008系統(tǒng),已經(jīng)集成到系統(tǒng)里。Vista和Server 2003默認帶Microsoft lili中文女聲語音庫和Microsoft Anna英文女聲語音庫。 Windows Speech SDK 5.4版本支持Windows7系統(tǒng),也已經(jīng)集成到系統(tǒng)里,不需要下載安裝。Win7系統(tǒng)同樣帶了Microsoft lili中文女聲語音庫和Microsoft Anna英文女聲語音庫。Microsoft lili支持中英文混讀。二.SAPI
4、 SDK的下載和安裝 如果是在XP系統(tǒng)下進行開發(fā)則需要下載Microsoft Speech SDK 5.1,下載地址為:/download/en/details.aspx?id=10121。 根據(jù)微軟下載說明,有幾點需要注意: 1.如果你想下載例子程序、文檔、SAPI和用于開發(fā)的美國英文語音引擎,請下載SpeechSDK51.exe。 2.如果你想使用日文和簡體中文引擎用于開發(fā),請下載SpeechSDK51.exe和SpeechSDK51LangPach.exe。 3.如果你想將語音引擎集成到你的產(chǎn)品跟產(chǎn)品一起發(fā)布,就下載SpeechSDK51MS
5、M.exe。 4.如果你僅想獲得XP系統(tǒng)下的Mike和Mary語音,就下載Sp5TTIntXP.exe。 5.如果你只想要文檔請下載sapi.chm。 下載完成后可先安裝引擎SpeechSDK51.exe,再安裝中文語言補丁包SpeechSDK51LangPach.exe,這樣就可以使用其中的中 文男聲語音庫了。如果想要在Vista或Win7系統(tǒng)下使用Mike、Mary和Microsoft Simplified Chinese中文男聲語音庫也可以下載相應(yīng)的文件安裝。三.VC+環(huán)境配置 如果是在XP系統(tǒng)下開發(fā),先安裝SpeechSDK51.exe再安裝SpeechSDK51LangPach.ex
6、e,假設(shè)安裝路徑為默認的 C:Program FilesMicrosoft Speech SDK 5.1,則接下來需要配置VC+,以VS2010為 例,在Solution Exporer中的工程名上點右鍵,在右鍵菜單中選擇properties,彈出Property Pages對話框,然后在左側(cè)樹中選擇節(jié)點”VC+Directories“,在右側(cè)列表的Include Directories處輸入”C:Program FilesMicrosoft Speech SDK 5.1Include“,Library Directories處輸入”C:Program FilesMicrosoft Speec
7、h SDK 5.1libi386“。VS2005、VS2008和VC6.0可以按照各自的方法設(shè)置。 最后,在程序中使用語音引擎以前包含頭文件和lib庫: #include sapi.h #include sphelper.h #pragma comment(lib, sapi.lib)如果是在Vista或者Win7系統(tǒng)中開發(fā)的話,因為頭文件和lib庫所在路徑已默認附加到編譯器了,所以不需手動添加,直接在程序中包含頭文件和lib庫即可。 四.SAPI接口的使用說明 1.基本朗讀過程的實現(xiàn)在使用語音引擎之前進行初始化: ISpVoice *pSpVoice; / 重要COM接口 :CoInitia
8、lize(NULL); / COM初始化/ 獲取ISpVoice接口 CoCreateInstance(CLSID_SpVoice, NULL, CLSCTX_INPROC_SERVER, IID_ISpVoice, (void*)&pSpVoice);獲取到ISpVoice接口以后,我們就可以通過pSpVoice指針調(diào)用SAPI接口了。 我們可以設(shè)置音量:pSpVoice-SetVolume(80);。SetVolume的參數(shù)即音量的范圍在0到100之間。 可以這樣朗讀字符串內(nèi)容:pSpVoice-Speak(string, SPF_DEFAULT, NULL);。這樣string里的內(nèi)容就
9、會被朗讀出來了,第二個參數(shù)SPF_DEFAULT表示使用默認設(shè)置,包括同步朗讀的設(shè)置。異步朗讀可以設(shè)置成 SPF_ASYNC。同步朗讀表示讀完string中的內(nèi)容,speak函數(shù)才會返回,而異步朗讀則將字符串送進去就返回,不會阻塞。 使用完語音引擎后應(yīng)執(zhí)行: pSpVoice-Release(); :CoUninitialize(); 這樣資源被釋放,語音朗讀過程結(jié)束。 以上就完成了一個簡單的語音合成朗讀的功能。2.ISpVoice的成員函數(shù) 雞啄米再簡單說明幾個ISpVoice接口的成員函數(shù): HRESULT Speak(LPCWSTR *pwcs, DWORD dwFlags, ULONG
10、 *pulStreamNumber); 用于讀取字符串pwcs里的內(nèi)容。參數(shù)pwcs為要朗讀的字符串。dwFlags是用于控制朗讀方式的標(biāo)志,具體意義可以查看文檔中的枚舉 SPEAKFLAGS。pulStreamNumber為輸出參數(shù),它指向本次朗讀請求對應(yīng)的當(dāng)前輸入流編號,每次朗讀一個字符串時都會有一個流編號返 回,異步朗讀時使用。 HRESULT SetRate( long RateAdjust); / 設(shè)置朗讀速度,取值范圍:-10到10 HRESULT GetRate(long *pRateAdjust); / 獲取朗讀速度 HRESULT SetVoice(ISpObjectToke
11、n *pToken); / 設(shè)置使用的語音庫 HRESULT GetVoice(ISpObjectToken* ppToken); / 獲取語音庫 HRESULT Pause ( void ); / 暫停朗讀 HRESULT Resume ( void ); / 恢復(fù)朗讀 / 在當(dāng)前朗讀文本中根據(jù)lNumItems的符號向前或者向后跳過指定數(shù)量(lNumItems的絕對值)的句子。 HRESULT Skip(LPCWSTR *pItemType, long lNumItems, ULONG *pulNumSkipped); / 播放WAV文件 HRESULT SpeakStream(IStre
12、am *pStream, DWORD dwFlags, ULONG *pulStreamNumber); / 將聲音輸出到WAV文件 HRESULT SetOutput(IUnknown *pUnkOutput,BOOL fAllowFormatChanges); HRESULT SetVolume(USHORT usVolume); / 設(shè)置音量,范圍:0到100 HRESULT GetVolume(USHORT *pusVolume); / 獲取音量 HRESULT SetSyncSpeakTimeout(ULONG msTimeout); / 設(shè)置同步朗讀超時時間,單位為毫秒 HRESU
13、LT GetSyncSpeakTimeout(ULONG *pmsTimeout); / 獲取同步朗讀超時時間 因為在同步朗讀時,speak函數(shù)是阻塞的,如果語音輸出設(shè)備被其他程序占用,則speak則會一直等待,所以最好設(shè)置好超時時間,超時后speak函數(shù)自行返回。 3.使用XML朗讀 在進行TTS開發(fā)時可以使用XML,SAPI可以分析XML標(biāo)簽,通過XML能夠?qū)崿F(xiàn)一些ISpVoice的成員函數(shù)的功能。比如設(shè)置語音庫、音量、語速等。此時speak函數(shù)的dwFlags參數(shù)要設(shè)置為包含SPF_IS_XML。如: / 選擇語音庫Microsoft SampSpVoice-speak(L雞啄米, SP
14、F_DEFAULT | SPF_IS_XML, NULL); / 設(shè)置音量 雞啄米 / 設(shè)置語言 雞啄米 804代表中文,409代表英文。如果用函數(shù)SpGetLanguageFromToken獲取語言時,0x804表示中文,0x409表示英文。五.Microsofot Speech SDK開發(fā)程序舉例 :CoInitialize(NULL); / COM初始化 CLSID CLSID_SpVoice; CLSIDFromProgID(_T(SAPI.SpVoice), &CLSID_SpVoice); ISpVoice *pSpVoice = NULL; IEnumSpObjectTokens
15、 *pSpEnumTokens = NULL; / 獲取ISpVoice接口 if (FAILED(CoCreateInstance(CLSID_SpVoice, NULL, CLSCTX_INPROC_SERVER, IID_ISpVoice, (void*)&pSpVoice) return -1; / 列舉所有的語音token,可以通過pSpEnumTokens指向的接口得到 if (SUCCEEDED(SpEnumTokens(SPCAT_VOICES, NULL, NULL, &pSpEnumTokens) ISpObjectToken *pSpToken = NULL; / 依次獲
16、取每個token并朗讀字符串 while (SUCCEEDED(pSpEnumTokens-Next(1, &pSpToken, NULL) & pSpToken != NULL) pSpVoice-SetVoice(pSpToken); / 設(shè)置當(dāng)前語音token為pSpToken pSpVoice-Speak(LHello Word 世界你好, SPF_DEFAULT, NULL); / 朗讀中文和英文的混合字符串 pSpToken-Release(); / 釋放token pSpEnumTokens-Release(); / 釋放pSpEnumTokens接口 pSpVoice-Rele
17、ase();:CoUninitialize(); 雞啄米通過調(diào)試和朗讀效果得出結(jié)論,Vista和Win7上的Microsoft Lili語音庫可以中英文混讀,Microsoft Speech SDK 5.1中的中文男聲Microsoft Simplified Chinese語音庫朗讀英文的時候只能一個字母一個字母的讀,Anna、Mike、Sam只能讀英文,中文略過。 那么Microsoft Simplified Chinese、Anna、Mike、Sam怎樣實現(xiàn)中英文混讀呢?雞啄米告訴大家,可以修改字符串,加入XML標(biāo)記,將中文和英文分別處理,上面程序中 的字符串可以修改為:LHello Wo
18、rd 世界你好。這樣當(dāng)前語音庫不能讀的語言會自動選擇同性別的其他語音來讀。六.如何制作SAPI組件安裝包 SAPI開發(fā)的程序想要正常運行,必須保證計算機上安裝了SAPI組件,所以我們的軟件發(fā)布時最好同時發(fā)布SAPI核心組件的安裝程序,如果需要安裝新的語言,還要有語言模塊。這就需要用到講SDK下載時提到的SpeechSDK51MSM.exe。 SpeechSDK51MSM.exe安裝完以后會生成三個文件夾:1033、1041和2052。其中,1033下主要是用于英文的TTS和SR 的.msm文件,1041下主要是用于日文SR的.msm文件,2052下是用于中文TTS和SR的msm文件。我們要開發(fā) 的是TTS程序,所以不需要SR的相關(guān)文件。英文TTS需要包含1033下的這些文件:Sp5.msm、Sp5Intl.msm、Sp5itn.msm、 Sp5TTInt.msm、SpCommon.msm,如果需要Mike和Mary的語音還需Sp5TTIntXP.msm文件。如果還要支持中文TTS 則需再包含2052下的文件:Sp5Intl.msm、Sp5itn.msm、SP5
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 獸醫(yī)胸腔超聲培訓(xùn)課件
- 2026年及未來5年市場數(shù)據(jù)中國大型購物中心行業(yè)市場發(fā)展數(shù)據(jù)監(jiān)測及投資方向研究報告
- 養(yǎng)老院投訴處理與改進制度
- 企業(yè)內(nèi)部資料管理制度
- 養(yǎng)雞肉雞技術(shù)培訓(xùn)課件
- 2026福建三明市公安局三元分局招聘警務(wù)輔助人員24人參考題庫附答案
- 2026福建泉州市面向國防科技大學(xué)選優(yōu)生選拔引進考試備考題庫附答案
- 2026遼寧朝陽市教育局直屬學(xué)校赴高校招聘教師(第二批次)102人備考題庫附答案
- 保密及知識產(chǎn)權(quán)保護制度
- 2026陜西省面向北京科技大學(xué)招錄選調(diào)生備考題庫附答案
- 單位內(nèi)部化妝培訓(xùn)大綱
- 高校行政管理流程及案例分析
- 高效節(jié)水灌溉方式課件
- 基坑安全工程題庫及答案解析
- 《人間充質(zhì)基質(zhì)細胞來源細胞外囊泡凍干粉質(zhì)量要求》(征求意見稿)
- 中潤盛和(孝義)新能源科技 孝義市杜村鄉(xiāng)分散式微風(fēng)發(fā)電項目可行性研究報告
- 鄉(xiāng)鎮(zhèn)村監(jiān)會培訓(xùn)課件
- 入團申請書教學(xué)課件
- 松下微波爐NN-DS581M使用說明書
- 2026年中國農(nóng)業(yè)銀行秋季校園招聘即將開始考試筆試試題(含答案)
- 2025年江蘇省招聘警務(wù)輔助人員考試真題及答案
評論
0/150
提交評論