Note: This page is quite old and is likely out of date. My opinions may have also changed dramatically since this was written. It is here as a reference until I get around to updating it.
Festival is packaged in a way on Fedora in a standalone mode, it does not come with an init script to startup it’s server on boot so the following is an adaptation of another one custom written to handle this. It’s primarily used in Fedora for Gnome’s usability support which doesn’t run the server as a daemon.
Listening to the samples of the stock voices, I’ve found that
ked sounds the
best in my opinion and at least until we here try and make our own diphone
database this is the voice that I’m going to use.
In Fedora the voices are stored in the directory
/usr/share/festival/lib/voices/*/ directories. These are the voice that you
have to choose from when configuring festival. The configuration files live in
We’re only interested in
/etc/festival/festival.scm which doesn’t exist by
default. The following file has the
ked voice set to be the default. I left
the other voice in there commented out in case I wanted to switch back some
(defvar server_home ".") ;; Enable access to localhost so asterisk can connect (no one else needs to connect) (set! server_access_list '("[^.]+" "127.0.0.1" "localhost.*" "argus.lounge.gentlemenslounge.org")) (cd server_home) (set! default_access_strategy 'direct) ;; Set the voice to 'ked' the other one is left in case I wish to switch later (set! voice_default 'voice_ked_diphone) ;(set! voice_default 'voice_nitech_us_awb_arctic_hts) ; Preload ked voice to make the server more responsive (voice_ked_diphone) ;; Asterisk command "(define (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))) ;; End Asterisk command ;(provide 'siteinit)