Ceci est une ancienne révision du document !



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.

Voir également la page reconnaissance vocale.

A savoir :
  • SAPI : Synthèse vocale sous windows (Speech Application Programming Interface ) : certain logiciel open source sont donc compatible avec les voix windows ( dont certaines peuvent être libre ou en tout cas gratuite pour une utilisation non commerciale voir ressource ).
Il serait utile de continuer la page dans une vision simple en tirant les idées manquantes de :

Logiciels avec synthèse vocale

Il ne s'agit en fait souvent que d'interface se basant sur un moteur de synthèse vocale ( festivale , espeak …) :

Synthèse vocale dans pidgin (simple)

La synthèse vocale dans pidgin avec :

  • pidgin-festival ( besoin d'1 clic même si vous n'avez pas installé festival)

Vous pouvez déjà activer le plugin dans pidgin , mais vous n'aurez qu'une voix anglaise.

Il vous reste donc à installer une voix française et la sélectionner.

Dans le dictionnaire stardict (simple)

Vous pouvez installer :

Synthèse vocale dans openoffice (simple)

Installer l'extension readtext pour openoffice (compatible festival et espeak).

Voir comment installer une extension.

Synthèse vocale dans Firefox

Cliquer ici pour installer l'extension FIREVOX, pour firefox 1)

Basé sur Clickspeak.

Compatible :SAPI 5, Java FreeTTS, and ORCA

Voir le forum ubuntu anglais pour l'installation de clicspeak : et mettre à jour cette partie. Merci.

Vous pouvez également utiliser mathspeak pour la lecture de formule mathématique.

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.

Contrôler son bureau par la voix

Pour Gnome - avec des scripts (utilisateur avancé)

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 du premier script décrit ci-dessous nécessite l'activation 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

Edit d'un autre utilisateur : Ou bien ci-dessous, une alternative avec un menu Zenity pour choisir la langue. Il faut bien sûr ne pas oublier de télécharger cette langue (us1 dans mon exemple) comme vous l'avez fait pour la langue fr4. J'ai aussi changé la boucle "if-else" pour un meilleur fonctionnement si Mbrola est déjà en cours.

#!/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=/opt/fr2/fr2 && TYPE=mb/mb-fr4 ;; # pour une voix de femme en français
 2 ) VOIX=/opt/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

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
# 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 -f "$@" | mbrola $VOIX - -.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é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

Lire le contenu du presse papier ou de la sélection à l'aide d'un racourci clavier

Version améliorée, sans besoin de compiz

Au préalable, installez les paquets suivants : apt://xclip,apt://recode et apt://xbindkeys

Ensuite Installation du script diphorect ⇐cliquez ici, ou voir plus haut

Une fois ces paquets et le script installé, faites :

gedit "$HOME/.gnome2/nautilus-scripts/Lit le presse papier par synthèse vocale"

Copiez-y le script suivant :

#!/bin/bash
#     lecteur vocale de presse papier v1.0 Mysteroïd 18/11/2008
# ! Nécessite les paquets "xclip" et "recode" et le script diphorect !
 
 
# Définition de la voix à utiliser par Mbrola, à adapter selon la voix choisie et son chemin
 
# voix d'homme
VOIX=/opt/fr1/fr1
TYPE=mb/mb-fr1
 
# Décommentez pour une voix de femme
#VOIX=/opt/fr2/fr2
#TYPE=mb/mb-fr4
 
 
# Contenu du presse-papier, sans " et ''recodé'' de JAVA vers utf-8
CLIP=`xclip -o -select p | recode java..u8 | tr -d '"'` 	# contenu primaire simplement sélectionné
if [ -z "$CLIP" ] ; then
	CLIP=`xclip -o -select c | recode java..u8 | tr -d '"'` # ou secondaire (=copié) si aucune sélection active
fi
 
zenity --info --title="Info lecture par synthèse vocale " --text="La lecture du presse-papier va débuter (ou s'arrêter si elle est en cours)"
 
