View  Edit  Attributes  History  Attach  Print  Search

ACCUEIL | ARDUINO > S'INSTALLER > DEBUTER > APPROFONDIR | PROCESSING | MECATRONIQUE | MATERIEL | OUTILS | TESTS | Plus...|
Python > Shell > ATELIERS Python + Qt > PyQt apps > PyQt+Arduino | Mes Robots | RepRap | Mes lib'Arduino | Mes shields Arduino | Mes distros | Les Mini-PC |
ATELIERS ARDUINO| VIDEOS | COMPRENDRE | REFERENCES | CODER | TECHNIQUE | GNU/LINUX | LIENS | Rien à voir |

Outils > Processing

Processing – Synthese vocale avec espeak lancé en ligne de commande depuis Processing

Explication

  • Espeak est un logiciel de synthèse vocale, notamment en français, qui permet de réaliser de la synthèse vocale à partir d'une chaîne de caractères (Text to Speech - TTS). Ce logiciel offre la possibilité de paramétrer le type de voix (voix masculine, féminine ou spéciale), la vitesse, la hauteur de la voix, etc..
  • Il existe une interface graphique de Espeak sous Ubuntu appelée Gespeaker et disponible depuis la logithèque Ubuntu. Noter qu'il est possible de créer des fichiers sons à partir de Gespeaker, utilisables avec Minim ou Mplayer.
  • Ce programme suppose donc que espeak soit installé sur votre distribution Ubuntu. Le logiciel sera lancé depuis la ligne de commande.

Ressources utiles

Le programme

  • Copier/coller ce programme dans Processing
  • Lancer l'exécution : vous devez entendre le texte synthétisé !

// Programme processing
// généré avec le générateur de code Processing
// www.mon-club-elec.fr
// par X. HINAULT - Mars 2011 - tous droits réservés

/////////////// Description du programme ////////////

// XXXXXXXXXXXXXXXXXXXXXX ENTETE DECLARATIVE XXXXXXXXXXXXXXXXXXXXXX

// inclusion des librairies utilisées

// déclaration objets
String[] command ;

// déclaration variables globales

// XXXXXXXXXXXXXXXXXXXXXX  Fonction SETUP XXXXXXXXXXXXXXXXXXXXXX

void setup(){ // fonction d'initialisation exécutée 1 fois au démarrage



} // fin fonction Setup

// XXXXXXXXXXXXXXXXXXXXXX Fonction Draw XXXXXXXXXXXXXXXXXXXX

void  draw() { // fonction exécutée en boucle

// --- initialisation des objets et fonctionnalités utilisées ---

direTexte("moteur droit en marche avant, vitesse à 56 pour cent, et capteur de distance orienté à 92 degrès, objet détecté à 126 degrès.");
delay(1000);


direTexte("Voulez-vous votre café sucré ou salé ? (entre-nous, salé c'est dégueu)");
delay(1000);

direTexte("Latitude  30 degrès 15 minutes et 13 secondes Ouest - Vitesse = 126 kilomètres heures");
delay(1000);

direTexte("Vitesse de la lumière activée. Variation temporelle en cours d'acquisition.");
delay(1000);

direTexte("Il est exactement l'heure qu'il est à la seconde précise où je parle");
delay(1000);

// test avec une variable
int valeur=3273;

direTexte("La variable valeur vaut :" + str(valeur) + "soit en héxadécimal :" + hex(valeur));

direTexte("Le nombre pi vaut :" + str(PI) );

while(true); // stoppe boucle draw

} // fin de la fonction draw()



// XXXXXXXXXXXXXXXXXXXXXX Autres Fonctions XXXXXXXXXXXXXXXXXXXXXX

