VBA - 保存SAPI讲话给定文件塔伊
问题描述:
这是可能的Office应用程序中使用语音(!)。我的目标是将MS SAPI语音保存到给定的文件类型。 AFAIK我的代码示例保存到WAV文件。
问题
我不知道,如果它可以只或者如果有必要做一些进一步的设置定义所需的文件类型的扩展名。 我没有找到使用VBA的适当解决方案。
问题 是否有代码示例如何精确定义想要的文件类型,例如: MP3,使用必要的设置(AudioStream)将给定的文本保存到此文件类型?
代码
在此代码示例我” M直接输出文件命名为WAV与充满着不确定性,如果这将是一个WAV文件。
我使用了晚期绑定,并且还包含对早期绑定的评论。
Private Sub Speech2WAV()
' Purpose: save text Voice object to file
' Idea: cf. .Net Article with some adaptions http://www.codeguru.com/vb/gen/vb_misc/samples/article.php/c13893/Text-to-Speech-Using-Windows-SAPI.htm
' Declare variables
Dim s As String
s = "Could you give me a code example to save this text to a defined file type?"
'' ----------------------------------------------
'' Early Binding - reference do MS Speech Object Lib (SAPI.dll) needed
'' ----------------------------------------------
' Dim oVoice As New SpeechLib.SpVoice
' Dim cpFileStream As New SpeechLib.SpFileStream
'' ----------------------------------------------
' ----------------------------------------------
' Late Binding
' ----------------------------------------------
Dim oVoice As Object
Dim cpFileStream As Object
Set oVoice = CreateObject("SAPI.SpVoice")
Set cpFileStream = CreateObject("SAPI.SpFileStream")
' ----------------------------------------------
10 cpFileStream.Open ThisWorkbook.Path & "\test.wav", _
SpeechLib.SpeechStreamFileMode.SSFMCreateForWrite, False
20 Set oVoice.AudioOutputStream = cpFileStream
30 Set oVoice.Voice = oVoice.GetVoices.Item(0)
40 oVoice.Volume = 100
50 oVoice.Speak s, _
SpeechLib.SpeechVoiceSpeakFlags.SVSFDefault
55 oVoice.Rate = 1 ' speed
56 oVoice.Volume = 100 ' volume
60 Set oVoice = Nothing
70 cpFileStream.Close
80 Set cpFileStream = Nothing
Exit Sub
OOPS: ' Error Handler
MsgBox "ERL=" & Erl & "|ErrNo=" & Err.Number & "|" & Err.Description, vbExclamation, "Error in Speec2WAV"
End Sub
你没有明确说明你正在尝试做的。 ....你的问题很模糊。目前还不清楚你实际上在问什么....你的代码保存为wav ...如果你没有设置AudioOutputStream,那么它输出到扬声器 – jsotola
我的代码工作并保存到不确定文件类型的音频文件,即使命名它test.WAV。我想保存到一个程序定义的文件类型,并寻求帮助如何编码,包括AudioOutputStream。我将重新说明我的问题。 –
这是一个wav文件。如果使用Notepad ++等文本编辑器打开生成的文件,则会看到文件签名字节(前几个字节)与wav文件使用的字符相匹配。 – jsotola