Références tirées de https://doc.ubuntu-fr.org/synthese_vocale
http://rpihome.blogspot.fr/2015/02/installing-pico-tts.html
http://www.pobot.org/Synthese-vocale-avec-espeak-et.html

1. PicoTTS = Svoxpico

Prerequis : mettre ça dans /etc/apt/sources.list

  deb http://mirrordirector.raspbian.org/raspbian/ wheezy main contrib non-free rpi
  deb-src http://mirror.ox.ac.uk/sites/archive.raspbian.org/archive/raspbian/ wheezy main contrib non-free rpi

puis

  sudo apt-get update

puis

  sudo apt-get install fakeroot debhelper automake autoconf libtool help2man libpopt-dev hardening-wrapper

puis

  mkdir pico_build
  cd pico_build
  apt-get source libttspico-utils

After downloading the sources, you should find a folder named like svox-1.0+git20110131 that will contain all the files. Note that the last part could be different, so please check before proceeding.

  cd svox-1.0+git20110131
  dpkg-buildpackage -rfakeroot -us -uc

If no errors arose during packages compilation, you should find four packages in the pico_build folder. Check by changing folder and listing files:

  cd ..
  ls
  

These are the packages in my folder:

  libttspico0_1.0+git20110131-2_armhf.deb
  libttspico-data_1.0+git20110131-2_all.deb
  libttspico-dev_1.0+git20110131-2_armhf.deb
  libttspico-utils_1.0+git20110131-2_armhf.deb

To use the library you just need three of them, but they have to be installed in a specific order, so type:

  sudo dpkg -i libttspico-data_1.0+git20110131-2_all.deb
  sudo dpkg -i libttspico0_1.0+git20110131-2_armhf.deb
  sudo dpkg -i libttspico-utils_1.0+git20110131-2_armhf.deb

Normalement c'est installé. Pour tester :

  pico2wave -l fr-FR -w /tmp/temp.wav "Il fait une température extérieure de : 15°" ; aplay /tmp/temp.wav

Fonctionne bien, les voix sont propres et fluides. Malheureusement, il semble n'y avoir qu'une voix par langue. Les langues semblent être définies dans le dossier suivant : /usr/share/pico/lang Mais malheureusement les fichiers sont dans un format bin … ; et après pas mal de recherche sur google, rien à propos d'un paramétrage possible de l'outil …

2. espeak

  sudo apt-get install espeak

Exemples : quelques tests, qui fonctionnent plus ou moins bien (son pas terrible)

  espeak "Bonjour Benoît" -v french -s 200 -p 40
  espeak -vfr  "il est 12 heure et 7 minute" -s 120 -p 40 2>/dev/null
  espeak -vfr+3  "il est 12 heure et 7 minute" -s 120 -p 40 2>/dev/null
  espeak -vfr-fr  "il est 12 heure et 7 minute" -s 120 -p 40 2>/dev/null
  echo "il est 12 heure et 7 minute" | espeak -vfr-fr -s 120 -p 40 2>/dev/null
  wget -q0 -http://www.confessions-voleur.net/confessions/node1.html | espeak -m -vfr+11

Le +11 permet de changer la voix

Remarque :

Dans le cas des caractère accentué fournis en UTF-8, il risque d'y avoir des pb car espeak et mbrola sont vieux et fonctionnent avec du iso8859-1. ==> on doit convertir l'encodage avant de passer les commandes :
   echo "vive les textes accentués" | iconv -t iso8859-1 -f utf8 - | commande espeak à faire écouter

gespeaker : surcouche graphique de espeaker

3. mbrola
Le projet MBROLA est développé à la faculté Polytechnique de Mons, et comporte un grand nombre de langages/voix. Hélas MBROLA n'est pas libre. Pour l'installer, il suffit d'installer le paquet mbrola.
Pour ça, le site web est ici : http://tcts.fpms.ac.be/synthesis/mbrola/mbrcopybin.html
Par contre attention il faut prendre la version mbrola pour raspberry_pi

Récupérer la voix fr1 : http://tcts.fpms.ac.be/synthesis/mbrola/dba/fr1/fr1-990204.zip
Toutes les voix sont disponibles ici : http://tcts.fpms.ac.be/synthesis/mbrola/mbrcopybin.html

