微软TTS语音引擎编程入门.docx

上传人:sk****8 文档编号:4231241 上传时间:2019-10-06 格式:DOCX 页数:7 大小:39.51KB
下载 相关 举报
微软TTS语音引擎编程入门.docx_第1页
第1页 / 共7页
微软TTS语音引擎编程入门.docx_第2页
第2页 / 共7页
微软TTS语音引擎编程入门.docx_第3页
第3页 / 共7页
微软TTS语音引擎编程入门.docx_第4页
第4页 / 共7页
微软TTS语音引擎编程入门.docx_第5页
第5页 / 共7页
点击查看更多>>
资源描述

1、我们都使用过一些某某词霸的英语学习工具软件,它们大多都有朗读的功能,其实这就是利用的Windows的TTS(Text To Speech)语音引擎。它包含在Windows Speech SDK开发包中。我们也可以使用此开发包根据自己的需要开发程序。鸡啄米下面对TTS功能的软件开发过程进行详细介绍。一.SAPI SDK的介绍 SAPI,全称是The Microsoft Speech API。就是微软的语音API。由Windows Speech SDK提供。 Windows Speech SDK包含语音识别SR引擎和语音合成SS引擎两种语音引擎。语音识别引擎用于识别语音命令,调用接口完成某个功能,

2、实现语音控制。语音合成引擎用于将文字转换成语音输出。 SAPI包括以下几类接口:Voice Commands API、Voice Dictation API、Voice Text API、Voice Telephone API和Audio Objects API。我们要实现语音合成需要的是Voice Text API。目前最常用的Windows Speech SDK版本有三种:5.1、5.3和5.4。 Windows Speech SDK 5.1版本支持xp系统和server 2003系统,需要下载安装。XP系统默认只带了个Microsoft Sam英文男声语音库,想要中文引擎就需要安装Win

3、dows Speech SDK 5.1。 Windows Speech SDK 5.3版本支持Vista系统和Server 2008系统,已经集成到系统里。Vista和Server 2003默认带Microsoft lili中文女声语音库和Microsoft Anna英文女声语音库。 Windows Speech SDK 5.4版本支持Windows7系统,也已经集成到系统里,不需要下载安装。Win7系统同样带了Microsoft lili中文女声语音库和Microsoft Anna英文女声语音库。Microsoft lili支持中英文混读。二.SAPI SDK的下载和安装 如果是在XP系统下

4、进行开发则需要下载Microsoft Speech SDK 5.1,下载地址为:http:/ 根据微软下载说明,有几点需要注意: 1.如果你想下载例子程序、文档、SAPI和用于开发的美国英文语音引擎,请下载SpeechSDK51.exe。 2.如果你想使用日文和简体中文引擎用于开发,请下载SpeechSDK51.exe和SpeechSDK51LangPach.exe。 3.如果你想将语音引擎集成到你的产品跟产品一起发布,就下载SpeechSDK51MSM.exe。 4.如果你仅想获得XP系统下的Mike和Mary语音,就下载Sp5TTIntXP.exe。 5.如果你只想要文档请下载sapi.c

5、hm。 下载完成后可先安装引擎SpeechSDK51.exe,再安装中文语言补丁包SpeechSDK51LangPach.exe,这样就可以使用其中的中 文男声语音库了。如果想要在Vista或Win7系统下使用Mike、Mary和Microsoft Simplified Chinese中文男声语音库也可以下载相应的文件安装。三.VC+环境配置 如果是在XP系统下开发,先安装SpeechSDK51.exe再安装SpeechSDK51LangPach.exe,假设安装路径为默认的 C:Program FilesMicrosoft Speech SDK 5.1,则接下来需要配置VC+,以VS2010

6、为 例,在Solution Exporer中的工程名上点右键,在右键菜单中选择properties,弹出Property Pages对话框,然后在左侧树中选择节点”VC+Directories“,在右侧列表的Include Directories处输入”C:Program FilesMicrosoft Speech SDK 5.1Include“,Library Directories处输入”C:Program FilesMicrosoft Speech SDK 5.1libi386“。VS2005、VS2008和VC6.0可以按照各自的方法设置。 最后,在程序中使用语音引擎以前包含头文件和l