# on teste si la lecture est en cours, pour l'arrêter le cas échéant
if [ -n "$(ps -A | grep mbrola)" ] ; then
	killall -g mbrola
else
	# On traduit le fichier en phonèmes grâce à Espeak
	espeak -v ${TYPE} "${CLIP}" >$HOME/temp.pho
	# On corrige les phonèmes non valides et on envoie à Mbrola
	diphorect $HOME/temp.pho | mbrola ${VOIX} - -.au | aplay
	rm $HOME/temp.pho
fi
 
exit 0

Sauvegardez et rendez le script exécutable par un :

sudo chmod +X "$HOME/.gnome2/nautilus-scripts/Lit le presse papier par synthèse vocale"

À 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 regardez la section xbindkeys de la page comment_creer_raccourcis_clavier Pour utiliser par exemple [ctrl+F12] pour démarrer arrêter la lecture, utilisez :

"$HOME'/.gnome2/nautilus-scripts/Lit le presse papier par synthèse vocale'"
    Control+Mod2 + F12

dans le fichier de configuration de xbindkeys.

Et voilà, en principe tout marche !

Que ce soit pour me le faire savoir ou parce qu'au contraire vous avez un problème… N'hésitez pas à m'envoyer un message par ici : mysteroid.

Réglage du volume avec assistance vocale

Commencez par copier le script suivant dans un nouveau document, puis rendez le exécutable.

# Auteur : benoitfra
# Contributeur : draco31 
# Version : 1.1
# Licence : GPL v3
# Fonction : Réglage du volume avec assistance vocale
# Shell : bash
# Paramètres : aucun
# Dépendance : espeak, mbrola, amixer, zenity, notify-send
#!/bin/bash
 
###### définition de la voix à utiliser ######
VOIX=/opt/mbrola/fr4/fr4 #pour une voix féminine
#VOIX=/opt/mbrola/fr1/fr1 (décommenter pour une voix masculine) 
TYPE=mb/mb-fr4 
#TYPE=mb/mb-fr (décommenter également) 
 
###### réglage volume initiale ######
VolIni=50
 
###### phase de configuration ######
espeak -v $TYPE -s 130 -p 30 "utiliser les touches gauche et droite pour régler le volume" | mbrola $VOIX - -.au | aplay  & 
 
choix=`zenity --scale --title="Réglage du volume" --value="$VolIni" --min-value="0" --max-value="100" --step="10"`
 
amixer -c 0 set PCM $choix%
 
 
###### signal l'opération effectuée par l'utilisateur######
if [ ! -z $(ps -A | grep mbrola | awk '{ print $1 }' ) ]; then
     kill $(ps -A | grep mbrola | awk '{ print $1 }' ) && sleep 2
fi
 
 
espeak -v $TYPE -s 130 -p 30 "volume/réglé/à/$choix/%" | mbrola $VOIX - -.au | aplay &
notify-send "volume réglé à $choix%"
 
exit

Ensuite, libre à vous de lui attribuer un raccourci via le gestionnaire de configuration de Compiz.

Diction de l'heure

Tout d'abord, copiez et collez le script suivant dans un nouveau document et rendez le exécutable.

# Auteur : benoitfra
# Contact : 
# Version : 1.0
# Licence : GPL v3
# Fonction : Diction de l'heure 
# Shell : bash
# Paramètres : aucun
# Dépendance : espeak, mbrola, notify-send
 
#!/bin/bash
 
##### configuration du format de sortie de la date ("man date" pour plus d'option)  ########
HEURE=`date '+%H'`
MINUTE=`date '+%M'`
 
##### chiox du type de voix à utiliser #####
VOIX=/opt/mbrola/fr4/fr4 
TYPE=mb/mb-fr4 
#VOIX=/opt/mbrola/fr1/fr1 (décommenter pour une voix d'homme)
#TYPE=mb/mb-fr1 
 
 
##### test pour savoir si la lecture est en route #####
if [ ! -z $(ps -A | grep mbrola | awk '{ print $1 }' ) ]; then
     kill $(ps -A | grep mbrola | awk '{ print $1 }' ) && sleep 2
