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.