[[synthese_vocale]]
Piste: » synthese_vocale
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 :
- transformation du texte en phonèmes ;
- prosodie (ajout d'informations de prononciation : accents toniques, indication de durée, etc.) ;
- 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. Toutes les commandes présentées sont à effectuer dans un terminal.
Espeak
Espeak est disponible dans les dépôts Ubuntu. Rien de plus simple donc que son installation puisqu'il suffit d'installer le paquet espeak.
Il suffit ensuite de donner votre texte en pâture à espeak, soit par l'intermédiaire d'un fichier texte :
espeak -v fr -f texte.txt
ou soit par un "pipe" sur la sortie standard :
echo "Lis mon texte" | espeak -v fr
L'option -v définit la langue/voix à utiliser. D'autres options peuvent être utiles, comme l'option -s qui permet de définir le nombre de mots par minutes, ou -p qui règle la hauteur (grave/aigu) de la voix. Pour plus d'options :
espeak --help
Malheureusement, le rendu d'espeak n'est pas exceptionnel. Il est possible d'obtenir de meilleurs résultats, notamment en le combinant avec MBROLA.
MBROLA
Le projet MBROLA est développé à la faculté Polytechnique de Mons, et comporte un grand nombre de langages/voix.
MBROLA est disponible sous forme de fichiers binaires téléchargeables ici1). On extrait le fichier qui correspond à son architecture (le plus souvent i386) dans le un répertoire au choix, par exemple « /opt ». Il peut ensuite être utile de créer un lien vers ce fichier dans un dossier plus accessible, par exemple :
sudo ln -s /opt/mbrola-linux-i386 /usr/bin/mbrola
On télécharge également une voix (deuxième partie de la page), par exemple celle d'une jolie... euh... brune, on va dire (fr2) qu'on dézippe aussi et qu'on place par exemple également dans « /opt ».
Avec espeak préalablement installé, on peut traduire un texte en phonèmes, en passant à l'option -v les arguments mb/mb-fr1 (voix masculine) ou mb/mb-fr4 (voix féminine). Ici on va rediriger (commande '>') ces phonèmes (qui autrement s'affichent à l'écran) vers un fichier :
espeak -x -v mb/mb-fr4 -f votre_texte > texte.pho
Les fichiers de configuration d'espeak pour mbrola ne sont pas présents dans la version fournie dans les dépôts officiels d'Ubuntu. Pour pouvoir l'utiliser, il faut télécharger la version officielle d'espeak. Ensuite, dézippez le fichier puis copiez le dossier espeak-data/voices/mb dans le répertoire /usr/share/espeak-data/voices/. (Il vous faudra les droits superutilisateur).
Pour faire ensuite parler l'ordinateur, il suffit de lire les phonèmes avec MBROLA et de rediriger la sortie soit vers un lecteur audio :
mbrola /opt/fr2/fr2 texte.pho -.au | aplay
soit vers un fichier wav :
mbrola /opt/fr2/fr2 texte.pho texte.wav
A la place d'utiliser un fichier contenant des phonèmes, on peut aussi directement envoyer à Mbrola la sortie standard :
espeak -x -v mb/mb-fr4 -f votre_texte | mbrola /opt/fr2/fr2 - -.au | aplay
ou (s'il y a des espaces dans votre_texte")
espeak -x -v mb/mb-fr4 -f 'votre texte ici' | mbrola /opt/fr2/fr2 - -.au | aplay
chmod +x mbrola-linux-i386
Pour plus d'information sur les options disponibles :
mbrola -help
Festival
Festival est un autre synthétiseur vocal, pour lequel il n'existe apparemment pas de voix française pour l'instant (avis aux amateurs...). Il peut fonctionner en mode interactif, même si ça n'a pas l'air très intuitif de prime abord...
Un exemple simple :
echo "That's really a pity I'm not able to speak French" | festival --tts
Pour connaître les options :
festival --help
gedit ~/.festivalrc
Puis, on y met:
(Parameter.set 'Audio_Command "aplay -t wav -r $SR $FILE") (Parameter.set 'Audio_Method 'Audio_Command) (Parameter.set 'Audio_Required_Format 'wav)
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 dossiers ou des pages internet par exemple.
Pour Gnome
Voici quelques exemples d'intégration pour l'environnement Gnome.
Lire le texte sélectionné à l'écran
Vous pouvez néanmoins utiliser comme alternative un lanceur intégré au tableau de bord.
Pour faire marcher ce script, enregistrez le où vous voulez et rendez le exécutable. Il faut installez le paquet xclip. Ensuite, il faut aller dans les préférences générales de compiz (Menu Système → Préférences → Advanced Desktop Effects Settings → General Option). Sous l'onglet « Commands », choisissez une ligne vide et rentrez y le chemin vers votre script, sous la forme « /chemin/vers/le/script/nom_du_script ». Ensuite, sous l'onglet « Actions » et la sous partie « Commands », éditez le raccourci correspondant à la ligne où vous avez rentré le script (personnellement, j'utilise Ctrl–D en raccourci clavier, mais c'est vous qui voyez). L'utilisation est simple, vous sélectionnez du texte à l'écran, puis vous tapez votre raccourci. Une seconde pression sur le raccourci pendant la lecture l'interrompt.
#!/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=/opt/fr2/fr2 # TYPE=mb/mb-fr4 # à décommenter si vous avez téléchargé une voix de femme # TYPE=mb/mb-fr1 # à décommenter si vous avez téléchargé 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 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 fi
Lire le contenu d'un fichier texte
Placez ce script dans « /home/VOTRE_LOGIN/.gnome2/nautilus-scripts/ » et le rendre exécutable. Il permet, par un clic droit sur un fichier, menu Scripts → nom_de_votre_script, de lire le contenu de ce fichier. Refaire cette opération pendant la lecture en cours interrompra la lecture.
#!/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=/opt/fr2/fr2 # TYPE=mb/mb-fr4 # à décommenter si vous avez téléchargé une voix de femme # TYPE=mb/mb-fr1 # à décommenter si vous avez téléchargé 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 -p 40 -f "$@" | mbrola ${VOIX} ${TEMP} -.au | aplay fi
Lire la liste des éléments contenus dans un dossier
Placez ce script dans /home/VOTRE_LOGIN/.gnome2/nautilus-scripts/ et le rendre exécutable. Il permet par un clic droit sur un dossier, menu scripts / nom_de_votre_script de lire le contenu de ce dossier. Refaire cette opération pendant la lecture en cours interrompra la lecture.
#!/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=/opt/fr2/fr2 # TYPE=mb/mb-fr4 # à décommenter si vous avez téléchargé une voix de femme # TYPE=mb/mb-fr1 # à décommenter si vous avez téléchargé 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é 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
Autres environnements
Voir aussi
Liens
Pages officielles (ou pas) de ces projets, et d'autres :
Pages en rapport
Contributeurs :
.