используйте ffmpeg в vba для изменения формата видео

адача

Возможно использовать речь в приложениях 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 Speech API:

-Технические документы SAPI 5.3

-Microsoft Speech API 5.4

 jsotola19 сент. 2017 г., 01:24
Вы не указали четко, что вы пытаетесь сделать. .... твой вопрос неопределенный. неясно, что вы на самом деле спрашиваете ... ваш код сохраняется в wav ... если вы не установите AudioOutputStream, то он выводится на динамики
 jsotola19 сент. 2017 г., 08:58
это файл WAV. если вы откроете полученный файл в текстовом редакторе, таком как Notepad ++, вы увидите, что байты сигнатуры файла (первые несколько байтов) соответствуют тем, которые используются файлами wav.
 jsotola19 сент. 2017 г., 09:24
Я должен сказать, что я чему-то научился у вас. я не знал, что VBA позволяет использовать номера строк
 T.M.19 сент. 2017 г., 08:23
Мой код работает и сохраняет аудиофайл с неопределенным типом файла, даже если он называется test.WAV. Я хочу сохранить в программно определенный тип файла и прошу помощи, как кодировать это, включая AudioOutputStream. Я переформулирую свой вопрос.
 jsotola19 сент. 2017 г., 09:20
SAPI генерирует только файлы WAV. .... использоватьffmpeg конвертировать в другие форматы ....ffmpeg.org .... пример использования в vba ...stackoverflow.com/questions/16899482/...

Ответы на вопрос(1)

Решение Вопроса

используйте ffmpeg для конвертации в другие форматы ...http://ffmpeg.org

пример использования в vba ...используйте ffmpeg в vba для изменения формата видео

Ваш ответ на вопрос