fi
 
##### diction de l'heure #####
espeak -v $TYPE -s 130 -p 30 "ilè/$HEURE/heure/et/$MINUTE/minute" | mbrola $VOIX - -.au | aplay &
notify-send "il est $HEURE heure et $MINUTE minutes" 

Ensuite, nous allons intégrer le script à votre bureau. Pour ce faire, rendez vous dans le gestionnaire de configuration de Compiz , puis Générale>Commandes. Choisissez une ligne vide et indiquez le chemin du script. Ensuite, allez à l'onglet "assignation des bords" et sélectionnez un coin de votre écran à associer au script.

Diction du pourcentage de batterie restante

Un peu du même genre que le script précédent, voici un script qui permet de lire le pourcentage de batterie restante. Pour l'installation, procédez de la même manière que pour le script de diction de l'heure ci-dessus. Terminez l'installation en associant le script à un autre coin de votre écran.

# Auteur : benoitfra
# Contact : 
# Version : 1.0
# Licence : GPL v3
# Fonction : Diction du pourcentage de batterie restant 
# Shell : bash
# Paramètres : aucun
# Dépendance : espeak, mbrola, acpi
 
#!/bin/bash
###### variable batterie ######
BAT=`  acpi -b | grep "Battery 0" | awk '{ print $4}' `
 
###### sélection de la voix ######
VOIX=/opt/mbrola/fr4/fr4 
TYPE=mb/mb-fr4 
#VOIX=/opt/mbrola/fr1/fr1 (décommenter pour une voix d'homme)
#TYPE=mb/mb-fr1 
 
###### on vérifie qu'aucune lecture n'est en route auquel cas on la coupe ######
if [ ! -z $(ps -A | grep mbrola | awk '{ print $1 }' ) ]; then
     kill $(ps -A | grep mbrola | awk '{ print $1 }' ) && sleep 2
fi
 
 
###### lit pourcentage de batterie restant ######
espeak -v $TYPE -s 130 -p 30 "ilreste$BAT/debatterie" | mbrola $VOIX - -.au | aplay&
notify-send "il vous reste $BAT de batterie"

Assistance à la navigation pour Nautilus

Le script à pour but de permettre la lecture des noms de fichier/dossier pendant la navigation

Pour commencer, copier et rendre exécutable le script suivant, sans oublier de configurer l'emplacement des voix Mbrola. Ce script sert à lire le nom de l'élément sélectionné.

#!/bin/bash
# PLACE=`echo ${0##*/}`
PLACE=`echo $(basename "$1")`
 
VOIX=/opt/mbrola/fr4/fr4 
 
TYPE=mb/mb-fr4 
 
if [ ! -z $(ps -A | grep mbrola | awk '{ print $1 }' ) ]; then
     kill $(ps -A | grep mbrola | awk '{ print $1 }' ) && sleep 2
fi
 
espeak -v $TYPE -s 130 -p 30 "$PLACE" | mbrola $VOIX - -.au | aplay

Pour l'exemple, le script ci-dessus sera nommé name.sh Puis, installer nautilus-action, lancer le via Préférences>Configuration des actions nautilus. Créer une nouvelle action, puis dans l'onglet action, champ "context label" nommé l'action _name (sans oublier le _) cocher les deux premières cases. Ensuite, se rendre dans l'onglet "Command", champ "Path", indiquer le chemin du script name.sh Champ "Parameters", indiquer %m Enregistrer et quitter nautilus-actions

Voilà, la configuration de nautilus-action est terminée.

Maintenant, installer le paquet "xdotool". Ensuite, copier dans un nouveau document le script suivant et le rendre exécutable, ne pas oublier de configurer l'emplacement des voix Mbrola pour votre configuration.

