Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#51 Le 09/09/2011, à 10:49

luc765

Re : Synthèse vocale SVOX Pico

Merci à frafra et tuxmuraille, pour votre travail.
J'utilisais espeak avec mbrola, la qualité de SVOX est nettement meilleure
J'ai installé gSpeech sur Lucid via la compilation pour SVOX. Tout est parfait.

Dans l'utilisation est-il possible de modifier la vitesse de lecture par un paramètre ??

Hors ligne

#52 Le 09/09/2011, à 15:13

frafa

Re : Synthèse vocale SVOX Pico

Bonjour,
pas prévu dans SVOX,..

pico2wave -?
Usage: pico2wave <words>
  -w, --wave=filename     Write output to this WAV file
  -l, --lang=lang         Language (default: "en-US")

Help options:
  -?, --help              Show this help message
      --usage             Display brief usage message

Hors ligne

#54 Le 12/09/2011, à 21:23

luc765

Re : Synthèse vocale SVOX Pico

Bonsoir tuxmuraille et Frafa,

Je rentre dans le détail mais le dictionnaire phonétique inclus dans gSpeech n'est pas pris en compte chez moi. Y-a-t'il une astuce qui m'échappe ??

luc765

Hors ligne

#55 Le 13/09/2011, à 13:27

Tuxmouraille

Re : Synthèse vocale SVOX Pico

Bonjour luc765,
Tu peux télécharger ici.
Le dictionnaire phonétique doit être mis dans le dossier ~/.config/gSpeech avec le fichier de configuration gspeech.conf.

Ce fichier a deux options. Par défaut gSpeech utilise la langue de l'environnement graphique pour la synthèse, et l'AppIndicator (la nouvelle zone de notification de Ubuntu) si elle est installée dans l'environnement graphique.
- useappindicator = 1 ne change rien au comportement par défaut, 0 force l'usage de la zone de notification
- defaultlanguage = force l'usage d'une langue de synthèse: de-de, fr-FR, etc...

Merci pour tes retours.

Par d


Le support d'Optimus pour Linux.
Ubuntu 18.04 64 bits, portable ASUS N53SN-SZ161V, Intel® Core™ i5-2410M @ 2.30GHz, 8080MB SODIM Ram, NVIDIA® GeForce™ GT 550M

Hors ligne

#56 Le 13/09/2011, à 15:57

luc765

Re : Synthèse vocale SVOX Pico

Merci tuxmuraille et Frafa pour le suivi.

Concernant le dictionnaire phonétique complémentaire inclus dans gSpeech je ne suis pas parvenu à activer sa prise en compte. Ceci est probablement lié au fait que je suis un petit belge (sans gouvernement) et donc la langue choisie pour le système Ubunru est fr-BE (echo $LANG donne fr_BE.utf8).
fr_BE. n'étant pas pris en compte dans le script gSpeech.py j'ai changé, peut-être un peu brutalement, la ligne 401 du script.py de DefaultLang = "en-US" en DefaultLang = "fr-FR"

A part cela tout est nickel.

Hors ligne

#57 Le 13/09/2011, à 20:00

Tuxmouraille

Re : Synthèse vocale SVOX Pico

Bonsoir,
gSpeech ne prend pas en compte fr-BE, car le synthétiseur SVOX Pico ne le supporte pas. Je pense ajouter le support pour d'autre synthétiseur vocaux mais pas pour le moment.
Normalement gSpeech doit se caler sur en-US en l’absence de fr-BE, ce que tu doit faire c'est configurer l'option "defaultlanguage = fr-FR" dans le fichier ~/.config/gSpeech/gSpeech.conf et mettre ton dictionnaire dans le même dossier.


Le support d'Optimus pour Linux.
Ubuntu 18.04 64 bits, portable ASUS N53SN-SZ161V, Intel® Core™ i5-2410M @ 2.30GHz, 8080MB SODIM Ram, NVIDIA® GeForce™ GT 550M

Hors ligne

#58 Le 20/02/2012, à 20:04

ssm2017

Re : Synthèse vocale SVOX Pico

