Christophe Nowicki

August 27, 2009

Text-to-Speech avec eSpeak, MBROLA et Speech Dispatcher

Je continue à travailler sur l’ajout de la parole dans mon système domotique.
En ajoutant le support des voix MBROLA, je trouvais le code de mon module xPL, de plus en plus difficile à comprendre.
Et je n’étais pas très satisfait du résultat :

  • le module est spécifique à eSpeak ;
  • le nombre d’arguments à passer en ligne de commande au module devenait trop important.

J’ai donc continué mes recherches dans le domaine est découvert Speech Dispatcher.
Il s’agit d’un daemon réseau qui s’occupe de l’abstraction par rapport aux différents systèmes de Text-to-Speech et met à disposition ces ressources à l’aide d’un protocole unique : SSIP.

Dans cette article, je vais décrie l’installation que j’ai mis en place chez moi.
Pour obtenir un voix en Français de qualité correct et compréhensible sur une distribution Debian GNU/Linux version “Lenny”.

Installation de MBROLA

Vous avez besoin de l’exécutable et des voix du projet MBROLA.
Téléchargeables sur le site du projet au format binaire :

$ wget http://tcts.fpms.ac.be/synthesis/mbrola/bin/pclinux/mbr301h.zip
$ unzip mbr301h.zip
$ chmod +x mbrola-linux-i386
# mv mbrola-linux-i386 /usr/local/bin/mbrola
$ mbrola
MBROLA 3.01h - speech synthesizer
Author : Thierry Dutoit with help of AC/DC adaptator Vincent Pagel
Copyright (c) 95 Faculte Polytechnique de Mons (TCTS lab) - T.Dutoit
Email mbrola@tcts.fpms.ac.be to freely subscribe as a user
...

Vous avez ensuite besoin d’une voix :

$ wget http://tcts.fpms.ac.be/synthesis/mbrola/dba/fr1/fr1-990204.zip
$ unzip fr1-990204.zip
# mkdir /usr/share/mbrola/
# mv fr1 /usr/share/mbrola/

Vous pouvez ensuite tester la sortie à l’aide de la commande suivante :

$ espeak -v mb/mb-fr1 "bonjour, c'est la voix de secret story" | mbrola /usr/share/mbrola/fr1/fr1 - - | aplay -r16000 -fS16

Installation et configuration de Speech Dispatcher

Le programme est directement disponible dans Debian.

# apt-get install speech-dispatcher

Il faut ensuite modifier le fichier de configuration /etc/speech-dispatcher/speechd.conf de la manière suivante :

DefaultLanguage "fr"
DefaultVoiceType "MALE1"
AddModule "espeak-generic" "sd_generic" "espeak-generic.conf"
DefaultModule espeak-generic

Et le fichier /etc/speech-dispatcher/modules/espeak-generic.conf :


GenericExecuteSynth \
"echo \"$DATA\" | espeak -v $VOICE -s $RATE -a $VOLUME -p $PITCH $PUNCT --stdin | /usr/local/bin/mbrola /usr/share/mbrola/fr1/fr1 - - | aplay -r16000 -fS16"

Vous pouvez relancer le deamon et vous connecter dessus :

# /etc/init.d/speech-dispatcher restart


$ telnet localhost 6560
SET self CLIENT_name me:and:myself
208 OK CLIENT NAME SET
SPEAK
230 OK RECEIVING DATA
Attention, le frigo est vide
.
225-20
225 OK MESSAGE QUEUED

Références

Voici quelques liens vers des documents intéressants sur le sujet :

Filed under: Debian,Home automation — Tags:, , , — cscm @ 16:41

2 responses to “Text-to-Speech avec eSpeak, MBROLA et Speech Dispatcher”

  1. mattboll says:

    merci pour le blog en général et cet article, simple efficace :) Juste une petite coquille
    espeak -v mb/mb-fr1 “bonjour, c’est la voix de secret story” | mbrola /usr/share/mbrola/fr1 – – | aplay -r16000 -fS16
    devrait être
    espeak -v mb/mb-fr1 “bonjour, c’est la voix de secret story” | mbrola /usr/share/mbrola/fr1/fr1 – – | aplay -r16000 -fS16

  2. cscm says:

    Fixed, merci ;-)

Powered by WordPress