微軟TTS語音引擎編程入門_第1頁
微軟TTS語音引擎編程入門_第2頁
微軟TTS語音引擎編程入門_第3頁
微軟TTS語音引擎編程入門_第4頁
微軟TTS語音引擎編程入門_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領

文檔簡介

1、我們都使用過一些某某詞霸的英語學習工具軟件,它們大多都有朗讀的功能,其實這就是利用的 Windows的TT(Text To Speech)語音引擎。它包含在 WindowsSpeech SDK開發(fā)包中。我們也可以使用此開發(fā)包根據(jù)自己的需要開發(fā)程序。雞 啄米下面對TTS功能的軟件開發(fā)過程進行詳細介紹。一. SAPI SDK的介紹SAPI ,全稱是The Microsoft Speech API 。就是微軟的語音 API。由 Win dows Speech SDK提 供。Windows Speech SDK包含語音識別SR引擎和語音合成SS引擎兩種語音引擎。語音識別引擎用于識別語音命令,調(diào)用接口完

2、成某個功能,實現(xiàn)語音控制。 語音合成引擎用于將文字轉(zhuǎn)換成語音輸出。SAPI 包括以下幾類接口: Voice CommandAPI、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支持中英文混讀。二

4、. SAPI SDK的下載和安裝如果是在XP系統(tǒng)下進行開發(fā)則需要下載 Microsoft Speech SDK 5.1,下載地址為:c根據(jù)微軟下載說明,有幾點需要注意:1. 如果你想下載例子程序、文檔、SAPI和用于開發(fā)的美國英文語音引擎, 請下載 SpeechSDK51.exe2. 如果你想使用日文和簡體中文引擎用于開發(fā),請下載SpeechSDK51.exe和 SpeechSDK51LangPach.exe3. 如果你想將語音引擎集成到你的產(chǎn)品跟產(chǎn)品一起發(fā)布,就下載SpeechSDK51MSM.exe4. 如果你僅想獲得XP系統(tǒng)下的Mike和Mary語音,就下載Sp5TTIntXP.exe。

5、5. 如果你只想要文檔請下載sapi.chm。下載完成后可先安裝引擎SpeechSDK51.exe再安裝中文語言補丁包 SpeechSDK51La ngPach.exe這樣就可以使用其中的中 文男聲語音庫了。如果想 要在 Vista 或 Win7 系統(tǒng)下使用 Mike、Mary 和 Microsoft Simplified Chinese 中文男聲語音庫也可以下載相應的文件安裝。三. VC+環(huán)境配置如果是在XP系統(tǒng)下開發(fā),先安裝 SpeechSDK51.exe再安裝 SpeechSDK51LangPach.exe 假設安裝路徑為默認的 C:Program Files'Microsoft

6、 Speech SDK5.1,則接下來需要配置 VC+ 以 VS2010為 例, 在Solution Exporer中的工程名上點右鍵,在右鍵菜單中選擇properties,彈出Property Pages對話框,然后在左側(cè)樹中選擇節(jié)點”VC+Directories “,在右側(cè)列表的 Include Directories處輸入” C:Program FilesMicrosoft SpeechInclude “,Library Directories 處輸入” C :Programi386 “。VS2005 VS2008和 VC6.0 可以 按照各自的方法設置。最后,在程序中使用語音引擎以前包

7、含頭文件和lib庫:#in clude "sapi.h"#in clude "sphelper.h"#pragma comme nt(lib, "sapi.lib")如果是在Vista或者Win7系統(tǒng)中開發(fā)的話,因為頭文件和lib庫所在路 徑已默認附加到編譯器了,所以不需手動添加,直接在程序中包含頭文件和lib庫即可。四. SAPI接口的使用說明1. 基本朗讀過程的實現(xiàn)在使用語音引擎之前進行初始化:ISpVoice *pSpVoice; /重要 COM接 口:CoI ni tialize(NULL);/ COM初始化/ 獲取 ISpV