#!/bin/bash
# Auteur : benoitfra
# Contributeur : draco31 
# Version : 1.1
# Licence : GPL v3
# Fonction :module d'assistance vocale pour Nautilus
# Shell : bash
# Paramètres : aucun
# Dépendance : espeak, mbrola, zenity, xdotool, notify-send
 
###### Configuration de la voix ######
VOIX=/opt/mbrola/fr4/fr4 
TYPE=mb/mb-fr4
 
###### Initialise variable de mouvement ######
MOVE="1"
 
###### Signal d'ouverture pour l'utilisateur ######
espeak -v $TYPE -s 130 -p 30 "Démarrage du module d'aide à la navigation" | mbrola $VOIX - -.au | aplay & notify-send "Démarrage du module d'aide à la navigation" -t "2" ;
 
###### Phase de diction des instructions de Navigation ######
# Variable pour la lecture des instructions (donne la valeur par défaut si pas de fichier de conf)
INSTRUCTION_NAVIGATION=oui
 
# Si fichier de conf existe, on le lit pour charger les paramètres (remplace la valeur de INSTRUCTION_NAVIGATION)
[ -r $HOME/.config_synthese_vocale ] && source $HOME/.config_synthese_vocale 
 
 
# Si l'utilisateur n'avait pas choisit "non" précédemment ...
if [ "$INSTRUCTION_NAVIGATION" != "non" ] ; then
    espeak -v $TYPE -s 130 -p 30 "Voulez-vous connaître les instructions de navigation?" | mbrola $VOIX - -.au | aplay &
    zenity --question --title "Voulez vous savoir comment naviguer?" --text "dicter les instructions ?" 
INFO=$?
 
    case $INFO in
        0 ) espeak -v $TYPE -s 130 -p 30 "z haut" | mbrola $VOIX - -.au | aplay ;/
            espeak -v $TYPE -s 130 -p 30 "s bas" | mbrola $VOIX - -.au | aplay ;/
            espeak -v $TYPE -s 130 -p 30 "q gauche" | mbrola $VOIX - -.au | aplay ;/
            espeak -v $TYPE -s 130 -p 30 "d droite" | mbrola $VOIX - -.au | aplay ;/
            espeak -v $TYPE -s 130 -p 30 "a relire" | mbrola $VOIX - -.au | aplay ;/
            espeak -v $TYPE -s 130 -p 30 "e stop" | mbrola $VOIX - -.au | aplay ;/
            espeak -v $TYPE -s 130 -p 30 "c copier" | mbrola $VOIX - -.au | aplay ;/
            espeak -v $TYPE -s 130 -p 30 "v coller" | mbrola $VOIX - -.au | aplay ;/
            espeak -v $TYPE -s 130 -p 30 "x xouper" | mbrola $VOIX - -.au | aplay ;/
            espeak -v $TYPE -s 130 -p 30 "p dossierparent" | mbrola $VOIX - -.au | aplay ;/
            espeak -v $TYPE -s 130 -p 30 "slach supprimer" | mbrola $VOIX - -.au | aplay ;;
# Sauvegarder le choix de ne plus lire les instrcutions
        1 ) echo "INSTRUCTION_NAVIGATION=non" >> $HOME/.config_synthese_vocale ;;
    esac;
fi
 
####### Fin de la phase de diction ######
 
####### Boucle de Navigation ######
for ((nr=1 ; nr<=$MOVE; nr++))  
do 
 
