Page 1 sur 1

Lecteur de texte à haute voix ! (Balabolka)

Publié : mer. 02/sept./2009 15:38
par GeBonet
Bonjour,

Pour les amateurs de lecture automatique à haute voix, type Nono... Et utilisant les Microsoft Speech API (SAPI (SAPI 4 et SAPI 5)).
Voici justement le site qui permet de télécharger ce logiciel de lecture en quelques langues dont évidement le Français...

Son nom : "Balabolka" et pour téléchager :
http://www.cross-plus-a.com/balabolka_fr.htm
Il permet la lecture directe des ".txt" et "pdf", le contenu du presse-papiers etc.

Note : * Balabolka: c’est le mot russe qui signifie en français « moulin à paroles ». :wink:

En espérant vous avoir apporté quelque chose... :lol:

Re: Lecteur de texte à haute voix ! (Balabolka)

Publié : mer. 02/sept./2009 22:43
par Backup
GeBonet a écrit :
En espérant vous avoir apporté quelque chose... :lol:
ben pas vraiment !!

en purebasic et avec librairie tu as tout ce qu'il te faut pour faire pareil ....


ya longtemps que je m'en suis fait un pour le Fun.. (je ne l'ai jamais mis a dispo ... je crois)

je l'ai d'ailleurs appelé Virginie (vue que j'utilise cette voix )

fait une recherche sur le Forum avec les termes Sapi tu devrai trouver toute l'info que tu veux sur le sujet .. ;)

avec Purebasic et Sapi, , et eventuellement une librairie ou 2
on a tout ce qu'il faut pour gerer facilement la synthese vocal...

hors Nono , cela s'entend :)

mais merci quand meme ;)

Publié : jeu. 03/sept./2009 9:27
par GeBonet
Bonjour,
Ben tant pis :(
Mais pour le reste je sais que l'on peux faire pareils..
Et en son temps j'ai balayé ce qu'il y avait sur le sujet (SAPI) et aussi ce qu'on peu faire avec... Et forcément qu'avec PB on peu le faire... :lol:
Encore faut-il le faire ! :wink:

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.
J'essayerais de faire mieux une prochaine fois :lol:

Publié : jeu. 03/sept./2009 9:49
par Backup
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