salut
merci pour toutes ces infos.
le script fonctionne mais je n'arrive pas à trouver comment changer de la voix feminine vers la masculine.
une idee ?

Hors ligne

#59 Le 14/01/2013, à 18:23

cataclop

Re : Synthèse vocale SVOX Pico

Bonjour,

Je commence par remercier pour les explications données dans ce fuseau (qui m'ont été fort utiles) et par m'excuser pour cet abominable "remontage".

Je me suis cependant heurté à une limitation de pico2wave (apparemment) : il semble ne pas admettre de texte de plus de 2¹⁵ caractères (soit 32768). C'est beaucoup pour des synthèses ponctuelles, mais outrepasser cette limitation me permettrait d'enregistrer des textes longs pour les écouter sans ordinateur. Au-delà de cette limite, j'obtiens le message suivant :

Cannot put Text (-102): invalid argument supplied

Merci d'avance à ceux qui pourraient m'indiquer une solution.


Lenovo ThinkPad Yoga 260 - Intel(R) Core(TM) i5-6300U CPU @ 2.40GHz - RAM 8GB
NixOs

Hors ligne

#60 Le 15/02/2013, à 18:37

KER747

Re : Synthèse vocale SVOX Pico

Bonjour,

Je cherche un synthétiseur vocal qui marche bien avec une voix comparable à celle d'accapella: http://www.acapela-group.fr/text-to-spe … -demo.html
J'ai essayé gspeaker mais la voix n'est pas terrible.
Je pense à essayer pico svox mais l'intallation semble compliqué et ce topic date apparemment.
Comment l'installer et est-ce le bon à installer?


Ma première page: www.aerozone.tk

Hors ligne

#61 Le 27/02/2013, à 17:31

cataclop

Re : Synthèse vocale SVOX Pico

Si quelqu'un se heurtait au même problème que moi : j'ai trouvé un contournement en modifiant gSpeech.py. Voici le patch (il faut, pour que cela fonctionne, installer sox) :

--- gSpeech2.py	2013-02-26 16:17:57.633682124 +0100
+++ gSpeech.py	2013-02-26 17:13:35.469609167 +0100
@@ -248,14 +248,14 @@
         pynotify.Notification(APPNAME, _(u"I'm reading the text. One moment please."), self.icon).show()
 
         if widget.get_label() == _(u"From X.org") :
-            str = gtk.clipboard_get(selection="PRIMARY").wait_for_text()
+            texte = gtk.clipboard_get(selection="PRIMARY").wait_for_text()
         else :
-            str = gtk.clipboard_get(selection="CLIPBOARD").wait_for_text()
+            texte = gtk.clipboard_get(selection="CLIPBOARD").wait_for_text()
 
         #~ str = str.lower()
-        str = str.replace('\"', '')
-        str = str.replace('`', '')
-        str = str.replace('´', '')
+        texte = texte.replace('\"', '')
+        texte = texte.replace('`', '')
+        texte = texte.replace('´', '')
 
         dic = CONFIGDIR + '/' + self.lang + '.dic'
         if os.path.exists(dic) :
@@ -266,10 +266,16 @@
                     good = line.split('=')[1]
                 except :
                     good = ' '
-                str = str.replace(bad, good)
-
-        os.system('pico2wave -l %s -w %s \"%s\" ' % ( self.lang, SPEECH, str ))
-
+                texte = texte.replace(bad, good)
+        discours = texte.split('\n')
+        i = 0
+        fichiers = ''
+        for texte in discours:
+            i += 1
+            fichier = CACHEFOLDER + 'speech' + str(i) + '.wav'
+            fichiers = fichiers + ' ' + fichier
+            os.system('pico2wave -l %s -w %s \"%s\" ' % ( self.lang, fichier, texte ))
+        os.system('sox %s %s' % ( fichiers, SPEECH ))
         player = self.onPlayer(SPEECH)
         self.player.set_state(gst.STATE_PLAYING)

Modification : j'avais fait le diff à l'envers… C'est corrigé !

Autre modification : le patch du post #65 est plus efficace, annule et remplace celui-ci.

Dernière modification par cataclop (Le 28/02/2013, à 22:34)


Lenovo ThinkPad Yoga 260 - Intel(R) Core(TM) i5-6300U CPU @ 2.40GHz - RAM 8GB
NixOs

Hors ligne

#62 Le 28/02/2013, à 20:42

Tuxmouraille

Re : Synthèse vocale SVOX Pico

KER747 a écrit :

Bonjour,

Je cherche un synthétiseur vocal qui marche bien avec une voix comparable à celle d'accapella: http://www.acapela-group.fr/text-to-spe … -demo.html
J'ai essayé gspeaker mais la voix n'est pas terrible.
Je pense à essayer pico svox mais l'intallation semble compliqué et ce topic date apparemment.
Comment l'installer et est-ce le bon à installer?

A ma connaissance il n'existe pas de synthétiseur vocale libre équivalent aux synthétiseur commerciaux, en particulier acapela.
Pico Svox est le synthétiseur de Android, bien qu'il y est le logiciel pico2wave pour réaliser les conversions, c'est avant un bibliothèque partagée à intégrer dans un programme. A part Pico il existe mbrola, encore plus compliqué à installé qui permet d'avoir des voix proches de celles de acapela.


Le support d'Optimus pour Linux.
Ubuntu 18.04 64 bits, portable ASUS N53SN-SZ161V, Intel® Core™ i5-2410M @ 2.30GHz, 8080MB SODIM Ram, NVIDIA® GeForce™ GT 550M

Hors ligne

#63 Le 28/02/2013, à 21:52

Tuxmouraille

Re : Synthèse vocale SVOX Pico

Bonjour cataclop,
1) Tu as exécuté la commande patch à l'envers.
2) gSpeech n'est pas prévue pour des textes longs, tu devrais développer ton propre programme.
3) La méthode que tu utilise n'est à mon humble avis pas bonne. Il est peu efficace de découpé ton texte ligne par ligne.
4) En revanche merci, parce que c'est complètement idiot d'avoir appelé ma variable str.