choix=`zenity --entry --title "Navigation" --text ""`
 
 
case $choix in
    z ) xdotool key "Up" ; xdotool key "Menu+n" && MOVE=$(($MOVE+1)) ;; # aller en haut
    s ) xdotool key "Down" ; xdotool key "Menu+n" && MOVE=$(($MOVE+1)) ;; # aller en bas 
    q ) xdotool key "Left" ; xdotool key "Menu+n" && MOVE=$(($MOVE+1)) ;; # aller à gauche 
    d ) xdotool key "Right" ; xdotool key "Menu+n" && MOVE=$(($MOVE+1)) ;; # aller à droite
    a ) xdotool key "Menu+n" && MOVE=$(($MOVE+1)) ;; # répéter
    e ) notify-send "Fermeture du module d'aide à la navigation" &  espeak -v $TYPE -s 130 -p 30 "Fermeture du module d'aide à la navigation" | mbrola $VOIX - -.au | aplay ;     exit ;; # sortir
    "") MOVE=$(($MOVE+1)) ;; # vous n'avez rien tapez
    c ) xdotool key "Menu+n" ; xdotool key "ctrl+c" ; MOVE=$(($MOVE+1)) ;; # copier
    v ) xdotool key "ctrl+v" ; xdotool key "Menu+n" ; MOVE=$(($MOVE+1)) ;; # coller
    x ) xdotool key "Menu+n" ; xdotool key "ctrl+x" ; MOVE=$(($MOVE+1)) ;; # couper
    p ) xdotool key "BackSpace" ; MOVE=$(($MOVE+1)) ;; # retour arrière
    / ) xdotool key "Delete" ; MOVE=$(($MOVE+1)) ;; # supprimer
esac;
 
done
 
exit

Pour finir, redémarrer l'ordinateur et lancer le second script. Normalement, cela fonctionne.

Pour toutes remarques ou conseils, je vous invite à vous rendre sur le forum http://forum.ubuntu-fr.org/viewtopic.php?pid=3663208

Pour KDE

KDE offre une manière élégante et simple 2) de lire du texte affiché à l'écran : KTTS .

Vous pouvez le mettre en place en cliquant ici, ou :

sudo apt-get install kttsd ksayit
  • kttsd est le démon.
  • KSayIt une application permettant de lire un document copié ou que l'on tape.
  • La synthèse vocale sera également intégrée dans Konqueror et dans Kate[3]

Commençons par créer un script qui enchaîne les différentes étapes, créer /opt/mbrola/tts et insérer :

#!/bin/sh
echo $1 | iconv -f UTF-8 -t ISO_8859-1 > $2
/opt/mbrola/lliaphon/bin/lliaphon $2 > /tmp/log 2>&1
/opt/mbrola/mbrola -e -t 0.75 \
      -I /opt/mbrola/lliaphon/share/lliaphon/initfile.lia \
      /opt/mbrola/fr2/fr2 \
      `echo $2|sed s/\.txt$/\.ola/` $3 >> /tmp/log 2>&1

Sans oublier de donner les droits d'éxecution :

 chmod u+x /opt/mbrola/tts

Pour configurer ktts, deux solutions :

  • à partir de KSayIt : Settings/Configure KSayIt/Launch Control Center
  • en lançant kttsmgr à partir de la ligne de commande

Puis nous allons configurer kttsmgr pour qu'il utilise le couple lliaphon/mbrola :

  • Talkers / Ajouter / Langue: autre / Synthesizer: Show all - commande
  • Choisir la langue dans la fenêtre qui apparaît
  • Entrez la commande : /opt/mbrola/tts %t %f %w

Et voila, relancez Konqueror et vous avez maintenant une option pour lire le texte sélectionné.

Programme console

  • yasr
  • screader
  • eflite (emacspeak)

Autres environnements

FIXME

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 patch (ou un fork) pour festival afin d'avoir les voix françaises : Franfest.

De même festival peut utiliser les voix française 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…

Site officiel : http://www.cstr.ed.ac.uk/projects/festival/

Installer festival, et d'autres voix anglaises. ( voir également plus d'information relative sur wikipedia )

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)

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.

Site officiel : http://espeak.sourceforge.net/

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

soit directement en ligne de commande :

espeak -v fr "Votre texte à lire..."

ou encore 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.

Site officiel : http://tcts.fpms.ac.be/synthesis/mbrola.html

Installer mbrola en cliquant ici.

Les voix françaises de mbrola (non libre):

MBROLA est également disponible sous forme de fichiers binaires téléchargeables ici3). On extrait le fichier qui correspond à son architecture (le plus souvent i386) dans 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), 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_fichier_texte > texte.pho

