VBA - 将 SAPI 语音保存为 GIVEN 文件类型?

VBA - Save SAPI speech to a GIVEN file type?

我的任务

可以在 Office 应用程序中使用语音。我的目标是将 MS SAPI 语音保存为给定的文件类型。 AFAIK 我的代码示例保存到 WAV 文件。

问题

我不知道,是否可以只定义想要的文件类型扩展名,或者是否有必要做一些进一步的设置。 我没有使用 VBA 找到合适的解决方案。

问题 是否有代码示例如何精确定义所需的文件类型,例如MP3,使用必要的设置 (AudioStream) 将给定文本保存到此文件类型?

代码

在此代码示例中,我将输出文件直接命名为 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

备注

感谢@ashleedawg 我可以推荐以下 MS 演讲链接 API:

-White papers SAPI 5.3

-Microsoft Speech API 5.4

sapi 只生成 wav 文件。

使用ffmpeg转换成其他格式...http://ffmpeg.org

vba 中的用法示例 ... use ffmpeg in vba to change video format