PureTTS

Programmation d'applications complexes
Coolman
Messages : 432
Inscription : sam. 01/janv./2005 16:07

PureTTS

Message 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

Coolman
Messages : 432
Inscription : sam. 01/janv./2005 16:07

Message 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 !) :)
CameleonTH
Messages : 333
Inscription : sam. 25/juin/2005 11:18
Localisation : Laon (02)
Contact :

Message par CameleonTH »

Sinon il y a un projet français qui s'apelle MBrola et il est super bien mais complexe.
Coolman
Messages : 432
Inscription : sam. 01/janv./2005 16:07

Message par Coolman »

MBrola !, c'est pas tombé dans l'oreille d'un sourd, je vais voir ca sur google, merci de l'info :)
Coolman
Messages : 432
Inscription : sam. 01/janv./2005 16:07

Message 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)
gansta93
Messages : 1448
Inscription : jeu. 26/févr./2004 11:17
Localisation : Le Village
Contact :

Message 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
Coolman
Messages : 432
Inscription : sam. 01/janv./2005 16:07

Message 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)
gansta93
Messages : 1448
Inscription : jeu. 26/févr./2004 11:17
Localisation : Le Village
Contact :

Message 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.
Coolman
Messages : 432
Inscription : sam. 01/janv./2005 16:07

Message 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)
gansta93
Messages : 1448
Inscription : jeu. 26/févr./2004 11:17
Localisation : Le Village
Contact :

Message 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.
Coolman
Messages : 432
Inscription : sam. 01/janv./2005 16:07

Message 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 :)
Coolman
Messages : 432
Inscription : sam. 01/janv./2005 16:07

Message par Coolman »

Encore plus bluffant 8O :

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

Essayez les voix de juliette et surtout sophie...
Esteban1
Messages : 1
Inscription : mer. 14/juin/2006 3:34

Message 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"!)
Coolman
Messages : 432
Inscription : sam. 01/janv./2005 16:07

Message 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...

:)
Coolman
Messages : 432
Inscription : sam. 01/janv./2005 16:07

Message 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 :)
Répondre