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