8、oice 接口CoCreateInstance(CLSID_SpVoice, NULL, CLSCTX_INPROC_SERVER, IID_ISpVoice, (void*)&pSpVoice);獲取到 ISpVoice 接口以后,我們就可以通過 pSpVoice 指針調(diào)用 SAPI 接口了。我們可以設置音量: pSpVoice->SetVolume(80); 。 SetVolume 的參數(shù)即 音量的范圍在 0 到 100 之間??梢赃@樣朗讀字符串內(nèi)容: pSpVoice->Speak(string, SPF_DEFAULT, NULL);。這樣string 里的內(nèi)容就會

9、被朗讀出來了,第二個參數(shù) SPF_DEFAUL表 示使用默認設置,包括同步朗讀的設置。異步朗讀可以設置成SPF_ASYNC同步 朗讀表示讀完 string 中的內(nèi)容, speak 函數(shù)才會返回,而異步朗讀則將字符串 送進去就返回,不會阻塞。使用完語音引擎后應執(zhí)行:pSpVoice->Release();:CoUninitialize();這樣資源被釋放,語音朗讀過程結(jié)束。以上就完成了一個簡單的語音合成朗讀的功能。2.ISpVoice 的成員函數(shù)雞啄米再簡單說明幾個 ISpVoice 接口的成員函數(shù):HRESULT Speak(LPCWSTR *pwcs, DWORD dwFlags, U

10、LONG *pulStreamNumber);用于讀取字符串pwcs里的內(nèi)容。參數(shù)pwcs為要朗讀的字符串。dwFlags 是用于控制朗讀方式的標志,具體意義可以查看文檔中的枚舉SPEAKFLAGSpulStreamNumber為輸出參數(shù),它指向本次朗讀請求對應的當前輸入流編號,每次朗讀一個字符串時都會有一個流編號返回,異步朗讀時使用。HRESULT SetRate( long RateAdjust);/設置朗讀速度,取值范圍: -10 到 10HRESULT GetRate(long *pRateAdjust);/獲取朗讀速度HRESULT SetVoice(ISpObjectToken *

11、pToken); /設置使用的語音庫HRESULT GetVoice(ISpObjectToken*ppToken); /獲取語音庫HRESULT Pause ( void );/暫停朗讀HRESULT Resume ( void ); / 恢復朗讀/ 在當前朗讀文本中根據(jù) lNumItems 的符號向前或者向后跳過指定數(shù) 量( lNumItems 的絕對值)的句子。HRESULT Skip(LPCWSTR *pItemType, long lNumItems, ULONG *pulNumSkipped);/播放WAV文件HRESULT SpeakStream(IStream *pStream

12、, DWORD dwFlags, ULONG *pulStreamNumber);/將聲音輸出到WAX文件HRESULT SetOutput(IUnknown *pUnkOutput,BOOL fAllowFormatChanges);HRESULT SetVolume(USHORT usVolume); / 設置音量,范圍: 0 到 100HRESULT GetVolume(USHORT *pusVolume); / 獲取音量HRESULT SetSyncSpeakTimeout(ULONG msTimeout); / 設置同步 朗讀超時時間,單位為毫秒HRESULT GetSyncSpea

