FESTIVAL code snippets
Festival is a Speech Synthesis System, it uses Scheme.
- A UNIX machine
- C++ compiler
- GNU make
Mac OS 10.8 does not come out-of-the-box with a C++ compiler. In the App Store download XCode, and in the Preferences in the Downloads tab, install the Command Line Tools.
Download the source packges from here:
- http://festvox.org/festival/downloads.html (North America)
- http://www.cstr.ed.ac.uk/downloads/festival/2.1/ (Europe)
At minimum you need the Festival System source, lexicon distributions appropriate for desired voices, a speech database, and the Edinburgh Speech Tools Library.
The lexicons support different voices. CMU is required for American English voices, OALD is required for British English voices, and POSLEX is required for both BrE and AmE voices. (Note: OALD is only free for non-commercial use) A list of all available voices is given here (http://festvox.org/docs/manual-1.4.3/festival_24.html#SEC97).
For the default, simple American English male voice, get these files.
Compile, using standard make procedure, the speech tools first, then the fest* files. In the folder where you would like to install Festival (e.g.,
$ tar xzvf speech_tools-2.1-release.tar.gz $ cd speech_tools $ ./configure $ make all $ sudo make install
Back in the main festival directory (
cd ~/festival) unpack and compile the remaining fest* files with the same sequence of commands:
$ tar xzvf festlex_CMU.tar.gz $ cd festival $ ./configure $ make all $ sudo make install
That should be it. in the festival/festival directory, run the program by typing:
It would be a good idea to add this to your PATH.
To exit Festival:
Get it to talk
Set the variable
(set! utt1 (Utterance Text "Hello world"))
Synthesizes the utterance
This actually pronounces it. You should hear the content of
utt1 after typing:
The above three commands are condensed into one function:
(SayText "your text here")
Other quick speaking commands
(intro) $ festival examples/saytime
Read in a text file
$ festival --tts <file>
Read in a text file, save as sound
$ text2wave <file> -o <output.wav>
All installed voices are found in
festival/lib/voices/. They are organized by language/region. In the English folder you should find
kal_diphone, the default voice. To change the voice while in Festival:
> (voice_VOICE_NAME) > (voice_cmu_us_awb_cg) > (SayText "I am Canadian.")
If you attempt to change the voice to one that is not installed, you will get the appropriate error message:
festival> (voice_rab_diphone) SIOD ERROR: could not open file /Users/home/festival/festival/lib/dicts/oald/oaldlex.scm closing a file left open: /Users/home/festival/festival/lib/voices/english/rab_diphone/festvox/rab_diphone.scm
This this because I did not install the OALD lexicon, so I cannot use the British voices.
To change the default voice, open up
/festival/lib/siteinit.scm. You will find a line that looks like
;(set! voice_default 'voice_cmu_us_awb_arctic_hts)
Remove the semicolon (uncomment) and change the voice to whichever you want. Make sure that the voice and its required lexicon are installed correctly otherwise Festival will crash on startup.
(set! voice_default 'voice_cmu_us_slt_arctic_hts)
A list of currently defined phonesets (the list of sets that are used by currently loaded voices) is returned by the function
The name, phones, features and silences of the current phoneset may be accessedwith the function
If the argument to this function is a list, only those parts of the phoneset description named are returned. For example
(PhoneSet.description '(silences)) (PhoneSet.description '(silences phones))