Le paragraphe ci-dessous ne semble pas valide pour les dernières versions, dans Hardy par exemple tout le nécessaire est déjà installé avec espeak… faites un
ls /usr/share/espeak-data/voices/mb

pour vérifier l'existence des fichiers nécessaires

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

ou pour passer par pulseaudio

mbrola /opt/fr2/fr2 texte.pho -.au | paplay

soit vers un fichier wav :

mbrola /opt/fr2/fr2 texte.pho texte.wav

À la place d'utiliser un fichier contenant des phonèmes, on peut aussi directement envoyer à Mbrola la sortie standard :

espeak -v mb/mb-fr4 -f votre_fichier_texte | mbrola /opt/fr2/fr2 - -.au | aplay

ou

espeak -v mb/mb-fr4 '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 avez 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

Il semble que l'expression "on a" génère un phonème "n2" illisible par Mbrola. Pour contourner ce problème si vous l'avez également, voir ci-dessous
Ou tout simplement ajouter
mbrola -e -C "n n2" /opt/fr2/fr2 - -.au

-e = IGNORE fatal errors on unkown diphone -C CL = Phoneme CLONE list of the form a A b B …

1- Il vous faudra dans ce cas procéder en 2 étapes, créez un fichier des phonèmes de votre texte à lire par :

espeak -v mb/mb-fr1 -f "votre_fichier_texte" > texte.pho

ou

espeak -v mb/mb-fr1 "votre texte à lire ici..." > texte.pho

2- Envoi des phonèmes (corrigés au passage) vers Mbrola puis aplay pour lecture.

diphorect.sh "texte.pho" | mbrola /opt/fr1/fr1 - -.au | aplay
Il vous faudra au préalable installer le script "diphorect" sur votre ordinateur comme indiqué ci-dessous

Installation du script diphorect

script de conversion du phonème problématique "n2"

Tappez :

sudo gedit /usr/bin/diphorect.sh

Copiez et collez le script indiqué ci-dessous :

#!/bin/bash
# diphorect.sh v0.1.2, par Mysteroïd le 03/01/2009
# à rendre exécutable et à placer dans /usr/bin/ ou créer un lien par ln -s <chemin/diphorect.sh> /usr/bin/diphorect.sh
 
# Remplace le phonème n2 par n dans le fichier passé en argument et renvoi le contenu corrigé sur la sortie standard
 
checkphonem(){
	if [ "${1:0:2}" = "n2" ]
	then
		NEWLINE=`echo "n ${1:2}"`
	else
	    if [ "${1:0:2}" = "z3" ]
	    then
		NEWLINE=`echo "s ${1:2}"`
	     else
		NEWLINE="$*"
	     fi
        fi
}
 
echo -n $NEWLINE >"$1.new"
IFS=""
 
while read LINE
do
	((LINENBR = LINENBR + 1))
	checkphonem $LINE
	echo $NEWLINE >>"$1.new"
done <"$1"
 
cat "$1.new"
rm "$1.new"
 
exit 0

Ensuite fermez Gedit et rendez le script exécutable par :

sudo chmod +X /usr/bin/diphorect.sh

Et voilà, vous êtes prêt ! ;-)

Liens

Pages officielles de ces projets, et d'autres :

Sur la documentation ubuntu anglaise.

  • emofilt un logiciel open-source qui permet d'ajouter de l'émotion à la parole

Wiki rassemblant des liens de synthese vocale :

Tutoriaux

Ressources : des voix

Les voix françaises de mbrola (non libre):

Reconnaissance vocale (Opération inverse)


Contributeurs : Page initiale collaborative 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 : refonte pour la simplicité d'abord, et ajout de compléments.


1)
clicspeak y est intégré
2)
comme toujours
3)
Il y a aussi des « .deb » ici (troisième ligne linux), je sais pas ce qu'il y a dedans…
  • synthese_vocale.1282509251.txt.gz
  • Dernière modification: Le 18/04/2011, 14:58
  • (modification externe)