13、kTimeout(ULONG *pmsTimeout); /獲取同步朗讀超時時間因為在同步朗讀時, speak 函數(shù)是阻塞的,如果語音輸出設備被其他程 序占用, 則 speak 則會一直等待, 所以最好設置好超時時間, 超時后 speak 函數(shù) 自行返回。3.使用XML朗讀在進行TTS開發(fā)時可以使用XML SAPI可以分析XML標簽,通過XML能 夠?qū)崿F(xiàn)一些 ISpVoice 的成員函數(shù)的功能。比如設置語音庫、音量、語速等。此 時speak函數(shù)的dwFlags參數(shù)要設置為包含 SPF_IS_XM。如:/ 選擇語音庫 Microsoft Sam pSpVoice->speak(L"

14、;<VOICE REQUIRED='NAME=Microsoft Sam'/> 雞啄米 ", SPF_DEFAULT | SPF_IS_XML, NULL);/設置音量vVOLUME LEVEL='90'> 雞啄米 v/VOLUME>/設置語言<lang langid='804'>雞啄米 </lang>804 代表中文,409代表英文。如果用函數(shù) SpGetLanguageFromToker獲 取語言時, 0x804 表示中文, 0x409 表示英文。五. Microsofot Speec

15、h SDK開發(fā)程序舉例:CoInitialize(NULL); / COM初始化CLSID CLSID_SpVoice;CLSIDFromProgID(_T("SAPI.SpVoice"), &CLSID_SpVoice);ISpVoice *pSpVoice = NULL;IEnumSpObjectTokens *pSpEnumTokens = NULL;/ 獲取 ISpVoice 接口if (FAILED(CoCreateInstance(CLSID_SpVoice, NULL,CLSCTX_INPROC_SERVER, IID_ISpVoice, (void*

16、)&pSpVoice)return -1;/列舉所有的語音token,可以通過pSpEnumToken指向的接口得到if (SUCCEEDED(SpEnumTokens(SPCAT_VOICES, NULL, NULL, &pSpEnumTokens)ISpObjectToken *pSpToken = NULL;/依次獲取每個 token 并朗讀字符串while (SUCCEEDED(pSpEnumTokens->Next(1, &pSpToken,NULL) && pSpToken != NULL) pSpVoice->SetVoice(

17、pSpToken); /設置當前語音 token 為 pSpTokenpSpVoice->Speak(L"Hello Word世界你好 ",SPF_DEFAULT, NULL); / 朗讀中文和英文的混合字符串 pSpToken->Release(); /釋放 tokenpSpEnumTokens->Release(); /釋放pSpE nu mToke n接口pSpVoice->Release();:CoUninitialize();雞啄米通過調(diào)試和朗讀效果得出結(jié)論,Vista和Win7上的MicrosoftLili 語音庫可以中英文混讀, Mic

18、rosoft Speech SDK 5.1 中的中文男聲 Microsoft Simplified Chinese 語音庫朗讀英文的時候只能一個字母一個字母 的讀,Anna Mike、Sam只能讀英文,中文略過。那么 Microsoft Simplified Chinese 、Anna Mike、Sam怎樣實現(xiàn)中英 文混讀呢?雞啄米告訴大家,可以修改字符串,加入XMLS記,將中文和英文分 別處理,上面程序中 的字符串可以修改為: L"<lang langid='409'>Hello Word</lang> <lang langid=

19、9;804'> 世界你好 </lang>" 。這樣當前語音庫不能讀 的語言會自動選擇同性別的其他語音來讀。六. 如何制作SAPI組件安裝包SAPI 開發(fā)的程序想要正常運行,必須保證計算機上安裝了 SAPI 組件, 所以我們的軟件發(fā)布時最好同時發(fā)布 SAPI核心組件的安裝程序,如果需要安裝 新的語言,還要有語言模塊。這就需要用到講 SDK下載時提到的SpeechSDK51MSM.exeSpeechSDK51MSM.exe 安裝完以后會生成三個文件夾: 1033、 1041和2052。 其中,1033下主要是用于英文的TTS和SR的.msm文件,1041下主要是用于日 文SR的.msm文件,2052下是用于中文TTS和SR的msm文件。我們要開發(fā)的是TTS程序,所以不需要SR的相關(guān)文件。英文TTS需要 包含 1033 下的這些文件:Sp5.msmSp5Intl.msm、Sp5itn.msm、Sp5TTInt.msm、 SpCommon.msm如果需要 Mike和Mary的語音還需Sp5TTIntXP.msm文件。如果 還要支持中文 TTS 則需再包含 2052下的文件: Sp5Intl.msm 、 Sp5itn.msm、 SP5TT

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論