7、ib库: #include sapi.h #include sphelper.h #pragma comment(lib, sapi.lib)如果是在Vista或者Win7系统中开发的话,因为头文件和lib库所在路径已默认附加到编译器了,所以不需手动添加,直接在程序中包含头文件和lib库即可。 四.SAPI接口的使用说明 1.基本朗读过程的实现在使用语音引擎之前进行初始化: ISpVoice *pSpVoice; / 重要COM接口 :CoInitialize(NULL); / COM初始化/ 获取ISpVoice接口 CoCreateInstance(CLSID_SpVoice, NULL,

8、 CLSCTX_INPROC_SERVER, IID_ISpVoice, (void*)&pSpVoice);获取到ISpVoice接口以后,我们就可以通过pSpVoice指针调用SAPI接口了。 我们可以设置音量:pSpVoice-SetVolume(80);。SetVolume的参数即音量的范围在0到100之间。 可以这样朗读字符串内容:pSpVoice-Speak(string, SPF_DEFAULT, NULL);。这样string里的内容就会被朗读出来了,第二个参数SPF_DEFAULT表示使用默认设置,包括同步朗读的设置。异步朗读可以设置成 SPF_ASYNC。同步朗读表示读完s

9、tring中的内容,speak函数才会返回,而异步朗读则将字符串送进去就返回,不会阻塞。 使用完语音引擎后应执行: pSpVoice-Release(); :CoUninitialize(); 这样资源被释放,语音朗读过程结束。 以上就完成了一个简单的语音合成朗读的功能。2.ISpVoice的成员函数 鸡啄米再简单说明几个ISpVoice接口的成员函数: HRESULT Speak(LPCWSTR *pwcs, DWORD dwFlags, ULONG *pulStreamNumber); 用于读取字符串pwcs里的内容。参数pwcs为要朗读的字符串。dwFlags是用于控制朗读方式的标志,具

10、体意义可以查看文档中的枚举 SPEAKFLAGS。pulStreamNumber为输出参数,它指向本次朗读请求对应的当前输入流编号,每次朗读一个字符串时都会有一个流编号返 回,异步朗读时使用。 HRESULT SetRate( long RateAdjust); / 设置朗读速度,取值范围:-10到10 HRESULT GetRate(long *pRateAdjust); / 获取朗读速度 HRESULT SetVoice(ISpObjectToken *pToken); / 设置使用的语音库 HRESULT GetVoice(ISpObjectToken* ppToken); / 获取语音

11、库 HRESULT Pause ( void ); / 暂停朗读 HRESULT Resume ( void ); / 恢复朗读 / 在当前朗读文本中根据lNumItems的符号向前或者向后跳过指定数量(lNumItems的绝对值)的句子。 HRESULT Skip(LPCWSTR *pItemType, long lNumItems, ULONG *pulNumSkipped); / 播放WAV文件 HRESULT SpeakStream(IStream *pStream, DWORD dwFlags, ULONG *pulStreamNumber); / 将声音输出到WAV文件 HRESU

12、LT SetOutput(IUnknown *pUnkOutput,BOOL fAllowFormatChanges); HRESULT SetVolume(USHORT usVolume); / 设置音量,范围:0到100 HRESULT GetVolume(USHORT *pusVolume); / 获取音量 HRESULT SetSyncSpeakTimeout(ULONG msTimeout); / 设置同步朗读超时时间,单位为毫秒 HRESULT GetSyncSpeakTimeout(ULONG *pmsTimeout); / 获取同步朗读超时时间 因为在同步朗读时,speak函数

13、是阻塞的,如果语音输出设备被其他程序占用,则speak则会一直等待,所以最好设置好超时时间,超时后speak函数自行返回。 3.使用XML朗读 在进行TTS开发时可以使用XML,SAPI可以分析XML标签,通过XML能够实现一些ISpVoice的成员函数的功能。比如设置语音库、音量、语速等。此时speak函数的dwFlags参数要设置为包含SPF_IS_XML。如: / 选择语音库Microsoft SampSpVoice-speak(L鸡啄米, SPF_DEFAULT | SPF_IS_XML, NULL); / 设置音量 鸡啄米 / 设置语言 鸡啄米 804代表中文,409代表英文。如果用