void direTexte(String texte) {
  // le paquet espeak doit etre installé sous Ubuntu (depuis la logithèque)

command = new String[8];
// espeak -v fr -s 140 « lecture texte espeak »
// espeak -v fr -s 80 -p 30 \"moteur droit en marche avant\"
command[0] = "espeak";
command[1] = "-v";
command[2]="fr+m4";
// les voix sont dans /usr/share/espeak-data/voices/!v
// les variantes dispo sont : croak  f1  f2  f3  f4  fast  klatt  klatt2  klatt3  m1  m2  m3  m4  m5  m6  m7  whisper
// pour utiliser une variante faire :  espeak -ven+m3
command[3]="-s"; // la vitesse
command[4]="120"; // entre 30 et 200
command[5]="-p"; // la tonalité
command[6]="30"; // entre 0 et 99
command[7]="\""+texte+"\""; // le texte entre guillemets

//--- exécution de la ligne de commande
try {
    Process p = exec(command); // exécute la commande

    //--- récupère la sortie de la commande dans la console de Processing
    BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));
    String line = null;
    while ((line = in.readLine()) != null) {
      System.out.println(line);

    }

  }
  catch (IOException e) {
    e.printStackTrace();
  }  

}

/* >>>>>>>>>>>>>>>>>>>>>>>>> page man de espeak <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

ESPEAK(1)                                                            ESPEAK(1)

NAME
       espeak - A multi-lingual software speech synthesizer.

SYNOPSIS
       espeak [options] [<words>]

DESCRIPTION
       espeak  is  a  software  speech synthesizer for English, and some other
       languages.

OPTIONS
       -h     Show summary of options.

       -f <text file>
              Text file to speak

       --stdin
              Read text input from stdin instead of a file

       If neither -f nor --stdin, <words> are spoken, or if none then text  is
       spoken from stdin, each line separately.

       -q     Quiet, don't produce any speech (may be useful with -x)

       -a <integer>
              Amplitude, 0 to 20, default is 10

       -l <integer>
              Line  length. If not zero (which is the default), consider lines
              less than this length as and-of-clause

       -p <integer>
              Pitch adjustment, 0 to 99, default is 50

       -s <integer>
              Speed in words per minute, default is 160

       -v <voice name>
              Use voice file of this name from espeak-data/voices

       -b     Input text is 8-bit encoding

       -m     Indicates that the text contains SSML (Speech  Synthesis  Markup
              Language) tags or other XML tags. Those SSML tags which are sup&#8208;
              ported are interpreted. Other tags, including HTML, are ignored,
              except  that  some HTML tags such as <hr> <h2> and <li> ensure a
              break in the speech.
      -w <wave file name>
              Write output to this WAV file, rather than speaking it directly

       -x     Write phoneme mnemonics to stdout

       -X     Write phonemes mnemonics and translation  trace  to  stdout.  If
              rules  files  have been built with --compile=debug, line numbers
              will also be displayed.

       --stdout
              Write speech output to stdout

       --compile=<voice name>
              Compile the pronunciation rules and dictionary  in  the  current
              directory.  =<voice  name>  is optional and specifies which lan&#8208;
              guage

       --path=<path>
              Specifies the directory containing the espeak-data directory

       --phonout=<filename>
              Write output from -x -X commands and mbrola phoneme data to this
              file

       --punct="<characters>"
              Speak  the  names  of punctuation characters during speaking. If
              =<characters> is omitted, all punctuation is spoken.

       -k <integer>
              Indicate capital letters with: 1=sound, 2=the  word  "capitals",
              higher values = a pitch increase (try -k20).

       --voices[=<language code>]
              Lists  the available voices. If =<language code> is present then
              only those voices which  are  suitable  for  that  language  are
              listed.

       --compile=voicename
              Compile  the  pronunciation  rules and dictionary in the current
              directory. =<voice name> is optional and  specifies  which  lan&#8208;
              guage

       --compile=debug
              Compile  the  pronunciation  rules and dictionary in the current
              directory as above, but include line  numbers,  that  get  shown
              when -X is used.

AUTHOR
       eSpeak  was written by Jonathan Duddington <jonsd@jsd.clara.co.uk>. The
       webpage  for  this  package  can  be  found  at   http://espeak.source&#8208;
       forge.net/.

       This manual page was written by Luke Yelavich <themuso@ubuntu.com>, for
       the Ubuntu project (but may be used by others).

                                 July 25, 2007                       ESPEAK(1)


>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
*/