Annonce

>>> Bienvenue sur codelab! >>> Première visite ? >>> quelques mots sur codelab //// une carte des membres//// (apéros) codelab


#1 2010-03-05 17:32:21 ttslib (text to speach)

pup
membre
Lieu: Paris
Date d'inscription: 2009-07-16
Messages: 33
Site web

ttslib (text to speach)



Salut.

J'utilise en ce moment ttslib permettant à processing de générer de la voix.
La librairie marche très bien mais je suis limité à une voix alors que la version java freetts prévoir plusieurs types de voix de synthèse.
J'ai vu un sujet similaire sur le forum de processing.org mais l'inscription au forum est bloquée (???)

La doc de ttslib étant très limitée, je me demandais si il était possible de faire des changement dans la librairie pour tester les autres voix.

Hors ligne

 

#2 2010-03-06 23:42:18 Re : ttslib (text to speach)

emoc
@#@*$
Lieu: Quimper
Date d'inscription: 2008-01-28
Messages: 1576
Site web

Re: ttslib (text to speach)



Hello,

ttslib est juste un wrapper (pas trop d'idée pour la traduction!) qui permet d'utiliser freetts dans processing. Si tu regardes la source, elle est très courte :

Code (java) :

package guru.ttslib;
import com.sun.speech.freetts.Voice;
import com.sun.speech.freetts.VoiceManager;

/**
 * @author guru
 * 
 * a freetts wrapper for processing
 */

public class TTS {
    private Voice voice;

    public TTS() {
        VoiceManager voiceManager = VoiceManager.getInstance();
        voice = voiceManager.getVoice( "kevin16" );
        voice.allocate();
    }

    public TTS( String name ) {
        VoiceManager voiceManager = VoiceManager.getInstance();
        voice = voiceManager.getVoice( name );
        voice.allocate();
    }
    
    public void speak( String in ) {
        voice.speak( in );
    }

}

En théorie, tu peux appeler les autres voix de freetts, j'ai fait l'essai avec alan (dans le setup : tts = new TTS( "alan" ); ), mais ça ne fonctionne pas bien, des erreurs sortent sur la console. Les fichiers / bases de données vocales ont l'air d'être un sujet assez subtil... ( cf : http://festvox.org/festvox/festvox_toc.html )

Avec ttslib, il y a aussi un fichier "voices.txt" qui indique qu'on peut utiliser les voix du projet MBROLA :

# This file lists the voice directories avialable to FreeTTs.
# To get the name of a voice directory from a voice jar file,
# type "java -jar voicefile.jar".
#
# Entries should look like:
#com.sun.speech.freetts.en.us.cmu_time_awb.AlanVoiceDirectory
#com.sun.speech.freetts.en.us.cmu_us_kal.KevinVoiceDirectory

com.sun.speech.freetts.en.us.cmu_time_awb.AlanVoiceDirectory
com.sun.speech.freetts.en.us.cmu_us_kal.KevinVoiceDirectory

# Uncomment to allow MBROLA voices:
#de.dfki.lt.freetts.en.us.MbrolaVoiceDirectory

Et là il y a du choix : http://tcts.fpms.ac.be/synthesis/mbrola/mbrcopybin.html

Il faudrait probablement installer mbrola pour avoir accès à d'autres voix, mais ça n'a pas l'air simple (j'ai juste jeté un coup d'oeil vite fait...). Si tu te lances, tiens nous au courant!

mbrola pour freetts : http://freetts.sourceforge.net/mbrola/README.html
et http://sourceforge.net/projects/freetts … ic/1219083

+ un lien ressources sur le tts : http://www.speech.cs.cmu.edu/

Hors ligne

 

#3 2010-03-10 21:13:24 Re : ttslib (text to speach)

pup
membre
Lieu: Paris
Date d'inscription: 2009-07-16
Messages: 33
Site web

Re: ttslib (text to speach)



J'ai essayé de mettre en place MBROLA en vain. Je bloque lors de la liaison processing > MBROLA. Pour être plus exact, c'est à cette phrase que je bloque :

citation :

To enable FreeTTS support for MBROLA, merely copy mbrola/mbrola.jar to lib/mbrola.jar. Then, whenever you run any FreeTTS application, specify the "mbrola.base" directory as a system property

Quoi qu'il en soit, mon projet a avancé, et ce que je peux dire pour aider les gens intéressés par ttslib, c'est que lors de la synthèse vocale, il faut avoir recours à un process parallèle pour s'affranchir de la lecture en cours : thread. Autrement il est impossible d'effectuer quoi que ce soit pendant l'acte de parole.

Seul inconvénient, ttslib ne prévoit pas de tts.kill(); ou de  tts.stop(); donc on a des superpositions de voix si l'on travaille avec plusieurs thread.
Je vais encore creuser un peu pour voir si je peux stopper un thread. Bisous.

Hors ligne

 

#4 2010-03-11 09:49:55 Re : ttslib (text to speach)

oyster_twiter
membre
Lieu: saint-herblain
Date d'inscription: 2008-04-01
Messages: 444
Site web

Re: ttslib (text to speach)



hello,

tentative de coup de main :

as tu placé ton mbrola.jar dans ton sketchbook/librairies/ttslib/library ?
si c'est pas fonctionnel dans ce cas là tu devrais tenter de le placer dans ton usr/lib (mais au fait sous quel OS es tu ?)
pour la seconde pharse, à première vue tu dois effectuer cette commande en ligne de commande :

  java -Dmbrola.base=/home/jim/mbrola -jar bin/FreeTTSHelloWorld.jar mbrola_us1

bonne suite

+++

Hors ligne

 

#5 2010-04-05 23:56:00 Re : ttslib (text to speach)

emoc
@#@*$
Lieu: Quimper
Date d'inscription: 2008-01-28
Messages: 1576
Site web

Re: ttslib (text to speach)



Hello,

Je viens de voir qu'il y avait des fonctions de text-to-speech dans la librairie Rita (avec Rispeech). On peut également l'utiliser avec mbrola et il y a un guide pour les faire fonctionner ensemble : http://www.rednoise.org/pdal/index.php?n=Main.Mbrola

Hors ligne

 

#6 2010-04-06 21:28:06 Re : ttslib (text to speach)

oyster_twiter
membre
Lieu: saint-herblain
Date d'inscription: 2008-04-01
Messages: 444
Site web

Re: ttslib (text to speach)



Pour une utilisation en différé, tu peux  toujours utiliser eSpeak.
http://espeak.sourceforge.net/
Je l'utilise sous ubuntu, ça marche bien, en ligne de commande, et avec mbrola.

+++

Hors ligne

 

#7 2010-06-23 23:05:16 Re : ttslib (text to speach)

emoc
@#@*$
Lieu: Quimper
Date d'inscription: 2008-01-28
Messages: 1576
Site web

Re: ttslib (text to speach)



Ce sujet n'est plus tout jeune, mais je viens de tomber là-dessus, alors à toutes fins utiles ...

Using Mbrola-Voices with the Processing ttslib

Hors ligne

 

#8 2010-11-14 18:22:04 Re : ttslib (text to speach)

cdriko
modérateur
Lieu: Le Landreau
Date d'inscription: 2010-07-16
Messages: 76
Site web

Re: ttslib (text to speach)



Hello
j'essaye de faire marcher ça sous ubuntu
j'ai suivis toutes les recommendations du gourou, mais j'ai toujours en retour :

Could not validate any MBROLA voices at

  /usr/share/mbrola/voices

Make sure you FULLY specify the path to
the MBROLA directory using the mbrola.base
system property.

j'ai essayé plein de chemins dans  :
System.setProperty("mbrola.base", "/usr/share/mbrola/voices");

mes voix sont dans  /usr/share/mbrola/voices

j'ai essayé avec
/usr/share/mbrola
mbrola
usr/bin/mbrola


sans succès
(j'ai installé mbrola avec legestionnaire de paquets)

qq a une idée pour ce

mbrola.base

?

Hors ligne

 

#9 2010-11-26 12:59:05 Re : ttslib (text to speach)

oyster_twiter
membre
Lieu: saint-herblain
Date d'inscription: 2008-04-01
Messages: 444
Site web

Re: ttslib (text to speach)



Salut Cédric,

voici une solution pour utiliser espeak et mborola dans Processing via shell.

Tout d'abord, de mon côté, j'ai placé mes voices mborola dans le répertoire suivant:

/home/toto/share/espeak-1.42.04-linux/espeak-data

Je trouve dans ce dossier:
- le dossier mbrola contenant fr1, fr3 et fr6.
- le dossier mbrola_ph contenant un paquet de fichier type af1_phtrans, ca1_phtrans...
- le dossier voices, contenant lui même plusieurs dossiers dont un dossier mb avec des fichiers types mb-af1...
ce sont ces fichiers mb-fr1... que je place dans la ligne de commande capable d'utiliser espeak avec mborola.

Il est à noter que mon dossier mborola contenant les bin est en dehors de mon dossier espeak.
Il contient des executables (mborola..)

par ailleurs j'ai écrit le script bash suivant :

#!/bin/bash

espeak -v mb-fr1 -f /home/toto/lolab/lecture--citations/deleuze | mbrola -e /home/toto/share/espeak-1.42.04-linux/espeak-data/mbrola/fr1 - - | aplay -r16000 -fS16

Je ne me souvient plus en détails des fonctions des arguments qui suivent la commande espeak mais tu peux trouver ça en ligne  ici :
http://espeak.sourceforge.net/commands.html

Tu dois faire en sorte que ton script soit exécutable en bash :
clic droit / propriétés / ouvrir avec / bash
si il n'y est pas tu le crée toi même.

Pour processing, voici le code dont je me suis servis :

void setup() {
  size(200, 200);
}

void draw() {
}

void mousePressed() {
  try {
    Runtime r = Runtime.getRuntime();
    if (r == null)
      System.out.println("Unable to get runtime");
    else
      System.out.println("Runtime aquired");

    System.out.println(r);

    Process p;

    System.out.println("Prepare process for start");
    System.out.flush();

    String cmd = "/home/toto/sketchbook/Tips & Astuces/shell_command/espeak.sh";
    String[]command = {
      "/bin/bash", cmd
    };    
    p = r.exec(command);

  }
  catch (Exception e) {
    System.out.println("Error: " + e);
  }
}

dis moi si ça  le fait pour toi
+++

Hors ligne

 

fil rss de cette discussion : rss

Pied de page des forums

Powered by FluxBB

codelab, graphisme & code : emoc / 2008-2024