我不得不承认,直到几天前我还在想同样的事情。这是解决方案,但是第一行的数字“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