Mon GroupeVBA - Enregistrer la parole SAPI à un fichier donné Tye
Il est possible d'utiliser la parole dans les applications Office (!). Mon objectif est de sauvegarder le discours MS SAPI dans un type de fichier donné. AFAIK mon exemple de code enregistre dans un fichier WAV.
Problème
Je ne sais pas, s'il est possible de définir l'extension du type de fichier recherché uniquement ou s'il est nécessaire de faire quelques réglages plus loin. Je n'ai pas trouvé de solution appropriée en utilisant VBA.
Question Existe-t-il un exemple de code pour définir précisément un type de fichier voulu, par ex. MP3, enregistrer un texte donné à ce type de fichier en utilisant les paramètres nécessaires (AudioStream)?
code
Dans cet exemple de code I'M nommer le fichier de sortie directement au format WAV avec pleine incertitude si ce sera un fichier WAV.
J'ai utilisé la liaison tardive et j'ai également inclus un commentaire sur la liaison précoce.
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
vous n'avez pas dit clairement ce que vous essayez de faire. .... votre question est vague. on ne sait pas ce que vous demandez réellement .... votre code enregistre en wav ... si vous ne définissez pas AudioOutputStream, alors il sort en haut-parleurs – jsotola
Mon code fonctionne et enregistre dans un fichier audio d'un type de fichier incertain, même si le nommant test.WAV. Je veux sauvegarder dans un type de fichier défini par programme et je demande de l'aide pour coder cela incluant AudioOutputStream. Je vais reformuler ma question. –
c'est un fichier wav. Si vous ouvrez le fichier résultant avec un éditeur de texte tel que Notepad ++, vous verrez que les octets de signature de fichier (premiers octets) correspondent à ceux qui sont utilisés par les fichiers wav. – jsotola