Le support d'Optimus pour Linux.
Ubuntu 18.04 64 bits, portable ASUS N53SN-SZ161V, Intel® Core™ i5-2410M @ 2.30GHz, 8080MB SODIM Ram, NVIDIA® GeForce™ GT 550M

Hors ligne

#64 Le 28/02/2013, à 22:14

cataclop

Re : Synthèse vocale SVOX Pico

Bonjour Tuxmouraille,

1) Corrigé dans ma dernière édition (c'est tout moi, ce genre d'erreur…)
2) Sans doute, mais ceci dépasse largement mes compétences en python ! Disons qu'au moins, comme ça, j'arrive à un résultat.
3) Tout-à-fait d'accord ; l'avantage de découper par ligne est que je suis (à peu près) sûr de ne pas découper une phrase ou un mot bêtement. J'aurais peut-être dû découper phrase par phrase (en utilisant '.' au lieu de '\n'), puis "rattacher" mes phrases jusqu'à obtenir une chaîne proche des 32768 caractères.
4) Je t'en prie : je l'ai d'abord fait pour essayer d'y comprendre quelque chose…


Lenovo ThinkPad Yoga 260 - Intel(R) Core(TM) i5-6300U CPU @ 2.40GHz - RAM 8GB
NixOs

Hors ligne

#65 Le 28/02/2013, à 22:32

cataclop

Re : Synthèse vocale SVOX Pico

Je n'ai pas pu m'empêcher d'expérimenter l'idée 3). De la sorte, je passe d'environ 20 secondes de traitement à environ 15 secondes pour un texte de 36128 caractères.

Voici donc le nouveau patch :

--- gSpeech.old	2013-02-26 16:17:57.633682124 +0100
+++ gSpeech.py	2013-02-28 11:09:14.737670234 +0100
@@ -248,14 +248,14 @@
         pynotify.Notification(APPNAME, _(u"I'm reading the text. One moment please."), self.icon).show()

         if widget.get_label() == _(u"From X.org") :
-            str = gtk.clipboard_get(selection="PRIMARY").wait_for_text()
+            texte = gtk.clipboard_get(selection="PRIMARY").wait_for_text()
         else :
