Table des matières

, , , , , ,

Synthèse vocale

La synthèse vocale (ou TTS, pour Text To Speech) consiste à transformer un texte en suite de sons se rapprochant autant que possible de la parole humaine. Une des applications les plus évidentes de la synthèse vocale est l'accessibilité pour les mal-voyants. Il existe plusieurs synthétiseurs vocaux sous Linux, cette page ne se veut pas exhaustive.

La synthèse vocale procède en trois temps :

  1. transformation du texte en phonèmes ;
  2. Prosodie (ajout d'informations de prononciation : accents toniques, indication de durée, etc.) ;
  3. assembler des sons pré-enregistrés en suivant les règles établies par les deux premières étapes.

Pour en savoir plus : Wikipedia (fr), Llia-Phon (fr).

Ce document a pour but de présenter la mise en œuvre de quelques solutions.

Comme la reconnaissance vocale va de pair avec la synthèse vocale vous serez sans doute intéressé par le site VoxForge.org. Vous pouvez y enregistrer un texte qui permettra d'intégrer votre voix dans les modèles de reconnaissance vocale, et ainsi les améliorer.

Certains logiciels libres sont compatibles avec les voix Windows (dont certaines peuvent être libres, ou gratuites pour une utilisation non commerciale, voir ressources).

Logiciels de synthèse vocale

Svoxpico

Svoxpico: le lecteur vocal d'Android, de loin celui qui donne les meilleurs résultats, permet de lire n'importe quelle sélection.

gSpeech

gSpeech est une GUI par dessus Svoxpico tout en améliorant sa prononciation sur les mots/expressions les plus courantes. Une description de gSpeech est disponible ici : présentation de gSpeech. Un descriptif plus technique de l'avancement est également disponible sur linuxfr

Via un ppa

Vous pouvez installer gSpeech en ajoutant un ppa :

Vous pouvez trouver les sources sur Github.

eSpeak

Festival

* Festival est un synthétiseur vocal, pour lequel il n'existe apparemment pas de voix française directement pour l'instant (avis aux amateurs…).

Mais il existe un fork pour festival afin d'avoir les voix françaises : Où ? De même festival peut utiliser les voix françaises de Mbrola - (et Sapi).
Il peut fonctionner en mode interactif, même si ça n'a pas l'air très intuitif de prime abord…
Pour l'installer, il suffit d'installer le paquet festival, et d'autres voix anglaises. (voir également plus d'information relative sur wikipedia)

Pour l'utiliser entrez la commande suivante dans un terminal :

echo "That's really a pity I'm not able to speak French"  | festival --tts

Pour connaître les options :

festival --help
Si vous obtenez une erreur du type can't open /dev/dsp, réessayez après avoir fermé toutes les applications (y compris les pages internet nécessitant certains plugins) utilisant le son. On peut éviter le can't open /dev/dsp en redirigeant le son vers ALSA. Pour cela, on demande à festival de sortir le son avec aplay. On Créez le fichier caché .festivalrc dans votre Dossier personnel avec le contenu suivant :
(Parameter.set 'Audio_Command "aplay -t wav -r $SR $FILE")
(Parameter.set 'Audio_Method 'Audio_Command)
(Parameter.set 'Audio_Required_Format 'wav)

MBROLA

Le projet MBROLA a été développé à l'Université de Mons (Institut NUMEDIART), et comporte un grand nombre de langages/voix.

En 2019, MBROLA a été rendu disponible en open source sur github sous license GNU GPL3 Afero. Pour l'installer, il suffit d'installer le paquet mbrola.

Un certain nombre de voix pour Mbrola - pour diverses langues - sont présentes dans les dépôts officiels, pour les installer faites une recherche dans votre gestionnaire de paquets avec le mot clé Mbrola.
Mbrola ne fait pas directement la transformation de texte en voix. Il traite des fichiers de phonèmes. Une autre application, capable de décomposer du texte en phonèmes est donc nécessaire, comme eSpeak. Les voix de Mbrola donnent un rendu plus naturel que celles de eSpeak (lesquelles sont très "robotiques"), d'où l'intérêt de combiner les deux. Par défaut les voix de Mbrola s'installent dans /usr/share/mbrola/. Pour le français il existe fr1, une voix masculine, et fr4 une voix féminine.
Si vous les mettez ailleurs, eSpeak ne les trouvera pas.

Si vous souhaitez ajouter d'autres voix, elles sont téléchargeables depuis le site github. Extraire le fichier zip dans /usr/share/mbrola/. Les voix françaises de mbrola (non libres à ce jour, mais en cours d'ouverture):

