3

我正在尝试编写一个简单的脚本来通过 Windows 7 文本到语音引擎(具有体面的 Anna 声音)运行一些 txt 文件并生成 wav 文件。但是,wav 文件听起来不如我直接将它输出到扬声器时那么好。我已经在两个完全不同的 Windows 7 系统上进行了尝试。有什么办法可以补救吗?

脚本:

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

3 回答 3

3

SapiFileType is defined here: http://msdn.microsoft.com/en-us/library/ms720595%28v=vs.85%29.aspx

Enum 18 = 16kHz 16Bit Mono

于 2013-07-29T13:35:49.697 回答
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
于 2012-05-28T05:23:51.277 回答
0

少一点1990。

# run in powershell
$voice = New-Object -ComObject SAPI.SpVoice
$file = New-Object -ComObject SAPI.SpFileStream
$file.Open('d:\ok.wav', 3)
$voice.AudioOutputStream = $file
$voice.Speak('hi there')
$file.Close()
于 2021-09-24T17:02:17.513 回答