Moi, c'est pas trop mon truc, mais j'ai trouvé cela par hasard et comme j'ai trouvé l'application pas mal.
Et que sur le forum il y en a peut-être des intéressé alors j'ai écris ceci pour pour montrer ne serait-ce que pour donner des idées et d'autres manières de faire.
Sans parler du fait que c'est une source de téléchargement pour les langues, et "spchapi.exe" et quelques autres sujet...
Ce qui est à mon avis toujours éclairant pour un sujet même connus.
c'est bien pour ça que je t'ai dit "Merci quand meme"
pour commencer tu va chercher la librairie PureTTS ici :
http://www.purearea.net/pb/download/use ... reTTS3.zip
voici "Virginie" (l'ideal etant d'avoir installé la voie Virginie (la seule Sapi5 gratuite...))
la voix Virginie est dispo ici :
http://faq.sodeasoft.com/dwn/RSSolo4French.zip
(je fourni cette voix dans ma lib Speak)
les voix Pierre et véronique (Sapi5) ici :
http://www.microsoft.com/reader/fr/downloads/pc.mspx
mon code ouvre une fenetre dans lequel tu pourra choisir une voix presente dans ton ordi
tu pourra regler le pitch d'une voix Sapi4 et la vitesse de diction (sapi4-5)
ce programme permet de lire a haute voix un texte qui se trouve dans le press papier....
tu sélectionne un texte tu fait "Copier" ou Ctrl+C ou ctrl+x
puis tu presse le bouton LIRE de Virginie .....
si tous ce passe bien , et que les voix sont installer, Virginie
doit commencer par dire bonjour , au demarrage du prg...
elle le ferra avec la voix par défaut (peut etre Sam)
mais ensuite avec la voix choisi (si plusieurs sont installées)
..........
Virginie ici presente , gere les Smiley , je m'en sert pour lire les article du forum
lorsque je suis en train de faire autre chose....
la gestion des Smileys , empeche que ceux ci soit prononcés par Virginie...
les liens pour récupérer les différentes voix Sapi4-5 son dispo sur notre Forum en cherchant un peu on trouve
mon prg te donne un exemple de l'exploitation de la Librairie PureTTS
depuis Nico nous a donné la clef pour se passer de cette librairie pour les Voix Sapi5 (listing present ici aussi...)
j'ai moi meme créé une petite librairie dispo ici :
http://michel.dobro.free.fr/download.php?view.23
voir ici le sujet du forum :
http://www.purebasic.fr/french/viewtopi ... ight=sapi4
voila tu verra que c'est vraiment pas difficile a mettre en oeuvre
lorsqu'on dispose des bons outils ...
Code : Tout sélectionner
; By Dobro
Declare MyStopEvent()
Declare MyStartEvent()
Declare MyPositionEvent(letter.l)
Enumeration
#fenetre
#liste
#bouton_parle
#text
#text2
#text3
#text4
#vitesse
#fichier
#volume
#pitch
EndEnumeration
type=TTSInit(0,0,0) ; First we initialize the tts support.
Debug type
voices.l = TTSEngCount() ; Get the highest voice index.
If voices > -1 ; If there are any voice installed...
Debug "There are "+Str(voices+1)+" voices installed in your system"
;Remember that voice index starts from 0
For i=0 To voices
name$=TTSEngName(i) ; Retrieve each voice name.
Debug "Voice index = "+Str(i)+" , Voice name = "+name$
Next i
Else
MessageRequester("erreur","je ne trouve pas de voix"+Chr(10)+"installé sur le system",#PB_MessageRequester_Ok )
End
EndIf
CallDebugger
;{**********lit le reglage*****************
OpenFile(#fichier,"init.txt")
param$=ReadString(#fichier)
vitesse$=ReadString(#fichier)
vitesse=Val(vitesse$)
volume$=ReadString(#fichier)
volume=Val(volume$)
pitch$=ReadString(#fichier)
pitch=Val(pitch$)
Debug param$
CloseFile(#fichier)
voix=Val(param$)
Debug voix
;}***************************
TTSSelect(voix) ; choisi la voix sauvé
TTSSpeak("Bonjour") ; Speak!
OpenWindow( #fenetre, 374, 121, 200, 170,name$, #PB_Window_SystemMenu | #PB_Window_TitleBar )
SetWindowPos_(WindowID( #fenetre), -1, 230, 230, 0, 0, #SWP_NOSIZE )
;{ ***** dessin de l'interface **********************
; bouton parle/stop
CreateGadgetList(WindowID(#fenetre))
ButtonGadget(#bouton_parle, 5, 25, 120, 40, "Parle")
Resultat = ComboBoxGadget(#liste, 5, 2, 150, 150 )
; liste des voix
For i=0 To voices
name$=TTSEngName(i) ; Retrieve each voice name.
language$ = TTSEngLang(i) ; arg1.l = voice index
AddGadgetItem(#liste, -1, language$ ) ; ajoute dans la liste les noms trouvé+nationalité
Next i
name$=TTSEngName( voix) ; cherche le nom
language$ = TTSEngLang(voix) ; cherche le nom+nationalité
SetGadgetState(#liste, voix) ; active la voix lu par defaut dans la liste
SetWindowTitle(#fenetre, name$) ; change le titre de la fenetre
; tracbar horizontal (vitesse de la voix)
TextGadget(#text2 , 2,70, 50, 15, "Vitesse" )
Resultat = TrackBarGadget(#vitesse, 40, 65, 100, 50, 0, 20,#PB_TrackBar_Ticks )
SetGadgetState(#vitesse, vitesse)
; tracbar horizontal (volume de la voix)
TextGadget(#text3 , 2,120, 50, 15, "Volume" )
Resultat = TrackBarGadget(#volume, 40, 110, 100, 50, 0,100 ,#PB_TrackBar_Ticks )
SetGadgetState(#volume, volume)
CallDebugger
; tracbar vertical (pitch)
TextGadget(#text4 , 160,145, 50, 30, "pitch" )
Resultat = TrackBarGadget(#pitch, 160, 50, 50, 100, 0,20,#PB_TrackBar_Vertical )
SetGadgetState(#pitch, pitch)
TextGadget(#text , 2,155, 50, 15, "By Dobro" ,#PB_Gadget_FrontColor)
SetGadgetColor(#text , #PB_Gadget_FrontColor, RGB($42,$42,$FF))
Result.l = TTSInit(@MyStartEvent(),@MyStopEvent(),@MyPositionEvent())
;} ***************************************************
Repeat
EventID = WaitWindowEvent()
Select EventID
Case #PB_Event_Gadget
Select EventGadget()
Case #bouton_parle ; apuis sur le bouton parle
If Result ; If the SAPI enviroment is initialized...
TTSSelect(voix) ; You can choose the voice index you like.
text$ = GetClipboardText()
SetGadgetText(#bouton_parle, "Parle")
If lit=1
lit=0
TTSStop()
Goto fin
EndIf
lit=1
SetGadgetText(#bouton_parle, "Stop")
pitch= GetGadgetState(#pitch)
pitch2=pitch-10
volume= GetGadgetState(#volume)
TTSSetVolume( volume)
vitesse= GetGadgetState(#vitesse)
vitesse2=vitesse-10
TTSSetSpeed(vitesse2) ; vitesse de diction -50=lent ; +50= tres rapide
TTSSetPitch(pitch2)
; virginie parle
text$ = RemoveString(text$, "Very Happy" ,1)
text$ = RemoveString(text$, "Crying or Very sad" ,1)
text$ = RemoveString(text$, "Smile" ,1)
text$ = RemoveString(text$, "Sad" ,1)
text$ = RemoveString(text$, "Surprised" ,1)
text$ = RemoveString(text$, "Shocked" ,1)
text$ = RemoveString(text$, "Confused" ,1)
text$ = RemoveString(text$, "Cool" ,1)
text$ = RemoveString(text$, "Laughing" ,1)
text$ = RemoveString(text$, "Mad" ,1)
text$ = RemoveString(text$, "#Mad" ,1)
text$ = RemoveString(text$, "Razz" ,1)
text$ = RemoveString(text$, "Embarassed" ,1)
text$ = RemoveString(text$, "#evil" ,1)
text$ = RemoveString(text$, "Twisted Evil" ,1)
text$ = RemoveString(text$, "Rolling Eyes" ,1)
text$ = RemoveString(text$, "Wink" ,1)
text$ = RemoveString(text$, "Exclamation" ,1)
text$ = RemoveString(text$, "Question" ,1)
text$ = RemoveString(text$, "Idea" ,1)
TTSSpeak(text$) ; Speak!
EndIf
Case #vitesse
Case #liste ; choix dans la liste combo
voix = GetGadgetState(#liste)
name$=TTSEngName( voix) ; cherche le nom
SetWindowTitle( #fenetre, name$)
fin:
EndSelect
EndSelect
Until EventID = #PB_Event_CloseWindow
If Result ; Once again, if the SAPI is initialized...
;{**********Sauve le reglage*****************
If OpenFile(#fichier,"init.txt")<>0
WriteStringN(#fichier, Str(voix))
WriteStringN(#fichier, Str(vitesse))
WriteStringN(#fichier, Str(volume))
WriteStringN(#fichier, Str(pitch))
Debug voix
CloseFile(#fichier)
Else
MessageRequester("erreur","je ne peux pas sauver les paramêtres", #PB_MessageRequester_Ok )
End
EndIf
;}***************************
TTSSelect(voix) ; choisi virginie
TTSSpeak("Au Revoir .") ; Speak!
Delay(1000)
TTSEnd() ; Free SAPI resources.
EndIf
End
Procedure MyStopEvent() ; And this will fire when...
SetGadgetText(#bouton_parle, "Parle")
EndProcedure
Procedure MyStartEvent() ; This procedure will fire when...
SetGadgetText(#bouton_parle, "stop")
EndProcedure
Procedure MyPositionEvent(letter.l) ; This one will fire at...
EndProcedure