Synthèse vocale avec Festival

Synthèse vocale

Vaste sujet que celui de la synthèse vocale, en bref, c’est l’art de créer une parole artificielle à partir d’une entrée textuelle.

Une technique courante repose sur l’identification de phonèmes à partir d’un texte (unité distinctive, par exemple /a/, /t/, etc) puis en leurs concaténations à l’aide de diphones (les transitions). Pour améliorer le résultat et réduire le nombre de mauvaises transitions, d’autres méthodes comme la sélection de diphones ou d’unités sont apparues.

En assemblant de petits segments de parole naturelle pré-enregistrés et en jouant sur le rythme, l’intensité et surtout l’intonation on obtient une synthèse plus ou moins naturelle.

Festival

Festival est un framework permettant la création d’applications mettant en place une synthèse vocale grâce à différentes API : Scheme, C++, Java. Il est multi-langue et propose une synthèse des langues anglaise (britanique et américain) et espagnole.

Festival est écrit en C++ et repose sur la bibliothèque Edinburgh Speech Tools Library, un ensemble de classes permettant de manipuler les objets du langage (classification, reconnaissance, etc).

Festival est un logiciel libre sous licence X11 sans restriction pour une utilisation commerciale.

Installer Speech Tools

La suite de l’installation se déroule sur une distribution Ubuntu Hardy Heron « out of the box ».

Télécharger Festival et Speech Tool :

  • speech_tools-1.2.95-beta.tar.gz
  • festival-1.95-beta.tar.gz

Pour travailler tranquillement, créer un répertoire /synthese_vocale dans /opt et y décomppresser les deux archives.

La compilation des sources nécessite un gcc-3.3 (par défaut 4.2 sur Hardy), changer le lien symbolique de /usr/bin pour utiliser ce compilateur lors de l’appel à gcc.

nico@laptop:/usr/bin$ sudo rm gcc
nico@laptop:/usr/bin$ sudo ln -s gcc-3.3 gcc

Configurer :

nico@laptop:/usr/bin$ cd /opt/synthese_vocale/speech_tools
nico@laptop:/opt/synthese_vocale/speech_tools$ ./configure

Décommenter la ligne « SHARED=1″ dans ./opt/synthese_vocale/speech_tools/config/config.

Compiler :

nico@laptop:/opt/synthese_vocale/speech_tools$ ./make

Premier échec de la compilation avec un joyeux : « undefined reference to `std::cout’ with gcc », en fait, gcc ne trouve pas libstdc++, créer un lien symbolique.

nico@laptop:/usr/libs$ sudo ln -s libstdc++.so.5.0.7 libstdc++.so

Après relance, second échec, gcc ne connaît pas « /usr/bin/ld: cannot find -lcurses », il suffit d’installer le paquet concerné, puis relancer la compilation.

nico@laptop:/usr/libs$ sudo apt-get install libncurses5-dev 
nico@laptop:/usr/libs$ cd /opt/synthese_vocale/speech_tools
nico@laptop:/opt/synthese_vocale/speech_tools$ ./make

Une fois la compilation réussie, lancer les tests pour une ultime vérification :

nico@laptop:/opt/synthese_vocale/speech_tools$ ./make test
...
test tilt (script)
tilt script completed
tilt script status: CORRECT
test lpc (script)
LPC params
MFCC params
lpc script completed
lpc script status: CORRECT
-------------
Test OK

Installer Festival

Télécharger les voix et lexiques nécessaires aux tests :

  • festlex_CMU.tar.gz
  • festlex_OALD.tar.gz
  • festlex_POSLEX.tar.gz
  • festvox_don.tar.gz
  • festvox_kedlpc16k.tar.gz
  • festvox_rablpc16k.tar.gz
  • festvox_kallpc16k.tar.gz

Extraire l’archive festival et toutes celles ci-dessus pour y ajouter leurs contenus.

Configurer :

nico@laptop:/opt/synthese_vocale/festival$ ./configure
...
checking whether byte ordering is bigendian... no
updating cache ./config.cache
creating ./config.status
creating config/config

Compiler :

nico@laptop:/opt/synthese_vocale/festival$ make
...
Main Scripts: festival festival_client
Scripts: (sh) (prl) festival_server festival_server_control
Making in directory ./doc ...
../bin/festival -man_options >festival.options
cat festival.head festival.options festival.tail >festival.1
../bin/festival_client -man_options >festival_client.options
cat festival_client.head festival_client.options 
festival_client.tail >festival_client.1
rm festival.options festival_client.options

Lancer les tests :

nico@laptop:/opt/synthese_vocale/festival$ make test
...
test scherr (script)
scherr script completed
scherr script status: CORRECT

Utilisation

L’exécutable « festival » présent dans /bin permet de synthétiser un texte à la volée avec de multiples options, par exemple :

nico@laptop:/opt/synthese_vocale/festival/bin$ ./festival --language english --tts
Festival offers a general framework for building speech synthesis systems as well as including examples of various modules.
Ctrl + D

Un second exécutable intéressant est text2wave qui permet de synthétiser un fichier texte dans un fichier audio :

nico@laptop:/opt/synthese_vocale/festival/bin$ ./text2wave ubuntu.txt -o ubuntu_default.wav

Le contenu du fichier texte est le suivant : »Ubuntu is a community developed operating system that is perfect for laptops, desktops and servers. Whether you use it at home, at school or at work Ubuntu contains all the applications you will ever need, from word processing and email applications, to web server software and programming tools. ».

Le résultat de la synthèse est le suivant.

Pour utiliser une autre voix, dans /festival/lib, modifier le fichier siteinit.scm, décommenter la ligne (set! voice_default ‘voice_…) et remplacer par :

Deux serveurs permettent de tester vos propres textes en ligne :

Vous trouverez plus de détails quand à la configuration ou l’utilisation des API dans le manuel.

Divers , , Permalien.

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

*

Vous pouvez utiliser ces balises et attributs HTML : <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="" escaped="">