MBROLA est également disponible sous forme de fichiers binaires téléchargeables première partie de la page. 2) On extrait le fichier qui correspond à son architecture dans un répertoire au choix, de préférence /usr/share/mbrola (là où se fait l'installation par les dépôts).

Autres

Logiciels en console

Synthèse vocale intégrée à certaines applications

Synthèse vocale dans Pidgin

La synthèse vocale dans Pidgin avec :

Dans le dictionnaire Stardict

Vous pouvez installer :

Dans le dictionnaire Goldendict

Goldendict est un peu le remplaçant de Stardict il permet aussi, dans sa dernière version, d'intégrer un synthétiseur vocale, Pour cela :

Si vous souhaitez ajouter la lecture en d'autres langues, modifiez la commande f par celle de la langue souhaitée.

Synthèse vocale dans LibreOffice ou Apache Openoffice

Il suffit d'installer l'extension readtext ou PicoSvoxOOo pour Apache Openoffice. Il fonctionne avec Svoxpico mais est compatible avec Festival et Espeak. Une fois l'extension installée dans LibreOffice, vous trouverez une icône dans votre barre d'outils en haut à gauche:

Pour l'utiliser, sélectionner le texte à lire, cliquez sur l'icône (la bulle noire), une fenêtre s'ouvre, cliquez sur OK.

Synthèse vocale dans Firefox

Avec Svoxpico l'ajout d'une extension est inutile, Pico faisant déjà le travail de lecture.
Cependant sachez qu'il existe différents modules qui permettent la synthèse vocale des pages consultées :

Depuis la version 49, le mode Lecture s'agrémente de la parole intégrée dans le navigateur et s'appuyant sur la distribution, etc : Détails sur le Blog de MozFr ;

Vous pouvez également utiliser Mathspeak pour la lecture de formule mathématique.
Faites une recherche dans les modules complémentaires pour voir les différents choix possibles.

Synthèse vocale dans Chromium

Avec Svoxpico l'ajout d'une extension est inutile, Pico faisant déjà le travail de lecture.
Cependant sachez qu'il existe différentes extensions qui permettent la synthèse vocale des pages consultées : Installez l'extension SpeakIt ou claroRead Chrome.

Faites une recherche dans les extensions Chrome pour voir les différents choix possibles.

Intégration dans l'environnement de bureau

Il est possible d'intégrer ces solutions dans votre environnement de bureau, afin de faire lire le contenu des répertoires ou des pages internet par exemple.

Sous Unity et Gnome

Par défaut sous Unity et Gnome en général, Orca permet de lire le contenu affiché à l'écran. Ce qui suit sont des alternatives, à travers des scripts à intégrer à l'environnement Gnome. Pensez à adapter la configuration du script à votre convenance. Les scripts qui suivent doivent être intégrés à nautilus-scripts pour leur utilisation. FIXME Comment les arrêter? Refaire cette opération pendant la lecture en cours interrompra la lecture.

FIXME Semble ne pas fonctionner ? Pour utiliser ce script, il faut installer le paquet xclip, puis l'enregistrez selon les indications de cette page en lui donnant le nom LecteurdeSelection.sh:

~/.local/share/nautilus/scripts/LecteurdeSelection.sh
#!/bin/bash
 
##### Affiche le menu Zenity #####
 
choix=`zenity --list --title="Choisissez la langue" --column="N°" --column="Langue" --height="200" \
1 français \
2 anglais `
 
##### Sélection automatique de la langue choisie dans le menu Zenity #####
 
case $choix in
 1 ) VOIX=/usr/share/mbrola/fr4/fr4 && TYPE=mb/mb-fr4 ;; # pour une voix de femme en français
 2 ) VOIX=/usr/share/mbrola/us1/us1 && TYPE=mb/mb-us1  ;; # pour une voix de femme en anglais
esac
 
