asp.net tts发音问题记录

报错信息:Cannot set voice. No matching voice is installed or the voice was disabled.

解决办法:

1. 确定安装了语言包(语言包不区分64bit,32bit,在这里下载);

2. 确保安装了语音引擎(区分bit64和bit32,点击这里下载(包含64bit和32bit)). 

3. 确定程序编译的目标平台与机器安装的tts平台保持一致;

4. 如果是web项目,请将应用程序池修改为:localsystem


=======================

web 和控制台发音 非常小的例子:点击打开链接

tts的安装包(64bit server2008)和语言包:点击打开链接


===========================================================网络上关于tts的文章备份===========================

最近一个web项目中,需要进行语音播报,将动态的文字转换为语音(TTS)存为WAV文件后通过web播放给用户。选择了微软所提供的SAPI (The Microsoft Speech API),只需要几行代码即可实现。主要的问题是选择一个好的中文语音库,让播放的声音更贴近真人。各个中文版操作系统自带的中文语音包如下(通过控制面板语音属性进行查看):

Windows 2000/XP/Vista:无

Windows 7中文版、Windows 2008中文版:Microsoft lili

Windows 8中文版、Windows 2012中文版:Microsoft Huihui Desktop

另外,还有很多厂商推出了自己的语音包,也有不少中文的,通过对比,发现Win8中文版开始提供的"Microsoft Huihui Desktop”(以下简称桌面版Huihui)效果最好。如果发布的web服务器是win8中文版或者server2012中文版,则可以直接通过代码使用这个语音包,但是对于其他操作系统或者是非中文的操作系统,想要使用这个语音包,就有不少问题了。主要有三个问题:

1.没有现成的语音包

实际上,微软并没有提供独立语音库下载安装,也就是说,并没有桌面版Huihui的语音包供安装。

解决方法:微软在另一套语音引擎中(Microsoft Speech Platform),也提供了很多语音包,其中一个"Microsoft Server Speech Text to Speech Voice (zh-CN, HuiHui)”(以下简称服务器版Huihui),这其实和桌面版Huihui在发音方面,完全一致(下载Microsoft Speech Platform - Runtime Languages (Version 11)其中的MSSpeech_TTS_zh-CN_HuiHui.msi安装即可)。可以使用这个语音包,来实现桌面版Huihui的播放效果。

注意:这个安装包执行一下就消失了,没有需要用户交互的操作界面,不用担心,已经安装好了。

2.语音引擎不一致

语音播放需要语音引擎的支持。实际上微软的语音引擎系统已经发展了好几代,从SAPI4、SAPI5(最后一版是5.4)发展到目前的Microsoft Speech Platform 11。对于SAPI,Windows XP内置了 TTS 语音引擎SAPI5.1,Vista、Server 2008内置SAPI5.3,Win7内置SAPI5.4,无需安装。而Microsoft Speech Platform 11目前没有内置于操作系统,需要下载Microsoft Speech Platform - Runtime (Version 11)安装来支持语音包,注意里面有x86和x64版,应该根据服务器的操作系统版本来确定安装。

3.修改注册表

实际上通过上述两个步骤安装语音引擎和语音包,有两个问题:一是无法在控制面板中看到安装好的语音包(32位系统C:\Windows\System32\Speech\SpeechUX\sapi.cpl,64位系统通过C:\Windows\SysWOW64\Speech\SpeechUX\sapi.cpl才能看到),二是使用SAPI的GetVoices()方法,也获取不到这个语音包,也就无法继续执行转换语音的功能。

这里的主要问题是这个语音包是供Microsoft Speech Platform 11使用的,其语音包的注册信息,和SAPI支持的语音包注册信息不在一个位置(主要是注册表信息),导致了控制面板和SAPI的代码无法获取到它支持的语音。查阅了很多国外的资料,发现可以通过修改注册表或修改服务器版Huihui语音包的安装程序来解决这个问题。

修改注册表法:

如果已经安装了原版服务器版Huihui,进入注册表,将

  • HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech Server
  • HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Speech Server

导出。然后用记事本打开这两个注册表文件,

  • 将全部“Speech Server\v11.0”替换为“Speech”
  • 将全部“Speech Server\\v11.0”替换为“Speech”

保存后,导入到注册表,如果提示错误,也没关系。

注意:32位系统只有第一个注册表位置。64位系统全都需要导出。

修改安装包法:

(1)安装orca软件

这是一个修改安装程序(msi)的软件。下载安装好后打开软件即可。

(2)修改语音包

orca-file-open,打开原版语音包,定位到Tables的Registry,如下图,将所有Speech Server\v11.0修改为Speech,然后File-Save即可。保存后的就是需改的语音包。




我修改好了一个,提供了下载

 

总结:

安装语音引擎Microsoft Speech Platform 11。

安装修改好的语音包MSSpeech_TTS_zh-CN_HuiHui.msi/或安装原版语音包然后修改注册表。

本文只介绍如果用SAPI引擎(命名空间System.Speech)来利用最新语音库,实际上,Microsoft Speech Platform 11这个语音引擎(命名空间Microsoft.Speech)具有更加强大的功能,比如支持VoiceXML,详细可参考

 

参考:

TTS正确使用Microsoft Speech Platform 11发音朗读的方法

http://www.xqbase.com/xqwizard/help_tts.htm


原文链接:

作者: lerit
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利.


  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值