




下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、我們都使用過一些某某詞霸的英語學(xué)習(xí)工具軟件,它們大多都有朗讀的功能, 其實(shí)這就是利用的的 TTS(Text To Speech)語音引擎。它包含在 WindowsSpeech SDK開發(fā)包中。我們也可以使用此開發(fā)包根據(jù)自己的需要開發(fā)程序。雞啄米下面 對(duì)TTS功能的過程進(jìn)行詳細(xì)介紹。一. SAPI SDK的介紹SAPI,全稱是 The Microsoft Speech API。就是微軟的語音 API。 由 Windows Speech SDK提供。Windows Speech SDK包含語音識(shí)別SR引擎和語音合成SS引擎兩 種語音引擎。 語音識(shí)別引擎用于識(shí)別語音命令, 調(diào)用接口完成某個(gè)功能, 實(shí)
2、現(xiàn)語 音控制。語音合成引擎用于將文字轉(zhuǎn)換成語音輸出。SAPI 包括以下幾類接口: Voice CommandsAPI、Voice Dictation API、Voice Text API 、Voice Telephone API 和 Audio Objects API 。我們要實(shí) 現(xiàn)語音合成需要的是 Voice Text API 。目前最常用的 WindowsSpeech SDK版本有三種:5.1、5.3和5.4。Windows Speech SDK5.1 版本支持 xp 系統(tǒng)和 server 2003 系統(tǒng), 需要下載安裝。XP系統(tǒng)默認(rèn)只帶了個(gè)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 默認(rèn)帶 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
4、支持中英文混讀。二. SAPI SDK的下載和安裝如果是在XP系統(tǒng)下進(jìn)行開發(fā)則需要下載 Microsoft Speech SDK5.1 ,下載地址為:。根據(jù)微軟下載說明,有幾點(diǎn)需要注意:1. 如果你想下載例子程序、文檔、SAPI和用于開發(fā)的美國(guó)英文語 音引擎,請(qǐng)下載 SpeechSDK51.exe。2. 如果你想使用日文和簡(jiǎn)體中文引擎用于開發(fā),請(qǐng)下載SpeechSDK51.exe和 SpeechSDK51LangPach.exe3. 如果你想將語音引擎集成到你的產(chǎn)品跟產(chǎn)品一起發(fā)布,就下載 SpeechSDK51MSM.exe4. 如果你僅想獲得 XP 系統(tǒng)下的 Mike 和 Mary 語音,就
5、下載 S p 5TTIntXP . ex e 。5. 如果你只想要文檔請(qǐng)下載 sapi.chm 。下載完成后可先安裝引擎SpeechSDK51.exe再安裝中文語言補(bǔ) 丁包 SpeechSDK51LangPach.exe 這樣就可以使用其中的中 文男聲語音庫了。 如果想要在 Vista 或 Win7 系統(tǒng)下使用 Mike、Mary 和 Microsoft Simplified Chinese 中文男聲語音庫也可以下載相應(yīng)的文件安裝。三. VC+環(huán)境配置如果是在XP系統(tǒng)下開發(fā),先安裝 SpeechSDK51.exe再安裝 SpeechSDK51LangPach.ex,e 假設(shè)安裝路徑為默認(rèn)的 C
6、:Program Files'MicrosoftSpeech SDK5.1,則接下來需要配置 VC+ 以為 例,在 SolutionExporer 中的工程名上點(diǎn)右鍵,在右鍵菜單中選擇 properties ,彈出 Property Pages對(duì)話框,然后在左側(cè)樹中選擇節(jié)點(diǎn)”VC+Directories “,在右側(cè)列表的Include Directories 處輸入” C:Program FilesMicrosoft Speech SDKInclude “, Library Directories 處輸入” C:Program FilesMicrosoft i386 “。VS2005
7、VS2008和VC6.0可以按照各自的方法設(shè)最后,在程序中使用語音引擎以前包含頭文件和 lib 庫:#include "sapi.h"#include "sphelper.h"#pragma comment(lib, "sapi.lib")如果是在Vista或者Win7系統(tǒng)中開發(fā)的話,因?yàn)轭^文件和lib 庫所在路徑已默認(rèn)附加到編譯器了, 所以不需手動(dòng)添加, 直接在程序中包含頭文 件和 lib 庫即可。四. SAPI接口的使用說明1. 基本朗讀過程的實(shí)現(xiàn)在使用語音引擎之前進(jìn)行初始化:ISpVoice *pSpVoice;/ 重要 COM
8、接 口:CoInitialize(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(str
9、ing,SPF_DEFAULT, NULL。;這樣string里的內(nèi)容就會(huì)被朗讀出來了,第二個(gè)參數(shù) SPF_DEFAUL表示使用默認(rèn)設(shè)置,包括同步朗讀的設(shè)置。異步朗讀可以設(shè)置成 SPF_ASYNC同步朗讀表示讀完string 中的內(nèi)容,speak函數(shù)才會(huì)返回,而異步 朗讀則將字符串送進(jìn)去就返回,不會(huì)阻塞。使用完語音引擎后應(yīng)執(zhí)行:pSpVoice->Release();:CoUninitialize();這樣資源被釋放,語音朗讀過程結(jié)束。以上就完成了一個(gè)簡(jiǎn)單的語音合成朗讀的功能。2.ISpVoice 的成員函數(shù)雞啄米再簡(jiǎn)單說明幾個(gè) ISpVoice 接口的成員函數(shù):HRESULT Spea
10、k(LPCWSTR *pwcs, DWORD dwFlags, ULONG *pulStreamNumber);用于讀取字符串pwcs里的內(nèi)容。參數(shù)pwcs為要朗讀的字符串。 dwFlags 是用于控制朗讀方式的標(biāo)志,具體意義可以查看文檔中的枚舉 SPEAKFLAGSulStreamNumber為輸出參數(shù),它指向本次朗讀請(qǐng)求對(duì)應(yīng)的當(dāng)前輸 入流編號(hào),每次朗讀一個(gè)字符串時(shí)都會(huì)有一個(gè)流編號(hào)返 回,異步朗讀時(shí)使用。HRESULTSetRate( long RateAdjust);/設(shè)置朗讀速度,取值范圍: -10 到 10HRESULTGetRate(long *pRateAdjust);/ 獲取朗讀
11、速度HRESULT SetVoice(ISpObjectToken *pToken);/設(shè)置使用的語音庫HRESULTGetVoice(ISpObjectToken* ppToken); / 獲取語音HRESULT Pause( void ); / 暫停朗讀HRESULT Resume( void );/ 恢復(fù)朗讀/ 在當(dāng)前朗讀文本中根據(jù) lNumItems 的符號(hào)向前或者向后跳 過指定數(shù)量( lNumItems 的絕對(duì)值)的句子。HRESULT Skip(LPCWSTR *pItemType, long lNumItems, ULONG *pulNumSkipped);/ 播放WAX文件HR
12、ESULT SpeakStream(IStream *pStream,DWORDdwFlags, ULONG*pulStreamNumber);/將聲音輸出到WAX文件HRESULT SetOutput(IUnknown *pUnkOutput,BOOL fAllowFormatChanges);HRESULTSetXolume(USHORTusXolume);/ 設(shè)置音量,范圍: 0 到 100HRESULT GetXolume(USHORT *pusXolume); / 獲取音量HRESULT SetSyncSpeakTimeout(ULONGmsTimeout); / 設(shè)置同步朗讀超時(shí)時(shí)
13、間,單位為毫秒HRESULTGetSyncSpeakTimeout(ULONG*pmsTimeout); / 獲取 同步朗讀超時(shí)時(shí)間因?yàn)樵谕嚼首x時(shí), speak 函數(shù)是阻塞的,如果語音輸出設(shè)備被 其他程序占用,則 speak 則會(huì)一直等待, 所以最好設(shè)置好超時(shí)時(shí)間, 超時(shí)后 speak 函數(shù)自行返回。3.使用XML朗讀在進(jìn)行TTS開發(fā)時(shí)可以使用XML SAPI可以分析XML標(biāo)簽,通過 XML能夠?qū)崿F(xiàn)一些ISpVoice的成員函數(shù)的功能。比如設(shè)置語音庫、音量、語速 等。此時(shí)speak函數(shù)的dwFlags參數(shù)要設(shè)置為包含SPF_IS_XML如:/ 選擇語音庫 Microsoft SampSpXo
14、ice->speak(L"<XOICE REQUIRED='NAME=MicrosofStam'/> 雞啄米", SPF_DEFAULT | SPF_IS_XML, NULL);/ 設(shè)置音量vVOLUME LEVEL='9O雞啄米 v/VOLUME>/ 設(shè)置語言<lang langid='804'> 雞啄米 </lang>804 代表中文, 409 代表英文。如果用函數(shù)SpGetLanguageFromToke獲取語言時(shí),0x804表示中文,0x409表示英文。五. Microsofot
15、 Speech SDK開發(fā)程序舉例:Col ni tialize(NULL);/ COM初始化CLSlD CLSlD_SpVoice; CLSlDFromProglD(_T("SAPl.SpVoice"), &CLSlD_SpVoice); lSpVoice *pSpVoice = NULL;lEnumSpObjectTokens *pSpEnumTokens = NULL;/ 獲取 lSpVoice 接口if (FAlLED(CoCreatelnstance(CLSlD_SpVoice, NULL, CLSCTX_lNPROC_SERVER, llD_lSpVoi
16、ce, (void*)&pSpVoice)return -1;/ 列舉所有的語音token ,可以通過pSpEnumTokenS旨向的接口 得到if (SUCCEEDED(SpEnumTokens(SPCAT_VOlCES, NULL, NULL, &pSpEnumTokens)lSpObjectToken *pSpToken = NULL; / 依次獲取每個(gè) token 并朗讀字符串 while (SUCCEEDED(pSpEnumTokens->Next(1&,pSpToken, NULL) &&pSpToken!= NULL) pSpVoic
17、e->SetVoi ce(pSpToken);/ 設(shè)置當(dāng)前語音 token 為 pSpTokenpSpVoice->Speak(L "Hello Word 世界你好 ", SPF_DEFAULTN,ULL);/ 朗讀中文和英文的混合字符串pSpToken->Release ();/ 釋放 tokenpSpEnumTokens->Release(); / 釋放 pSpEnumToken接口pSpVoice->Release();:CoUninitialize();雞啄米通過調(diào)試和朗讀效果得出結(jié)論, Vista 和 Win7 上的 Microsof
18、t Lili 語音庫可以中英文混讀, Microsoft Speech SDK 5.1 中的中文 男聲 Microsoft Simplified Chinese 語音庫朗讀英文的時(shí)候只能一個(gè)字母一個(gè) 字母的讀,Anna Mike、Sam只能讀英文,中文略過。那么 Microsoft Simplified Chinese 、Anna Mike、Sam怎樣實(shí) 現(xiàn)中英文混讀呢?雞啄米告訴大家,可以修改字符串,加入XML標(biāo)記,將中文和英文分別處理, 上面程序中 的字符串可以修改為: L"<lang langid='409'>Hello Word</lang&
19、gt; <lang langid='804'> 世界你好 </lang>" 。這樣當(dāng)前語音庫不能讀 的語言會(huì)自動(dòng)選擇同性別的其他語音來讀。六. 如何制作 SAPI 組件安裝包SAPI開發(fā)的程序想要正常運(yùn)行,必須保證計(jì)算機(jī)上安裝了 SAPI 組件,所以我們的軟件發(fā)布時(shí)最好同時(shí)發(fā)布 SAPI核心組件的安裝程序,如果需 要安裝新的語言,還要有語言模塊。這就需要用到講 SDK下載時(shí)提到的SpeechSDK51MSM.exeSpeechSDK51MSM.e>安裝完以后會(huì)生成三個(gè)文件夾: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.m§n如果需要 Mike 和 Mary 的語音還需 Sp5TTIntXP.msm文件。如果還要支持中文 TTS則需再包含2052下的文件: Sp5Intl.msm 、 Sp5itn.msm、
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 45199-2025家禽遺傳資源瀕危等級(jí)評(píng)定
- 包車旅游有合同范本
- 出售店鋪合同范本
- 農(nóng)村護(hù)欄轉(zhuǎn)讓合同范本
- 買賣協(xié)議車子合同范本
- 冰品購(gòu)銷合同范本
- 區(qū)塊鏈認(rèn)證合同范本
- 修建電站合同范本
- 企業(yè)合同范本清單
- 單位保密合同范本
- 橋梁鋼筋制作安裝施工方案
- 2025年語言文字工作計(jì)劃
- 金融類競(jìng)聘主管
- 《國(guó)防動(dòng)員準(zhǔn)備》課件
- 2024年688個(gè)高考英語高頻詞匯
- 商標(biāo)合資經(jīng)營(yíng)合同
- 第六講當(dāng)前就業(yè)形勢(shì)與實(shí)施就業(yè)優(yōu)先戰(zhàn)略-2024年形勢(shì)與政策
- 2024-2030年中國(guó)家政服務(wù)行業(yè)經(jīng)營(yíng)策略及投資規(guī)劃分析報(bào)告
- 2025年護(hù)士資格證考核題庫及答案
- 湖北省黃岡市2023-2024學(xué)年五年級(jí)上學(xué)期數(shù)學(xué)期中試卷(含答案)
評(píng)論
0/150
提交評(píng)論