2017-09-18 5 views
1

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 
+0

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

+0

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. –

+1

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

Répondre