从SAPI 5.1中提取中文发音引擎

文章介绍了在.Net中使用SAPI 5.1实现中文语音朗读(TTS)和语音识别(SR)。虽中文语音效果一般,但比部分国内引擎好。还探讨了仅用TTS时的安装问题,指出TTS有引擎即可,给出中文TTS文件下载及解压路径,还说明了注册表注册引擎的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  在《 在.Net中用TTS》文章中提到5.1版本的SAPI(Speech Application Programming Interface)可以支持中日英三国语言,后来在实验室电脑上试装了SAPI 5.1以及语言包(可以到 这里下载),发现的确可以支持中文的语音朗读(TTS)和语音识别(SR),以及日文的语音识别。虽然中文语音很不如人意,但也比国内一些号称流畅的语音引擎要好。
  不过如果仅仅使用TTS,难道也要从API SDK装到语言包吗(总共100多M)?如果要发布带语音朗读的软件,一定要用微软的再发布包(SDK Redistributables file)吗?小生经过反复的对比和研究,发现软件中SR占了很大的比重,而TTS只要有引擎就可以了。比如中文TTS,主要是一个SPTTSCHS.DLL文件,还有两个词素(Lexicon)文件。到 这里下载压缩文件,并按原路径信息解压到C:\Program Files\Common Files文件夹下(适用于XP和2003,Win2000不清楚)。当然,还需要在注册表中注册一下该引擎,下面是导出的相关部分:
Windows Registry Editor Version  5.00  

[ HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\Voices\Tokens\MSSimplifiedChineseVoice ]  
@
= " Microsoft Simplified Chinese "  
" CLSID " = " {AE2CF4DB-3697-45F4-9787-0FC5A37BEB36} "  
" 409 " = " Microsoft Simplified Chinese "  

[ HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Speech\Voices\Tokens\MSSimplifiedChineseVoice\Attributes ]  
" Language " = " 804 "  
" Vendor " = " Microsoft "  
" Name " = " Microsoft Simplified Chinese "  
" Gender " = " Male "  
" Age " = " Adult "  
把上面内容保存为ttscn.reg,双击导入该文件,在控制面板的“语音”(Speech)中应该可以看到语音选择中除了“Microsoft Sam”外又多了一项“Microsoft Simplified Chinese”。
  开始玩中文TTS吧!
Delphi中英文语音朗程序(控件及源码)调试OK 先安装Microsoft Speech SDK 5.1,这是微软的声音支持控件 前面安装不多做介绍,一步一步安装即可 安装完成后,需要加载Delphi控件 在Delphi IDE中选择菜单Project,Import Type Library—点击按钮Add(C:\Program Files\Common Files\Microsoft Shared\Speech\ sapi.dll)—点击按钮Install-在Install对话框中点击按钮OK—在Confirm对话框中点击按钮Yes—在对话框中点击按钮OK。至此,共19个控件被添加到Delphi组件板ActiveX页上。其中spvoice控件是我们要使用的 Microsoft Speech SDK 5.1下载地址:http://intraweb.5d6d.com/thread-280-1-1.html SpVoice详解 属性 描述 AlertBoundary 取得或设置停顿分界线。 AllowAudioOutputFormatChangesOnNextSet 设置是否允许声音自动调整到合适状态以适应其音频输出。 AudioOutput .取得或设置当前声音使用的的音频输出对象 AudioOutputStream 取得或设置当前声音使用的的音频输出流对象。 EventInterests 取得或设置当前声音返回的事件类型。 Priority 取得或设置声音的优先级。 Rate 取得或设置阅的速度。 Status 返回一个ISpeechVoiceStatus 对象用于显示当前阅和事件的状态 SynchronousSpeakTimeout 取得或设置一个时间间隔,用于标识多久未获得一个输出设备后,一个同步的Speak 和SpeakStream将终止,以毫秒计算。 Voice 取得或设置发音对象。 Volume 取得或设置声音的大小 。 方法 描述 DisplayUI 是否在控制面板中展示详细设置。 GetAudioOutputs 返回一个可用的音频输出标记。 GetVoices 返回一个可用的发音对象。 IsUISupported 决定是否能通过控制棉板的音频设置来控制。 Pause 暂停朗. Resume 恢复暂停,继续播放。 Skip 在当前输入的文本流中向前或向后跳一定距离再播放。 Speak 阅一个字符串。 SpeakCompleteEvent 得到一个朗完毕的时间句柄 SpeakStream 朗一个文本流或一个声音文件。 WaitUntilDone 阻塞进程,直到声音播放完毕或者超时。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值