Page 1 sur 1

PureTTS

Publié : mar. 02/mai/2006 15:28
par Coolman
Je cherchais un petit programme pour generer des voix en francais avec sauvegarde wav avec la synthese vocal de window xp, j'ai trouvé la lib PureTTS, j'ai un peu adapté un des codes sources, si ca peut etre utiles a d'autres :

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


Publié : lun. 22/mai/2006 16:06
par Coolman
Apres avoir testé la synthese vocal de windows xp, force est de constater avec les voix francophones que ce n'est pas tres efficace :(, en effet la voix generée est clairement identifiable (trop a mon avis) comme etant artificielle, je pensais que la synthese vocale etait plus efficace que ca, j'ai donc cherché et trouvé une alternative ici :

http://www.research.att.com/viewProject.cfm?prjID=35

Sur ce site, il est possible de generer des voix sauvegardables au format wav, j'avoue avoir eté bluffé par le resultas, essayez par exemple la voix de juliette (on s'y croirait !) :)

Publié : lun. 22/mai/2006 16:11
par CameleonTH
Sinon il y a un projet français qui s'apelle MBrola et il est super bien mais complexe.

Publié : lun. 22/mai/2006 17:45
par Coolman
MBrola !, c'est pas tombé dans l'oreille d'un sourd, je vais voir ca sur google, merci de l'info :)

Publié : jeu. 25/mai/2006 11:54
par Coolman
Bon, j'ai testé quelques voix generé avec MBrola, ce n'est pas mieux, seule avantage, c'est un projet apparemet libre et fonctionnelle egallement sous linux, sinon j'ai trouvé un autre lien sur le forum anglais de purebasic :

http://www.mbstudio.biz/mbsoft_005.htm

avec des voix de bonne qualité issu apparement d'ibm (viavoice), le meilleur resultas reste cependant le site que j'avais signalé...

Bonne nouvelle :), l'auteur a adapté la lib TTS a purebasic 4, je n'ai pas pu la tester, bizarrement, la ou je suis, je n'ai jamais pu acceder aux sites hebergé sur geocities (ca doit etre bloqué a la source...)...

Pour ceux qui sont interessés, voici le lien du site :

http://www.geocities.com/esteban1uy/My_drive.html

8)

Publié : jeu. 25/mai/2006 12:12
par gansta93
Sur le site que tu donnes, on peut pas télécharger les API ? ou alors faut les payer ?
EMerci pour le lien vers PureTTS ! :-D

Publié : jeu. 25/mai/2006 13:21
par Coolman
gansta93 a écrit :Sur le site que tu donnes, on peut pas télécharger les API ? ou alors faut les payer ?
EMerci pour le lien vers PureTTS ! :-D
Les apis ??, c'est vrai que les liens de telechargements sont difficillement accessible avec firefox, opera ou ie, le formatage de la page est imparfait, voici le lien exact pour les voix francophones :

http://www.mbsoft.biz/download/tts_french.zip

apres install, tu auras plusieurs profils de voix...

8)

Publié : jeu. 25/mai/2006 13:24
par gansta93
Coolman a écrit :
gansta93 a écrit :Sur le site que tu donnes, on peut pas télécharger les API ? ou alors faut les payer ?
EMerci pour le lien vers PureTTS ! :-D
Les apis ??, c'est vrai que les liens de telechargements sont difficillement accessible avec firefox, opera ou ie, le formatage de la page est imparfait, voici le lien exact pour les voix francophones :

http://www.mbsoft.biz/download/tts_french.zip

apres install, tu auras plusieurs profils de voix...

8)
OK merci ! :-D
Tu nous pondrais pas un petit exemple en Pure pour ce TTS ? oui je sais j'en demande bcp lol... mais bon... un exemple avec PureTTS, pk pas pour celle-ci ? :-) bon j'arrête d'être chiant, je dl ça de suite.

Publié : jeu. 25/mai/2006 14:21
par Coolman
gansta93 a écrit :
Coolman a écrit :
gansta93 a écrit :Sur le site que tu donnes, on peut pas télécharger les API ? ou alors faut les payer ?
EMerci pour le lien vers PureTTS ! :-D
Les apis ??, c'est vrai que les liens de telechargements sont difficillement accessible avec firefox, opera ou ie, le formatage de la page est imparfait, voici le lien exact pour les voix francophones :

http://www.mbsoft.biz/download/tts_french.zip

apres install, tu auras plusieurs profils de voix...

