BigLux non aux brevets logiciels
Présentation | Mal-voyants | glossaire | Contacts |
LAO ( en travaux IHM | Lecture | vocalisation | ) ressources | # |
[projet] | [wiki] |

Installation de Festival


Cette page décrit comment procéder à l'installation de FranFest et festival .


Fichiers à télécharger

A partir du site [w] ,
aller sur la page actuelle de téléchargement de Festival .

Elle permet de récupérer (entre autres) à ce jour :
    festival-1.4.3-release.tar.gz
    speech_tools-1.2.3-release.tar.gz
    festlex_POSLEX.tar.gz
    festvox_rablpc16k.tar.gz                pour utiliser une voix américaine

De plus, pour aller jusqu'au bout de l'installation en français, il faut savoir établir un lien avec une base de données de diphone au format MBrola, au minimum la voix fr2.

Pré-requis conseillé

Créer un répertoire "bigfest".

Se placer sous "bigfest".

Y mettre les fichiers cités plus haut.

Etape 1 : installer Speech Tools

Décompacter l'archive Speech Tools

tar xvfz speech_tools-1.2.3.tar.gz
=> crée un répertoire speech_tools

Se placer sous ce répertoire bigfest/speech_tools :
cd speech_tools

Générer et adapter speech_tools/config/config

Depuis la version 1.2.2 de speech_tools, un script configure est fourni et doit être lancé de manière classique :
./configure
Ceci crée essentiellement un fichier config/config.

Comme il est conseillé dans le fichier INSTALL, j'ai modifié ce fichier config/config pour enlever la mise en commentaire de la ligne 64 qui devient ainsi :
SHARED=1
Ceci a le mérite de générer des exécutables plus légers.

Lancer une petite verification

Toujours depuis bigfest/speech_tools,

    make info
=> doit vous raconter des choses sympathiques comme :
Check system type
Remake modincludes.inc
        NATIVE_AUDIO
                ok
        EDITLINE
                config/modules/editline.mak
        SIOD
                siod/siod.mak
        WAGON
                stats/wagon/wagon.mak
        SCFG
                grammar/scfg/scfg.mak
        WFST
                grammar/wfst/wfst.mak
        OLS
                stats/ols.mak
        RXP
                rxp/rxp.mak
        LINUX16_AUDIO
                config/modules/linux16_audio.mak
---------------------------------------------------------------

              Edinburgh Speech Tools Library v1.2.3 Configuration
              ===================================================

              EST_HOME = /home/moi/bigfest/speech_tools
           SYSTEM_TYPE = unknown_RedHatLinux
              COMPILER = RH gcc2.96 version 2.96 20000731 (Mandrake Linux 8.2 2.96-0.76mdk)
         JAVA_COMPILER = Sun jdk sh: /usr/bin/java: Aucun fichier ou répertoire de ce type
             JAVA_HOME = /usr/lib/jdk-1.1.6
              JMF_HOME = <UNSET>
            JSAPI_HOME = <UNSET>
         CONFIGURATION = <UNSET>

   NATIVE_AUDIO_MODULE = LINUX16
       INCLUDE_MODULES =     
                    EDITLINE Use editline for command line editing and history
               LINUX16_AUDIO Native audio module for Linux systems
                NATIVE_AUDIO Native audio module for your system
                         OLS Ordinary Least Squares support.
                         RXP Richard Tobins XML parser
                        SCFG Stochastic context free grammars
                        SIOD Scheme In One Defun
                       WAGON Wagon CART tree system
                        WFST Weighted finite state transducers

              INCLUDES =    -I./include 
             TEMPLATES =   
               DEFINES =      
                  LIBS =   -L./lib -lestools -L./lib -lestbase -L./lib -leststring -lcurses -ldl -lncurses -lm -lstdc++ 
        JAVA_CLASSPATH = :/usr/lib/jdk-1.1.6/lib/classes.zip

---------------------------------------------------------------

Lancer la fabrication

make

Là, vous pouvez aller vous changer les idées, faire la vaisselle, etc...

Sur mon Duron 700, la compilation dure quasiment 20 mn (sur mon Pentium 133 presque 2 heures).

Si c'est beaucoup plus court, 2 causes possibles :

Problème rencontré avec le compilateur gcc 2.96 :
aucun.
Seuls apparaissent quelques avertissements lors de la compilation de xmlparser.c.

La fin de la génération apparaît comme :

