VS2010使用TTS

时间:2024-05-21 16:34:38

最近在写纯车牌停车管理系统,需要用到语音合成功能.

目前最常用的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;

可参考:http://blog.****.net/wzy198852/article/details/8717338