# on teste si la lecture est en cours, pour l'arrêter le cas échéant
if [ ! -z $(ps -A | grep mbrola | awk '{ print $1 }' ) ]; then
     kill $(ps -A | grep mbrola | awk '{ print $1 }' ) && sleep 2
fi
 
# On traduit la sélection en phonèmes grâce à Espeak, et on l'envoie à Mbrola
xclip -o | espeak -v $TYPE -s 150 -p 40 "$@" | mbrola $VOIX - -.au | aplay
~/.local/share/nautilus/scripts/Readfile.sh
#!/bin/bash
 
######### Début de la section de configuration #########
 
# définition de la voix à utiliser par Mbrola, à adapter selon la voix choisie et son chemin :
VOIX=/usr/share/mbrola/fr4/fr4
#VOIX=/usr/share/mbrola/fr1/fr1 # à décommenter si vous vous voulez une voix d'homme
TYPE=mb/mb-fr4
# TYPE=mb/mb-fr1 # à décommenter si vous vous voulez une voix d'homme
 
######### Fin de la section de configuration #########
 
# on teste si la lecture est en cours, pour l'arrêter le cas échéant
if [ ! -z $(ps -A | grep mbrola | awk '{ print $1 }' ) ]; then
     kill $(ps -A | grep mbrola | awk '{ print $1 }' )
 
else
	# On traduit le fichier en phonèmes grâce à espeak, et on l'envoie à Mbrola
	espeak -v $TYPE -s 150 -f "$@" | mbrola $VOIX - -.au | aplay
fi
~/.local/share/nautilus/scripts/ReadFolder.sh
#!/bin/bash
 
######### Début de la section de configuration #########
 
# définition de la voix à utiliser par Mbrola, à adapter selon la voix choisie et son chemin
VOIX=/usr/share/mbrola/fr4/fr4
TYPE=mb/mb-fr4 # si vous avez téléchargé une voix de femme
# TYPE=mb/mb-fr1 # à décommenter si vous vous voulez une voix d'homme
 
######### Fin de la section de configuration #########
 
# on teste si la lecture est en cours, pour l'arrêter le cas échéant
if [ ! -z $(ps -A | grep mbrola | awk '{ print $1 }' ) ]; then
     kill $(ps -A | grep mbrola | awk '{ print $1 }' )
 
else
 
   #On liste les fichiers contenus dans le répertoire ou bien ceux sélectionnés par la souris
   FICHIERS=`ls -1 --quoting-style=c "$@"`
 
   for TEXTE in $FICHIERS
   do
 
	# On traduit le fichier texte temporaire en phonèmes grâce à Espeak, et on l'envoie à Mbrola
        espeak -v $TYPE -s 140 -p 40 $TEXTE | mbrola $VOIX - -.au | aplay
   done
 
fi

À partir de là vous pouvez faire lire votre sélection de texte ou le contenu du presse-papier (texte copié par [Ctrl+C] par exemple) en cliquant avec le bouton droit sur le bureau ou une fenêtre nautilus et en choisissant "scripts / lit le contenu…"

Pour définir un raccourci clavier reportez-vous à la page xbindkeys.

Voici une liste de fil traitant de divers scripts comportant tous une synthèse vocale :

Sous KDE

Grâce à kttsd KDE offre une manière élégante et simple de lire du texte affiché à l'écran mais par défaut il utilise Festival, il n'y a donc pas de français, c'est pourquoi il faudra aussi installer eSpeak.

Pour le mettre en place il suffit d'installer le paquet espeak et kttsd qui contient:

Pour configurer la synthèse vocale:

Il n'est pas indispensable de sélectionner du texte. Si vous ne le faites pas, tout le fichier sera prononcé.

Voir aussi

Liens

Pages officielles de ces projets, et d'autres :

Sur la documentation ubuntu anglaise.

Wiki rassemblant des liens de synthese vocale :

Tutoriels

Ressources : des voix

Pages en rapport

Reconnaissance vocale (Opération inverse)


Contributeurs : Page initiale par Skippy le Grand Gourou, herberts, Balkoth et Dud, à partir du sujet http://forum.ubuntu-fr.org/viewtopic.php?pid=1469124. Corrections et compléments par Mysteroïd, Psychederic mohican : refonte pour la simplicité d'abord, et ajout de compléments.

2)
Il y a aussi des « .deb » ici (troisième ligne linux)…