VBA - 保存SAPI讲话给定文件塔伊

问题描述:

我的任务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 
+0

你没有明确说明你正在尝试做的。 ....你的问题很模糊。目前还不清楚你实际上在问什么....你的代码保存为wav ...如果你没有设置AudioOutputStream,那么它输出到扬声器 – jsotola

+0

我的代码工作并保存到不确定文件类型的音频文件,即使命名它test.WAV。我想保存到一个程序定义的文件类型,并寻求帮助如何编码,包括AudioOutputStream。我将重新说明我的问题。 –

+1

这是一个wav文件。如果使用Notepad ++等文本编辑器打开生成的文件,则会看到文件签名字节(前几个字节)与wav文件使用的字符相匹配。 – jsotola

sapi只生成wav文件。

使用的ffmpeg转换为其他格式...在VBA中使用的http://ffmpeg.org

例如... use ffmpeg in vba to change video format