Festival est un logiciel de synthèse vocale développé au centre pour la recherche de technologie de la parole (CSTR) a l’universite d’Edimbourg. Festival est écrit dans le langage C++ avec un interpréteur de commandes base sur schème pour permettre sa personnalisation et son évolution.
les Inconvénients: qualités de son mouvais, exige des compléments supplémentaires pour faire parler en français (Franfest, Mbrola, Lia_Phon)
les avantages: fonctionne sans connexion à internet, traitement des commandes aussi rapide.
1. Installation
Il existe deux façons d’installer Festival :
– via le gestionnaire de paquet ;
– en en compilant ses sources.
a. via le gestionnaire de paquet :
| # sudo apt-get install festival speech-tools Ou # yum install festival speech-tools |
b. en compilant ses sources :
| # cd /usr/src # wget http://www.cstr.ed.ac.uk/downloads/festival/2.1/speech_tools-2.1-release.tar.gz # wget http://www.cstr.ed.ac.uk/downloads/festival/2.1/festival-2.1-release.tar.gz # tar zxvf festival-2.1-release.tar.gz # tar zxvf speech_tools-2.1-release.tar.gz # cd speech_tools # ./configure # make # make install # cd .. # cd festival # ./configure # make # make install |
| # export PATH=$PATH:/usr/src/festival/bin/ |
2. Start-up au démarrage :
Pour debian && centos on ajoute dans le fichier rc.local la ligne festival –server &>/dev/null jusqu’au exit 0
| # nano /etc/rc.local |

3. Configuration des fichiers principaux de Festival
On ajoute a la fin les lignes suivantes :
| # nano /etc/festival.scm |
(define (tts_textasterisk string mode) "(tts_textasterisk STRING MODE)
Apply tts to STRING. This function is specifically designed for use in server mode so a single function call may synthesize the string. This function name may be added to the server safe functions."
(let ((wholeutt (utt.synth (eval (list 'Utterance 'Text string))))) (utt.wave.resample wholeutt 8000) (utt.wave.rescale wholeutt 5) (utt.send.wave.client wholeutt)))
| # nano /etc/asterisk/festival.conf |
| [general] host=localhost port=1314 ;usecache=yes ;cachedir=/var/lib/asterisk/festivalcache/ festivalcommand=(tts_textasterisk « %s » ‘file)(quit)\n |
4. Démarrage du serveur Festival
Le serveur Festival on peut démarrer de la façon suivante :
| # festival 2 > & 1 > /dev/null & |
La commande suivante permet de visualiser de ce que se passe sous Festival :
| # festival –server |

On peut utiliser le mode interactif en tapant :
| # festival > (SayText « system error ») |

Les sons restitués sont en langue anglaise. Les tests :
| # echo | who | festival –tts |
| # echo | date | festival –tts |
| # echo « Bonjour to le monde »| festival –tts |
5. Le plan de numérotation et Festival
| # nano /etc/asterisk/extensions.conf |
Sur appel au poste numéro 1001, le texte «Asterisk and Festival are working together » est synthétisé
| exten => 1001, 1, Answer() exten => 1001, n, Festival(‘Asterisk and Festival are working together’) exten => 1001, n, Hangup() |
Sur appel au poste numéro 1002 sera prononcé le numéro de l’appelant
| exten => 1002, 1, Answer() exten => 1002, n, Festival(‘Welcome to the wonderful world of Asterisk! Your phone number is ${CALLERID(num)}.’) exten => 1002, n, Hangup() |
6. text2wave
Festival possède un module text2wav pour fabriquer des messages à partir d’un texte
| exten => 1003,1,Verbose(2,Trying out Festival) same => n,Answer() same => n,System(echo « This is a test of Festival » | /usr/bin/text2wave -scale 1.5 -F 8000 -o /tmp/festival.wav) same => n,Playback(/tmp/festival) same => n,System(rm -f /tmp/festival.wav) same => n,Hangup() |
| # cat text.txt | text2wave -o text.wav |
On peut créer les scripts php basé sur text2waave
| # nano /etc/asterisk/scripts/fest.php |
#!/usr/bin/php5 -q <?php$dir="/var/lib/asterisk/sounds/";$textfilename="newfile.txt";$textfile=$dir.$textfilename; if (file_exists($textfile)){ unlink ($textfile); } touch($textfile); $tfile=fopen($textfile, "w"); //echo $argv[1]; fwrite($tfile, $argv[1]); fclose($tfile); if(file_exists($dir."newsound.gsm")){ unlink ($dir."newsound.gsm"); } system("text2wave -f 8000 -o ".$dir."newsound.wav ".$textfile); system("sox ".$dir."newsound.wav -r 8000 -c 1 ".$dir."newsound.gsm"); unlink($dir."newsound.wav"); ?>
| # chmod +x /etc/asterisk/scripts/fest.php |
extensions.conf
| exten => 1004,1,Answer exten => 1004,n,system(/etc/asterisk/scripts/fest.php ‘Welcome to the wonderful world of Asterisk! Your phone number is ${CALLERIDNUM}.’) exten => 1004,n,wait(1) exten => 1004,n,Playback(newsound) exten => 1004,n,Hangup |
Laisser un commentaire