Code : Tout sélectionner
;
; Originellement codé par Esteban1, 08-08-2005.
; ce code faisait partie du package PureTTS sous le nom de 'eventexample.pb' contenant une librairie
; permettant de lire un texte avec la synthese vocale integré a windows (SAPI 4 and SAPI 5)...
;
; Modifié legerement par Coolman le 2 mai 2006
;
; francisation, agrandissement de la fenetre, adaptation boutons a un affichage avec grande polices...
;
; Generé sous le nom PureTTS.pb et PureTTS.exe
;
; Rien d'autre a dire, l'auteur initial a fait du tres bon boulot, dommage que le code source ne soit pas
; disponible, ca aurait peut etre permis de l'adapter a purebasic 4.x. Pour le reste, amelioration
; possible, integration fond de fenetre texturé...
;
; Note : Windows XP Pro est livré d'origine avec une seule voix anglaise, il est possible d'en installer
; d'autres sur le site de microsoft. Par exemple faite une recherche sur ce site du fichier suivant :
; 'ReaderTTSInstallFRA.exe'
; Contient deux voix francophones...
;
;*** Debut Code ***
;
; This is just a raw example using events.
Global noevents.b
Procedure started()
StatusBarText(0,0,"En cours...",#PB_StatusBar_Center)
EndProcedure
Procedure ended()
StatusBarText(0,0,"Arret",#PB_StatusBar_Center)
EndProcedure
Procedure position(Charac.l)
If noevents=0
StatusBarText(0,1,"Position= "+Str(Charac),#PB_StatusBar_Center)
txtend=SendMessage_(GadgetID(0),#EM_FINDWORDBREAK,#WB_RIGHTBREAK,Charac+1)
txtstart=SendMessage_(GadgetID(0),#EM_FINDWORDBREAK,#WB_MOVEWORDLEFT,Charac+1)
range.CHARRANGE
range\cpMin=txtend
range\cpMax=txtstart
SendMessage_(GadgetID(0),#EM_EXSETSEL,0,range)
EndIf
EndProcedure
If OpenWindow(0, 400, 124, 340, 410, #PB_Window_TitleBar | #PB_Window_ScreenCentered | #PB_Window_SystemMenu , "PureTTS Reader")
If CreateStatusBar(0,WindowID())
AddStatusBarField(170)
AddStatusBarField(170)
If CreateGadgetList(WindowID())
EditorGadget(0, 5, 5, 330, 145)
ButtonGadget(1, 5, 160, 50, 25, "Coller")
ButtonGadget(2, 61, 160, 50, 25, "Parler")
ButtonGadget(3, 118, 160, 52, 25, "Arreter")
ButtonGadget(4, 176, 160, 70, 25, "Pause",#PB_Button_Toggle)
ButtonGadget(5, 253, 160, 82, 25, "Vers Fichier")
TrackBarGadget(6, 70, 200, 250, 20, 0, 20, #PB_TrackBar_Ticks)
TrackBarGadget(7, 70, 225, 250, 20, 0, 20, #PB_TrackBar_Ticks)
TrackBarGadget(8, 70, 250, 250, 20, 0, 100, #PB_TrackBar_Ticks)
ListViewGadget(9, 100, 290, 220, 85)
TextGadget(10, 10, 200, 50, 20, "Vitesse", #PB_Text_Right)
TextGadget(11, 10, 225, 50, 20, "Hauteur", #PB_Text_Right)
TextGadget(12, 10, 250, 50, 20, "Volume", #PB_Text_Right)
TextGadget(13, 5, 290, 90, 50, "Choisir Une Voix", #PB_Text_Right)
GID=GadgetID(0)
dc=GetWindowDC_(GID)
SendMessage_(GID, #EM_SETTARGETDEVICE ,dc ,-1)
ReleaseDC_(GID,dc)
SendMessage_(GadgetID(0), #EM_LIMITTEXT, -1, 0)
StatusBarText(0,0,"Initialisation SAPI...",#PB_StatusBar_Center)
If TTSInit(@started(),@ended(),@position())
voices=TTSEngCount()
StatusBarText(0,0,"Liste Voix...",#PB_StatusBar_Center)
For i=0 To voices : AddGadgetItem (9,-1,TTSEngName(i)) : Next
StatusBarText(0,0,"Pret",#PB_StatusBar_Center)
SetGadgetText(0,"Selectionner copier un texte quelconque et cliquez sur le bouton 'Coller'.")
SetGadgetState(9,0)
; Active par defaut voix initial
TTSSelect(0)
SetGadgetState(6,TTSGetSpeed()+10): SetGadgetState(7,TTSGetPitch()+10): SetGadgetState(8,TTSGetVolume())
Else
MessageRequester("Fonction Synthese vocale introuvable !", "Veuillez verifier la disponibilitée de cette fonction dans le panneau de configuration.", #MB_OK|#MB_ICONWARNING)
EndIf
Repeat
ev=WaitWindowEvent()
If ev=#PB_EventGadget
Select EventGadgetID()
Case 1
SetGadgetText(0,"")
SendMessage_(GadgetID(0),#WM_PASTE,0,0)
Case 2
noevents=0
t$=GetGadgetText(0)
t$=ReplaceString(t$,Chr(13)+Chr(10)," ")
TTSSpeak(t$)
Case 3
TTSStop()
Case 4
If GetGadgetState(4)=1
TTSPause()
SetGadgetText(4,"Continuer")
Else
TTSResume()
SetGadgetText(4,"Pause")
EndIf
Case 5
TTSStop()
tofile.s = SaveFileRequester("Sauvegarder au format wav",".wav", "Audio files|*.wav|All files|*.*", 0)
If tofile <> ""
noevents=0
t$=GetGadgetText(0)
t$=ReplaceString(t$,Chr(13)+Chr(10)," ")
TTSSpeak(t$,tofile)
EndIf
Case 6
asp=GetGadgetState(6)
TTSSetSpeed(asp-10)
Case 7
api=GetGadgetState(7)
TTSSetPitch(api-10)
Case 8
avo=GetGadgetState(8)
TTSSetVolume(avo)
Case 9
TTSStop()
noevents=1
i=GetGadgetState(9)
nam$=GetGadgetText(9)
TTSSelect(i)
TTSSpeak(nam$)
SetGadgetState(6,TTSGetSpeed()+10)
SetGadgetState(7,TTSGetPitch()+10)
SetGadgetState(8,TTSGetVolume())
EndSelect
EndIf
Until ev=#PB_EventCloseWindow
TTSEnd()
EndIf
EndIf
EndIf
End