-            str = gtk.clipboard_get(selection="CLIPBOARD").wait_for_text()
+            texte = gtk.clipboard_get(selection="CLIPBOARD").wait_for_text()

         #~ str = str.lower()
-        str = str.replace('\"', '')
-        str = str.replace('`', '')
-        str = str.replace('´', '')
+        texte = texte.replace('\"', '')
+        texte = texte.replace('`', '')
+        texte = texte.replace('´', '')

         dic = CONFIGDIR + '/' + self.lang + '.dic'
         if os.path.exists(dic) :
@@ -266,12 +266,25 @@
                     good = line.split('=')[1]
                 except :
                     good = ' '
-                str = str.replace(bad, good)
-
-        os.system('pico2wave -l %s -w %s \"%s\" ' % ( self.lang, SPEECH, str ))
-
+                texte = texte.replace(bad, good)
+        discours = texte.split('.')
+        i = 0
+        fichiers = []
+        texte = ''
+        while i < len(discours):
+            if len(texte) < 30000:
+                texte += discours[i] + '. '
+            if len(texte) > 30000 or i == len(discours) - 1:
+                fichier = CACHEFOLDER + 'speech' + str(i) + '.wav'
+                fichiers.append(fichier)
+                os.system('pico2wave -l %s -w %s \"%s\" ' % ( self.lang, fichier, texte ))
+                texte = ''
+            i += 1
+        os.system('sox %s %s' % ( ' '.join(fichiers), SPEECH ))
         player = self.onPlayer(SPEECH)
         self.player.set_state(gst.STATE_PLAYING)
+        for fichier in fichiers:
+            os.remove(fichier)

     # player fonction
     def onPlayer(self,file):

Modification : Petit changement pour nettoyer tous les fichiers temporaires que ma méthode avait rajoutés, et pour restaurer la possibilité de lire des textes courts…

Dernière modification par cataclop (Le 01/03/2013, à 11:13)


Lenovo ThinkPad Yoga 260 - Intel(R) Core(TM) i5-6300U CPU @ 2.40GHz - RAM 8GB
NixOs

Hors ligne

#66 Le 28/02/2013, à 23:16

cataclop

Re : Synthèse vocale SVOX Pico

Juste pour donner un ordre d'idée : j'ai fait le test avec un texte de 178573 mots (791222 caractères sans compter les espaces) :
− il a fallu (sur ma machine, en n'utilisant qu'un seul processeur puisque je ne sais pas utiliser le multitâche en python) environ 10 minutes de traitement avant que la lecture ne commence ;
− 35 wav intermédiaires d'environ 50 Mo chacun ont été produits ;
− le wav final pèse environ 1,75 Go pour 15h18 de lecture.

Bref, la performance de pico2wave couplé avec gSpeech me semble tout de même honnête !
Un grand merci à frafra et à Tuxmouraille pour tout ce travail !


Lenovo ThinkPad Yoga 260 - Intel(R) Core(TM) i5-6300U CPU @ 2.40GHz - RAM 8GB
NixOs

Hors ligne

#67 Le 01/03/2013, à 16:32

cataclop

Re : Synthèse vocale SVOX Pico

Une petite question, au cas où : existe-t-il une voix française masculine pour pico2wave ?


Lenovo ThinkPad Yoga 260 - Intel(R) Core(TM) i5-6300U CPU @ 2.40GHz - RAM 8GB
NixOs

Hors ligne

#68 Le 01/03/2013, à 17:36

Tuxmouraille

Re : Synthèse vocale SVOX Pico

Bonjour cataclop,
Je ne suis pas non plus développeur. gSpeech est un de mes projets d'apprentissage Python.
Il existe beaucoup de documentation sur Python et PyGTK. Si tu as déjà programmé tu te rendras compte que Python est assez simple.
Si tu veux apprendre sérieusement il y a le siteduzero et l'excellente "Apprendre à programmer avec Python".

A ma connaissance il n'existe pas de voix masculine pour Pico.
Regardes du côté de mbrola, je croit que ce projet est à l'origine du synthétiseur vocale de acapela.