gcc -c -fno-implicit-templates -O3 -fPIC -fno-shared-data -Wall -Wno-non-template-friend -DDATA=\"/home/moi/bigfest/speech_tools/lib/example_data\" -DTVECTOR_BOUNDS_CHECKING -I../include -DINSTANTIATE_TEMPLATES feature_regression.cc
gcc  -fno-implicit-templates  -O3 -fPIC -fno-shared-data -Wall -Wno-non-template-friend    -o feature_regression feature_regression.o    -L../lib -lestools -L../lib -lestbase -L../lib -leststring   -ltermcap   -ldl  -lm  -lstdc++ 
Making in directory ./bin ...

Remove Links:

Scripts: (sh) (prl) example_to_doc++ resynth pm make_wagon_desc raw_to_xgraph est_examples est_gdb est_program cxx_to_docbook build_docbook_index tex_to_images

Main Scripts: ch_lab ch_track ch_wave na_play na_record sigfilter sig2fv spectgen pda pitchmark ngram_test ngram_build tilt_synthesis tilt_analysis viterbi dp bcat ch_utt fringe_client design_filter align siod wagon wagon_test scfg_make scfg_train scfg_test scfg_parse wfst_build wfst_run wfst_train ols ols_test xml_parser

Des tests

main/na_play lib/example_data/ch_wave.wav

=> devrait vous dire une phrase audible en anglais

Non !
Pas si simple, si comme moi vous avez choisi de générer et d'utiliser des librariries partagées.

Dans ce cas, vous obtenez :

main/na_play: error while loading shared libraries: libestbase.so: cannot open s or directory
Pour y remédier, positionner :
export LD_LIBRARY_PATH=$(pwd)/lib

Si vous n'entendez rien, vérifiez que votre mixer est bien réglé.

Une fois qu'on a entendu quelque chose avec ce test (A short example waveform), on peut passer à une suite de tests plus exhaustive en tapant :

    make test

=> durée indicative : 3 mn sur Duron 700 (13 minutes sur Pentium 133)

=> encore des compilations et des traces du genre :

ch_track script completed
ch_track script status: CORRECT

test viterbi (script)
viterbi script completed
viterbi script status: CORRECT

test wagon (script)
regression tree
wagon script completed
wagon script status: CORRECT

test tilt (script)
F0 extraction
Tilt analysis
Tilt synthesis
tilt script completed
tilt script status: CORRECT

test lpc (script)
LPC params
MFCC params
lpc script completed
lpc script status: CORRECT

-------------
Test OK

Etape 2 : installer Festival

Décompacter l'archive Festival

Remonter sous bigfest
cd ..

tar xvfz festival-1.4.3-release.tar.gz
=> crée un répertoire festival

Se placer sous ce répertoire bigfest/festival :

    cd festival

Configuration de Festival

Depuis la version 1.4.2, Festival fournit le classique script de configuration à lancer par :

    ./configure
Ceci crée un fichier config/config. Par cohérence avec ma configuration de speech_tools, j'ai modifié ce fichier pour mettre en commentaire la ligne 58 qui devient :
#ALSO_INCLUDE += clunits

Lancer une petite verification

Toujours depuis bigfest/festival,
    make info
doit vous raconter des choses sympathiques du même genre que la même commande précédemment lancée bigfest/speech_tools :
Check system type
Remake modincludes.inc
        NATIVE_AUDIO
                ok
        EDITLINE
                config/modules/editline.mak
        SIOD
                ok
        WAGON
                ok
        SCFG
                ok
        WFST
                ok
        OLS
                ok
        RXP
                src/modules/rxp/rxp.mak
        LINUX16_AUDIO
                config/modules/linux16_audio.mak
---------------------------------------------------------------

             Festival Speech Synthesis System v1.4.3 Configuration
             =====================================================

         FESTIVAL_HOME = /home/moi/bigfest/festival
                   EST = ./../speech_tools
              EST_HOME = /home/moi/bigfest/speech_tools
           SYSTEM_TYPE = unknown_RedHatLinux
              COMPILER = RH gcc2.96 version 2.96 20000731 (Mandrake Linux 8.2 2.96-0.76mdk)
         JAVA_COMPILER = Sun jdk sh: /usr/bin/java: Aucun fichier ou répertoire de ce type
             JAVA_HOME = /usr/lib/jdk-1.1.6
              JMF_HOME = <UNSET>
            JSAPI_HOME = <UNSET>
         CONFIGURATION = <UNSET>

   NATIVE_AUDIO_MODULE = LINUX16
       INCLUDE_MODULES =     
                    EDITLINE Use editline for command line editor and history
               LINUX16_AUDIO (from EST) Native audio module for Linux systems
                NATIVE_AUDIO (from EST) Native audio module for your system
                         OLS (from EST) Ordinary Least Squares support
                         RXP Festival Access To RXP XML Parser 
                        SCFG (from EST) Stochastic context free grammars
                        SIOD (from EST) Scheme In One Defun
                       WAGON (from EST) Wagon CART tree system
                        WFST (from EST) Weighted Finite State Automata

              INCLUDES =    -I./src/include -I./../speech_tools/include 
             TEMPLATES =   
               DEFINES =      
                  LIBS =   -L./src/lib -lFestival -L./../speech_tools/lib -lestools -L./../speech_tools/lib -le
