我正在尝试编写一个简单的脚本,通过Windows 7文本到语音引擎(具有体面的Anna语音)运行一些txt文件并生成wav文件。然而,wav文件听起来并不像我直接输出到扬声器那样好。我已经在两个完全不同的Windows 7系统上尝试了这个。有什么方法可以解决这个问题吗?
脚本:
set x = createobject("SAPI.SpVoice") ' Uncomment following lines to output to file 'set ofs = createobject("SAPI.SpFileStream") 'ofs.Open "msg.wav", 3, vbFalse 'set x.AudioOutputStream = ofs x.Speak "In the fall of 2003, ..."
答案 0 :(得分:2)
我不得不承认,直到几天前我才想知道同样的事情。这是解决方案,但第一行的数字“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?","Listen 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
答案 1 :(得分:2)
SapiFileType 在此处定义:http://msdn.microsoft.com/en-us/library/ms720595%28v=vs.85%29.aspx
Enum 18 = 16kHz 16Bit Mono