Je pense que tu peux créer un script bash:
1) tu découpe le texte en textes plus courts
2) dans une boucle
3) tu stokes le contenue de chaque nouveaux fichiers dans une variable
4) tu utilise cette variable pour généré le fichier wave
5) hors de la boucle
6) tu concatènes les wave
7) optionnel: tu convertis en flac, ogg ou mp3 pour gagner de la place.

Si tu arrives à faire une découpage par chapitre tu peux aussi conserver un wave par chapitre. A condition que chaque chapitre fasse moins de 2¹⁵ caractères.

Quel est le format source de ton texte?

Dernière modification par Tuxmouraille (Le 01/03/2013, à 17:37)


Le support d'Optimus pour Linux.
Ubuntu 18.04 64 bits, portable ASUS N53SN-SZ161V, Intel® Core™ i5-2410M @ 2.30GHz, 8080MB SODIM Ram, NVIDIA® GeForce™ GT 550M

Hors ligne

#69 Le 01/03/2013, à 21:10

cataclop

Re : Synthèse vocale SVOX Pico

Bonsoir Tuxmouraille,

Bien sûr que je pourrais faire tout ça, mais… pourquoi réinventer la roue ? Je ne suis pas informaticien, si ce n'est à mes heures perdues. Puisqu'une modification de 20 lignes m'amène au même résultat, je ne vais pas me lancer dans des dizaines de lignes de bash ou de python pour faire en définitive moins bien ! GSpeech s'intègre très bien dans l'interface, et la dernière étape que tu me suggères est facile à intégrer dans le clic droit de Nautilus grâce aux scripts (paquet nautilus-script-audio-convert).

Comme ton logiciel est sous Gpl, j'en ai profité pour l'adapter à mon besoin. Conformément à l'esprit du libre et à la lettre de la licence, je mets à disposition mon travail pour les autres ; s'ils en profitent, tant mieux, j'en serai content. Sinon, eh bien ! je n'aurai rien perdu.

Merci encore pour ton travail et ta disponibilité.

Dernière modification par cataclop (Le 01/03/2013, à 21:11)


Lenovo ThinkPad Yoga 260 - Intel(R) Core(TM) i5-6300U CPU @ 2.40GHz - RAM 8GB
NixOs

Hors ligne

#70 Le 06/03/2013, à 19:02

KER747

Re : Synthèse vocale SVOX Pico

Ok, Merci


Ma première page: www.aerozone.tk

Hors ligne

#71 Le 14/03/2013, à 10:03

ian57

Re : Synthèse vocale SVOX Pico

@tuxmouraille : merci pour ton travail, la version 0.4.5 est vraiment super bien. Juste une remarque : il me manque une raccourcis clavier pour la lecture. Je vais jeter un oeil à tes sources pour voir si je peux le faire ;-).
encore super merci pour ce programme

voila avec SHIFT-l on peut lire le texte selectionné dans l'interface graphique (et SHIFT-m pour le presse papier) ( ne marche que si la fenêtre multimédia est visible et possède le focus : le code modifié est le suivant (http://www.pygtk.org/pygtk2tutorial/sec … ators.html) :
à partir de la ligne 325

        # Create an accelerator group
        self.accelgroup = gtk.AccelGroup()
        # Add the accelerator group to the toplevel window
        self.window.add_accel_group(self.accelgroup)


        #~ button = gtk.Button(stock = gtk.STOCK_EXECUTE)
        #~ Label=button.get_children()[0]
        #~ Label=Label.get_children()[0].get_children()[1]
        #~ Label=Label.set_label(_(u"From ClipBoard"))
        #~ button.connect("clicked", gSpeech.onExecute)
        button = gtk.Button(_(u"From ClipBoard"))
        button.connect("clicked", gSpeech.onExecute)
        button.add_accelerator("clicked",self.accelgroup , ord('m'), gtk.gdk.SHIFT_MASK, gtk.ACCEL_VISIBLE)
        self.window.vbox.pack_start(button, expand=False, fill=False)

        #~ button = gtk.Button(stock = gtk.STOCK_EXECUTE)
        #~ Label=button.get_children()[0]
        #~ Label=Label.get_children()[0].get_children()[1]
        #~ Label=Label.set_label(_(u"From X.org"))

        button = gtk.Button(_(u"From X.org"))
        button.connect("clicked", gSpeech.onExecute)
        button.add_accelerator("clicked",self.accelgroup , ord('l'), gtk.gdk.SHIFT_MASK, gtk.ACCEL_VISIBLE)
        self.window.vbox.pack_start(button, expand=False, fill=False)