Décompresser et installer le dossier fr1 de l'archive dans le répertoire /usr/share/mbrola/

Tester le code suivant, si ça produit le son, mbrola est bien installé

  mbrola /usr/share/mbrola/fr1/fr1 /usr/share/mbrola/fr1/TEST/bonjour.pho bonjour.wav ; aplay bonjour.wav

Ce que j'ai compris, le fonctionnement de espeak avec mbrola est le suivant ; espeak effectue les actions suivantes : 1. traduit le texte en syllabes phonétique avec les paramètres langue et voix
2. appelle mbrola pour construire un fichier son wav
3. exécute la lecture de ce fichier wav
4. le supprime

Dans le cas ou mbrola n'est pas appelé, espeak utilise son propre moteur de conversion phonétique–>wav, et s'attend à utiliser ses propres voix (définies dans /usr/lib/arm-linux-gnueabihf/espeak-data/)

Remarque : Pour utiliser mbrola, les dossiers suivants de espeak sont importants :

   /usr/lib/arm-linux-gnueabihf/espeak-data/voices/mb : contient la définition des voix espeak qui utiliseront mbrola
   /usr/lib/arm-linux-gnueabihf/espeak-data/voices  est en fait une arbo qui contient toutes les voix de espeak, y compris celles qui n'utilise pas mbrola.
   /usr/lib/arm-linux-gnueabihf/espeak-data/mbrola_ph : contient d'autres fichiers nécessaires pour appeler mbrola ... (les fichiers <voice>_phtrans )
  
  D'autres dossiers mbrola existent
   /usr/share/mbrola/   : contient la définition des voix mbrola
   /usr/share/mbrola/voices
   /usr/share/doc/espeak-data (répertoire ne contenant aucune voix)
   

Au final par déduction de test, on conclue que c'est l'arborescence /usr/lib/arm-linux-gnueabihf/espeak-data/voices qui stocke les voix prise en compte par espeak.

J'ai réussi à faire en sorte que espeak appelle mbrola en tapant la ligne de commande suivante après avoir défini le fichier /usr/lib/arm-linux-gnueabihf/espeak-data/voices/mb/fr1

   espeak -v mb/fr1  "il est 12 heure" -x
   cat /usr/lib/arm-linux-gnueabihf/espeak-data/voices/mb/fr1
        name french
        language fr-fr
        language fr
        gender male
        
        dictrules 1
        stressLength 180 180 180 180 0 0 220 220
        pitch 82 117
        voicing 70
        
        mbrola fr1/fr1 fr1_phtrans     

Ce fichier indique à espeak d'aller chercher la voix mbrola /usr/share/mbrola/voices/fr1/fr1. Il contient aussi un ensemble de paramètre de la voix synthétique

  1. stressLength : vitesse de diction
  2. pitch : tonalité
  3. voicing : volume sonore

Important : Visiblement espeak semble grésiller quand il utilise les voix mbrola. J'ai réussi à empêcher ces grésillements en découplant la génération du fichier wav et sa lecture. Ci-dessous la commande

   espeak -v mb/fr1 -x -s 110  "Coucou tout le monde. " -w ~/test.wav ; aplay ~/test.wav

4. festival
Festival est un synthétiseur vocal, pour lequel il n'existe apparemment pas de voix française directement pour l'instant

5. Par google
http://gladysproject.com/fr/article/faire-parler-le-raspberry

Google Text to Speech Google’s Text to Speech engine is a little different to Festival and Espeak. Your text is sent to Google’s servers to generate the speech file which is then returned to your Pi and played using mplayer. This means you will need an internet connection for it to work, but the speech quality is superb.

I used used ax206geek’s bash script to access the Google Text to Speech engine:

Create a file speech.sh with:

nano speech.sh Add these lines to the file and save it (in nano editor use CTRL-O writeOut)

#!/bin/bash
say() { local IFS=+;/usr/bin/mplayer -ao alsa -really-quiet -noconsolecontrols "http://translate.google.com/translate_tts?tl=en&q=$*"; }
say $*

Alternatively save from here: File:Speech.sh

Add execute permissions to your script with:

chmod u+x speech.sh Test it using:

./speech.sh Look Dave, I can see you're really upset about this.