ubuntu-fr

Communauté francophone des utilisateurs d'Ubuntu

[[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 :

  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. 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
La commande mbrola ne fonctionnera que si vous avez mis un lien vers /usr/bin/mbrola. Si ce n'est pas le cas, remplacez mbrola par le chemin vers mbrola-linux-i386, par exemple.
Normalement, les fichiers binaires sont exécutables. Si vous aves un message vous affirmant que vous n'avez pas les droits suffisants, essayez tout de même :

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
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éé un fichier de conf festival avec la commande :

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.

Pensez à adapter la configuration du script à votre convenance

Lire le texte sélectionné à l'écran

L'utilisation de ce script décrite ici nécessite l'utilisation de Compiz.

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

FIXME

Voir aussi

Liens

Pages officielles (ou pas) de ces projets, et d'autres :

Pages en rapport


Contributeurs : FIXME.

1) Il y a aussi des « .deb » ici (troisième ligne linux), je sais pas ce qu'il y a dedans...

synthese_vocale.txt · Dernière modification: 09/10/2008, à 15:52 par 86.210.211.99, 127.0.0.1
Le contenu de ce wiki est sous double licence : CC BY-SA et GNU FDL