使用SAPI.SpVoice输出到WAV文件时,结果听起来不同于直接输出到扬声器

我试图编写一个简单的脚本,通过Windows 7的文本到语音引擎(它有体面的安娜语音)运行一些txt文件,并产生wav文件。 但是,wav文件听起来不像我刚刚将它直接输出到扬声器那样好听。 我已经在两个完全不同的Windows 7系统上尝试过了。 有什么办法来解决这个问题?

脚本:

设置x = createobject(“SAPI.SpVoice”)
 '取消注释以下行输出到文件
 'set ofs = createobject(“SAPI.SpFileStream”)
打开“msg.wav”,3,vbFalse
 'set x.AudioOutputStream = ofs
 x.Speak“在2003年秋天,...”

我不得不承认,直到几天前我还在想同样的事情。 这是解决方案,但是第一行的数字“18”可能是特定于语音的。 我一直试图把这个高质量的版本保存到一个wav文件中,所以我终于跑遍了每一个数字(0-64),并且听取了所有的样本,直到我找到了正确的。

将下面的代码粘贴到记事本中,保存为“ SapiSomething .vbs”,运行,并希望它是你正在寻找的高品质的输出。 对于我而言,文件输出中的音质最终与将语音直接发送到扬声器时相同。

Const SapiFileType=18 ' Magic number, possibly voice specific (0 to 64) strText=Trim(InputBox("What do you want me to say?","listn to Sapi.SpFileStream.Format.Type Quality","")) If NOT len(strText)>0 Then WScript.Quit With CreateObject("Scripting.FileSystemObject") strFile=.BuildPath(.GetParentFolderName(WScript.ScriptFullName),"Sapi.SpFileStream.Format.Type_"&SapiFileType&".wav") If .FileExists(strFile) Then .DeleteFile strFile End With With CreateObject("Sapi.SpVoice") Set ss=CreateObject("Sapi.SpFileStream") ss.Format.Type=SapiFileType ss.Open strFile,3,False Set .AudioOutputStream=ss .Speak strText,8 .waituntildone(-1) ss.Close Set ss=Nothing End With With CreateObject("WMPlayer.OCX"):.settings.autoStart=True:.settings.volume=100:.URL=strFile:Do until .playState=1:Wscript.Sleep 200:Loop:End With 

SapiFileType在此处定义: http : //msdn.microsoft.com/en-us/library/ms720595%28v=vs.85%29.aspx

枚举18 = 16kHz 16Bit单声道