14、函数SpGetLanguageFromToken获取语言时,0x804表示中文,0x409表示英文。五.Microsofot Speech SDK开发程序举例 :CoInitialize(NULL); / COM初始化 CLSID CLSID_SpVoice; CLSIDFromProgID(_T(SAPI.SpVoice), &CLSID_SpVoice); ISpVoice *pSpVoice = NULL; IEnumSpObjectTokens *pSpEnumTokens = NULL; / 获取ISpVoice接口 if (FAILED(CoCreateInstance(CLSID

15、_SpVoice, NULL, CLSCTX_INPROC_SERVER, IID_ISpVoice, (void*)&pSpVoice) return -1; / 列举所有的语音token,可以通过pSpEnumTokens指向的接口得到 if (SUCCEEDED(SpEnumTokens(SPCAT_VOICES, NULL, NULL, &pSpEnumTokens) ISpObjectToken *pSpToken = NULL; / 依次获取每个token并朗读字符串 while (SUCCEEDED(pSpEnumTokens-Next(1, &pSpToken, NULL) &

16、 pSpToken != NULL) pSpVoice-SetVoice(pSpToken); / 设置当前语音token为pSpToken pSpVoice-Speak(LHello Word 世界你好, SPF_DEFAULT, NULL); / 朗读中文和英文的混合字符串 pSpToken-Release(); / 释放token pSpEnumTokens-Release(); / 释放pSpEnumTokens接口 pSpVoice-Release();:CoUninitialize(); 鸡啄米通过调试和朗读效果得出结论,Vista和Win7上的Microsoft Lili语音库可

17、以中英文混读,Microsoft Speech SDK 5.1中的中文男声Microsoft Simplified Chinese语音库朗读英文的时候只能一个字母一个字母的读,Anna、Mike、Sam只能读英文,中文略过。 那么Microsoft Simplified Chinese、Anna、Mike、Sam怎样实现中英文混读呢?鸡啄米告诉大家,可以修改字符串,加入XML标记,将中文和英文分别处理,上面程序中 的字符串可以修改为:LHello Word 世界你好。这样当前语音库不能读的语言会自动选择同性别的其他语音来读。六.如何制作SAPI组件安装包 SAPI开发的程序想要正常运行,必须保

18、证计算机上安装了SAPI组件,所以我们的软件发布时最好同时发布SAPI核心组件的安装程序,如果需要安装新的语言,还要有语言模块。这就需要用到讲SDK下载时提到的SpeechSDK51MSM.exe。 SpeechSDK51MSM.exe安装完以后会生成三个文件夹:1033、1041和2052。其中,1033下主要是用于英文的TTS和SR 的.msm文件,1041下主要是用于日文SR的.msm文件,2052下是用于中文TTS和SR的msm文件。我们要开发 的是TTS程序,所以不需要SR的相关文件。英文TTS需要包含1033下的这些文件:Sp5.msm、Sp5Intl.msm、Sp5itn.msm

19、、 Sp5TTInt.msm、SpCommon.msm,如果需要Mike和Mary的语音还需Sp5TTIntXP.msm文件。如果还要支持中文TTS 则需再包含2052下的文件:Sp5Intl.msm、Sp5itn.msm、SP5TTINTr.msm。 仍以VS2010为例,安装包制作的具体过程如下: 1.选择File-new-project,弹出New Project对话框,在左侧面板中的Installed Templates下展开Other Project Types,继续展开起子节点Setup and Deployment,最后选择Visual Studio Installer,右侧面板

20、中选择Setup Project,最后在对话框下部,设置好名称和路径点“OK”就生成工程了。对于没有集成Visual Studio Installer的老版本的编译器,可以在网上下载Microsoft Visual Studio Installer。2.在Solution Explorer中的工程名上点右键,然后在右键菜单中选择Add-Merge Module,最后在弹出的对话框中选择上面提到的所要包含的.msm文件即可。 3.编译运行工程,若是Debug模式则会在工程目录的Debug文件夹下生成相应的msi文件,若是Release模式则会在Release目录下声称msi文件。 SAPI安装包到此就制作好了,我们也可以将我们的应用程序exe文件也一同打到安装包里。这样运行安装程序后就会将应用程序和SAPI组件都装到目标主机里,应用程序可以直接运行。 关于Windows TTS语音引擎编程入门的知识鸡啄米就总结完了,大家可以继续探索,开发出各种有趣的语音程序。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 重点行业资料库 > 自然科学

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。