VS2010使用TTS
最近在写纯车牌停车管理系统,需要用到语音合成功能.
目前最常用的Windows Speech SDK版本有三种:5.1、5.3和5.4。
Windows Speech SDK 5.1版本支持xp系统和server 2003系统,需要下载安装。XP系统默认只带了个Microsoft Sam英文男声语音库,想要中文引擎就需要安装Windows 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系统下进行开发则需要下载Microsoft Speech SDK 5.1,下载地址为:http://www.microsoft.com/download/en/details.aspx?id=10121。
根据微软下载说明,有几点需要注意:
1.如果你想下载例子程序、文档、SAPI和用于开发的美国英文语音引擎,请下载SpeechSDK51.exe。
2.如果你想使用日文和简体中文引擎用于开发,请下载SpeechSDK51.exe和SpeechSDK51LangPach.exe。
3.如果你想将语音引擎集成到你的产品跟产品一起发布,就下载SpeechSDK51MSM.exe。
4.如果你仅想获得XP系统下的Mike和Mary语音,就下载Sp5TTIntXP.exe。
5.如果你只想要文档请下载sapi.chm。
下载完成后可先安装引擎SpeechSDK51.exe,再安装中文语言补丁包SpeechSDK51LangPach.exe,这样就可以使用其中的中文男声语音库了。如果想要在Vista或Win7系统下使用Mike、Mary和Microsoft Simplified Chinese中文男声语音库也可以下载相应的文件安装。
参考: http://www.jizhuomi.com/software/135.html
因为VS2010比VC6.0检查严格,所以装好后并不能直接在VS2010里面使用
需要修改sphelper.h文件中如下内容:
Line 769
修改前: const ulLenVendorPreferred = wcslen(pszVendorPreferred);
修改后: const unsigned long ulLenVendorPreferred = wcslen(pszVendorPreferred);
Line 1418
修改前: static CoMemCopyWFEX(const WAVEFORMATEX * pSrc, WAVEFORMATEX ** ppCoMemWFEX)
修改后: static HRESULT CoMemCopyWFEX(const WAVEFORMATEX * pSrc, WAVEFORMATEX ** ppCoMemWFEX)
Line 2372
修改前: for (const WCHAR * psz = (const WCHAR *)lParam; *psz; psz++) {}
修改后: const WCHAR * psz; for (psz = (const WCHAR *)lParam; *psz; psz++) {}
Line 2559
修改前: SPPHONEID* pphoneId = dsPhoneId;
修改后: SPPHONEID* pphoneId = (SPPHONEID*)((WCHAR *)dsPhoneId);
Line 2633
修改前: pphoneId += wcslen(pphoneId) + 1;
修改后: pphoneId += wcslen((const wchar_t *)pphoneId) + 1;