stbase -L./../speech_tools/lib -leststring  -lcurses   -ldl  -lncurses -lm  -lstdc++ 
        JAVA_CLASSPATH = ./lib/festival.jar:/home/moi/bigfest/speech_tools/lib/est_.jar:/usr/lib/jdk-1.
1.6/lib/classes.zip

---------------------------------------------------------------

Lancer la fabrication

    make

Là, vous pouvez aller vous détendre un peu ...
Sur mon Duron 700, la compilation dure quasiment 10 mn (sur mon Pentium 133, 39 minutes) ... avec aucun avertissement sous gcc 2.96 (quels progrès par rapport à Festival 1.4.1 ! :-)).

Des tests

    make test

Un peu trop optimiste ?

WARNING
No default voice found in ("/home/moi/bigfest/festival/lib/voices/")
either no voices unpacked or voice-path is wrong
Scheme interpreter will work, but there is no voice to speak with.
WARNING

SIOD ERROR: unbound variable : voice_rab_diphone

The festival tests require the rab, don and ked diphone voices to be
installed.  Festival may work without that diphone set, but the results of
these tests aren't relevant.
Evidemment, sans voix, on aura du mal à synthétiser un texte en parole ;-)

en construction PAGE EN CONSTRUCTION en construction

Etape 3 : installation d'une voix française

Téléchargement du code FranFest

Actuellement, les fichiers de code de FranFest sont sous serveur CVS.
Je vous conseille de créer un répertoire de travail dédié pour récupérer ces fichiers :
cd ..  # retour dans le répertoire bigfest
mkdir franfest
cd franfest

On peut consulter l'interface CVS Web fournie par (lien mort: http://wwww.tuxfamily.org ) mais si vous pouvez utiliser un client CVS, il sera plus rapide de lancer globalement l'extraction des fichiers de code source ainsi :

export CVSROOT=:pserver:anonymous@cvs.tuxfamily.org:/cvsroot/biglux
cvs -z 6 export -r FF_TF_0_0_1 FranFest

Depuis ce répertoire, on crée un fichier d'archive par la commande :

tar cvfz ../franfest.tgz -C FranFest festival

Puis, on remonte dans le bigfest qui contient les sous-répertoires : festival, franfest et speech_tools.

cd ..

L'installation du code d'utilisation de voix françaises se fait alors par :

franfest/FranFest/install_francais.sh franfest.tgz

Ceci provoque notamment 2 compilations (simple.cc et token.cc) et 2 éditions de liens dont celle de festival/bin/festival.

Il est aussi demandé de désigner le chemin d'accès aux bases de données de diphones de MBrola : fr2 et fr1.

Nota : A ce jour, le lexique mis en place sous le répertoire festival/lib/dicts/dura/ est minimal. Il contient la transposition des 199 premières entrées d'un lexique publié sur le site Lexique.org. En en prenant les 128 907 entrées, le fichier dura-0.1.out passe à une taille supérieure à 6 méga-octets ... et la prononciation obtenue par FranFest est nettement améliorée. A suivre ... ou plutôt nous consulter.

Retour au test

On descend dans le répertoire bigfest/festival/français.
De là, on peut lancer la commande suivante qui lit l'entrée standard ... mais il ne faut pas s'attendre à une prononciation synchrone; la sortie est tamponnée et donc la 1ère phrase peut n'être prononcée que quand la dernière vient d'être saisie.

../bin/festival --language french --tts
Bonsoir chers amis.
Ceci est un premier test.
Ctrl-D

Voilà pour aujourd'hui.

A vous de jouer ... en attendant mieux.

Evolution à venir

Ce logiciel n'est plus la priorité de BigLux.
Il est publié suite à plusieurs demandes simplement dans le but d'être éventuellement utile.
Nous espérons que vous ne nous en voudrez pas si notre support en la matière n'est pas des plus réactifs.
Nous avons plus la tête dans LIA_PHON de Frédéric Bechet de l'Université d'Avignon, un TTS en français sur bien des points plus avancé que FranFest.


Dernière mise à jour : 25/04/2003 Rédacteur : Phil's Free
Date de dernière modification: 2003-04-26.