8)
OK merci ! :-D
Tu nous pondrais pas un petit exemple en Pure pour ce TTS ? oui je sais j'en demande bcp lol... mais bon... un exemple avec PureTTS, pk pas pour celle-ci ? :-) bon j'arrête d'être chiant, je dl ça de suite.
Je n'ai pas beaucoup de temps :), mais si tu parle d'adapter le code en haut de ce poste a purebasic 4, je veux bien si tu me fournis un lien de telechargement pour la lib version pb4, comme je l'ai dit, je n'arrive pas a acceder aux sites hebergé sur geocities, sinon la version pb 3.x fait parfaitement l'affaire, je peux meme te fournir la version compilé exe si tu me donnes ton email ou un espace d'upload pour que tout le monde en profite...

8)

Publié : jeu. 25/mai/2006 14:25
par gansta93
Hm... j'avais pas réalisé que ct encore des voix compatibles Microsoft TTS... :lol: mais le lien pour PureTTS il fonctionne bien chez moi. Je pensais que le package contiendrait les voix comme Juliette et les autres voix qu'on a dans la démo pour le français. C'est marrant, JAWS (la synthèse vocale que j'utilise) a des voix quasiman pareilles lol mais avec des noms différents.

Publié : jeu. 25/mai/2006 16:02
par Coolman
gansta93 a écrit :Hm... j'avais pas réalisé que ct encore des voix compatibles Microsoft TTS... :lol: mais le lien pour PureTTS il fonctionne bien chez moi. Je pensais que le package contiendrait les voix comme Juliette et les autres voix qu'on a dans la démo pour le français. C'est marrant, JAWS (la synthèse vocale que j'utilise) a des voix quasiman pareilles lol mais avec des noms différents.
Je n'avais pas realisé que tu utilisais la synthese vocale, chapeau... je viens de voir a quoi correspond jaws sur google, la vache, ces enfoirés vendent la version pro pour xp a env 1000 $ alors que ca devrait plutot etre fourni a prix beaucoups plus raisonnable pour que tous les aveugles puissent en profiter...
de plus il n'ont probalement pas inventé grand chose puisqu'il utilisent surement les vois gratuites dispo sur internet avec la technologie de microsoft...

je te conseille de te procurer window vista des sa disponibilité, cette version sera apparement d'office fourni avec une syntheses et reconnaissance vocale...

bonne chance :)

Publié : mar. 13/juin/2006 14:32
par Coolman
Encore plus bluffant 8O :

http://actor.loquendo.com/actordemo/def ... e=Juliette

Essayez les voix de juliette et surtout sophie...

Publié : jeu. 15/juin/2006 2:40
par Esteban1
Vous devez vous rappeler qu'il y a deux versions de l'API de synthese vocale de Windows, SAPI 4 et SAPI 5. Si vous employez Windows XP vous avez seulement SAPI 5, mais pour l'usage de SAPI 4 vous devez installer le package :

http://www.mbsoft.biz/download/spchapi.exe

Mais si vous n'avez SAPI 5 (Windows 98, Windows ME), vous pouvez télécharger :

http://www.chant.net/downloads/sapi51.exe

Quelques autres langues vous pouvez aller chercher :

http://www.mbstudio.biz/mbsoft_005.htm

Là vous pouvez trouver des voix

Portugais brésilien
Finlandais
Espagnol
Allemand
Anglais britannique
Anglais américain
Italien

tous fait par IBM.

Je peux envoyer PureTTS userlibrary (pour PB 3.94 and 4.0) par E-mail si vous avez des problèmes avec le lien http://www.geocities.com/esteban1uy/PureTTS3.zip

(Désolé pour mon Français, je parle seulement espagnol et "bad-english"!)

Publié : jeu. 15/juin/2006 12:05
par Coolman
Merci de toutes ces infos, je vais regarder de pres et bravo pour ta lib...

Pour ce qui du serveur geocities, je soupconnes un blocage a la source, impossible d'y acceder a moins d'utiliser le tunnelling a travers un site d'anonymat, mais meme la, ca n'est plus possible, n'ayant pas beaucoup de temps j'ai laissé tomber, dommage car il y'a beaucoup de bon site sur ce serveur...

Pour le reste, c'est tres cool 8), je t'envoie en MP mon adresse email...

:)

Publié : ven. 16/juin/2006 13:35
par Coolman
Esteban1 a écrit : Je peux envoyer PureTTS userlibrary (pour PB 3.94 and 4.0) par E-mail si vous avez des problèmes avec le lien http://www.geocities.com/esteban1uy/PureTTS3.zip

(Désolé pour mon Français, je parle seulement espagnol et "bad-english"!)
Merci :), bien recu...

J'oubliais, y'a t'il une chance d'avoir le code source, et ce serait bien de proposer ton travail pour integration a PBOSL, bon, ce n'est qu'une suggestion :)