Faudrait trouver un truc pour que le raccourcis soit directement dirigé vers ton appli, pour éviter de faire le focus :

Peut être un début de solution avec https://code.google.com/p/autokey/

Dernière modification par ian57 (Le 14/03/2013, à 17:14)


Ouvrir c'est pourrir un pneu...

Hors ligne

#72 Le 14/03/2013, à 21:02

Tuxmouraille

Re : Synthèse vocale SVOX Pico

Bonsoir,
@cataclop, et ceux qui veulent si coller, cf les modifs de cataclop: Si vous arrivez à modifier le code afin qu'il qui ne génère des fichiers wav que pour des portions de textes comprenant des paragraphes complets avec un nombres de caractères le plus proche de 2¹⁵, j'ajouterai le patch.

@ian57: je te remercie pour le code. Je voulais le faire mais je n'ai jamais pris le temps de m'y mettre. Pour le problème de focus tu devrais regarder du côté du code de Terra Terminal.

N.B.: je n'ai pas beaucoup de temps en ce moment, j’ai une connexion Internet toute pourrie, en HotSpot. Je serai quand même ravis de m'y remettre, dans les limites de mes possibilités.

Dernière modification par Tuxmouraille (Le 14/03/2013, à 21:17)


Le support d'Optimus pour Linux.
Ubuntu 18.04 64 bits, portable ASUS N53SN-SZ161V, Intel® Core™ i5-2410M @ 2.30GHz, 8080MB SODIM Ram, NVIDIA® GeForce™ GT 550M

Hors ligne

#73 Le 14/03/2013, à 22:52

temps

Re : Synthèse vocale SVOX Pico

Bonjour,
J'ai créé une base de données des différents sons phonétiques API, chacun des son ne pèse que quelques kilo, pensez-vous qu'il est possible de remplacer votre base de son par la mienne ?
En d'autres mots, de remplacer vos fichiers audio de base par les miens dans votre projet ?
Cordialement


Parce que l'USB bootable est le support des systèmes experts,
Parce que l'USB bootable contient sa propre image au démarrage.
L'USB bootable permet de créer un monde à la dimension de son imagination
https://www.letime.net

Hors ligne

#74 Le 15/03/2013, à 10:38

ian57

Re : Synthèse vocale SVOX Pico

Tuxmouraille a écrit :

Bonsoir,
Pour le problème de focus tu devrais regarder du côté du code de Terra Terminal.

Yop effectivement ya un truc pas mal intéressant http://bazaar.launchpad.net/~ozcanesen/ … ad:/terra/ le rep globalhotkeys... je vais regarder comment cela marche pour essayer de l'intégrer.


Ouvrir c'est pourrir un pneu...

Hors ligne

#75 Le 16/03/2013, à 16:56

Tuxmouraille

Re : Synthèse vocale SVOX Pico

temps a écrit :

Bonjour,
J'ai créé une base de données des différents sons phonétiques API, chacun des son ne pèse que quelques kilo, pensez-vous qu'il est possible de remplacer votre base de son par la mienne ?
En d'autres mots, de remplacer vos fichiers audio de base par les miens dans votre projet ?
Cordialement

Bonjour,
gSpeech ne génère pas les fichiers de son, il utilise l'application pico2wave pour ça.
Je ne pense donc pas qu'il soit possible d'utiliser ta base.


Le support d'Optimus pour Linux.
Ubuntu 18.04 64 bits, portable ASUS N53SN-SZ161V, Intel® Core™ i5-2410M @ 2.30GHz, 8080MB SODIM Ram, NVIDIA® GeForce™ GT 550M

Hors ligne