症状:winxp系统声卡安装正确,其余声音正确,控制面板语音打不开,所有语音有关功能不能使用,小说阅读器不能朗读,金山词霸不发音
原因:有些GHOST版winxp没有启动语音引擎
解决办法:inf文件重新安装,文件“sapi5.inf”
根据网上提示,将微软TTS5.1语音引擎(中文).msi 改名为 chnSpeech.msi
安装,什么也没提示,一闪就过,这说明其实TTS已安装过了,如果你下载的是MsTTS51.msi 大小6.50M你会发现他提示已安装.
说明问题不在TTS上面,问题依旧没有解决
重装系统吧,偶系统还有很多东西呢,坚持继续找...
最终解决办法
在网上找了好久,参考数据库连接需要Mdac.inf安装,最终使用inf文件重新安装解决问题。
打开“C:\Windows\Inf”,右键单击文件“sapi5.inf”,选择“安装”,提示“提示插入系统盘……”,没系统盘的话点“浏览”,从TTS解压的目录中选择需要的系统文件。
按照提示找到文件,右键安装‘提示插入系统盘,安装完即可.
说明:没有安装盘,把下载到的 [微软TTS5.1语音引擎(中文).msi]改名为微软TTS5.1语音引擎(中文).rar 用RAR解压,
改成提示中对应的文件名即可.
C:\Program Files\Common Files\Microsoft Shared\Speech\sapi.cpl
C:\Program Files\Common Files\SpeechEngines\Microsoft\Lexicon\1033\r1033tts.lxa
大功告成.
#include<sapi.h>文件是微软语音识别引擎开发库,因此需要下载安装这个开发包下载Microsoft Speech SDK5.1 以及中文语言包,即可。
下载地址: 暂时没有上传 这两个安装包
下载之后,防止其他中文路径导致无法识别,尽量按照默认C磁盘来安装此文件,安装之后,再进行相关路径设置:
在Toos->Options->Directories中的#include files和Library files中分别增加C:\Program Files\Microsoft Speech SDK 5.1\Include和C:\Program Files\Microsoft Speech SDK 5.1\Lib\i386
帮你查阅了一下网上的资料,相关的信息很少,我把关键的帮你汇总了一下,希望对你使用TTS有一定的帮助![转载] 本文讲述使用微软TTS5.1语音引擎(中文)实现文本阅读和音频输出为WAV完美解决方案。
网上很多文章说的是要安装SAPI.51 SDK,而这个东西有好几十M,并且用起来比较复杂。微软官方网站上是这样写的:SAPI5.1 SDK可以从微软网站下载:http://www.microsoft.com/speech/download/sdk51/ 需要安装程序的有Speech SDK 5.1(68M)和5.1 Language Pack (81.5M)。本文使用不到2M的东西实现文语转换,可以说是有关TTS的完美版本!
功能:
进行中文文本的阅读,可以将阅读的语音输出为WAV音频。
实现平台:
Microsoft Visual Studio 2005
微软TTS5.1语音引擎(中文)
所需要的东西:
用TlbImp从SAPI.51 SDK中导出的DotNetSpeech.dll(160K)
微软TTS5.1语音引擎(中文).msi(1.55M)
tlbimp在sdk的bin里面。
如果你自己安装了SAPI.51 SDK,可以使用这个命令自己导出DotNetSpeech.dll
Tlbimp sapi.dll /out: DotNetSpeech.dll(出现错误不用管,不影响使用)
安装微软TTS5.1语音引擎(中文).msi,打开"控制面板",打开"语音"配置项目,在"文字-语音转换"的"语音选择"组合框中选择"Microsoft Simplified Chinese",这样才可以读出中文。如果要读英文,要选择"Microsoft Sam"。
使用Microsoft Visual Studio 2005新建项目,添加引用,引用DotNetSpeech.dll。
命名空间:
using DotNetSpeech
读出文本框中的中文:
SpeechVoiceSpeakFlags spFlags = SpeechVoiceSpeakFlags.SVSFlagsAsync
SpVoice voice = new SpVoice()
voice.Speak(textBox1.Text, spFlags)
将文本框中中文的读音保存为WAV文件:
SpeechVoiceSpeakFlags spFlags = SpeechVoiceSpeakFlags.SVSFlagsAsync
SpVoice voice = new SpVoice()
SaveFileDialog dialog = new SaveFileDialog()
dialog.Filter = "All files (*.*)|*.*|wav files (*.wav)|*.wav"
dialog.Title = "保存WAV文件"
dialog.FilterIndex = 2
dialog.RestoreDirectory = true
if (dialog.ShowDialog() == DialogResult.OK)
{
SpeechStreamFileMode spFileMode = SpeechStreamFileMode.SSFMCreateForWrite
SpFileStream spFileStream = new SpFileStream()
spFileStream.Open(dialog.FileName, spFileMode, false)
voice.AudioOutputStream = spFileStream
voice.Speak(textBox1.Text, spFlags)
voice.WaitUntilDone(1000)
上面两句一定要写上,否则产生的文件没有声音
WaitUntilDone的后面的smTimeout是一个int型
spFileStream.Close()
参考:
在C#中使用微软AGENT之TTS:
http://www.51cto.com/art/200509/4372.htm
http://www.51cto.com/art/200509/4372_1.htm
一个例子
http://group.qqread.com/thread-44790-1-3.html
相关的信息整理了整理,本想弄好睡觉,结果弄了一个多小时也没搞好,不好意思了~希望对你有所帮助。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)