Festival has been built to address a number of specific issues in speech synthesis research and development. The biggest problem with speech synthesis development is that in order to improve one part you need all the other parts of the system before you can test your new development. Festival is specifically designed to provide an environment where you may develop your own small part and use the other already written modules without having to start from scratch. It also allows you to test multiple theories in exactly the same environment, something that is important in evaluating research.
There are three specific types of users we are aiming at:
Importantly what makes this approach worthwhile is that because development happens within the same basic system as applications actually use. there is a direct route from research to use.
The above three schemes may be mixed and many people will use Festival at different levels. Each level roughly corresponds to a different programming language. In the multi-lingual tts mode work would most probably be done in a Unix shell or other API, integrating Festival into some larger application. In language mode, parameters would be specified in Scheme, Festival's scripting language. In developing new synthesis method, work would most likely be done in C++.
The core system consists of the following features.
The current version of Festival offers the following key features.
Festival offers a number of APIs for synthesis.
festival --tts news.txt echo "Hello world" | festival --tts
This is the recommended method for using Festival as part of this course. One of the main objectives of this course is that at least you'll be able to make your computer talk using Festival, saying the things you wish. Of course it is also intended that you understand the processes involved in generating that speech and that you understand enough that you can influence these methods.
The documentation is on-line in GNU Emacs info mode and in HTML format at
http://www.speech.cs.cmu.edu/festival/manual-1.4.1
See the "Quick Start" chapter in the user manual.
Because much of this course involves writing, or more usually copying and modifying, small pieces of Scheme code and rules, the following mode of working is recommended.
Add any new rules, functions, parameter settings to a file and always name that file as an argument to Festival when you start it. For example create a file called `ex.scm' in some new directory. Add the following to it
;;; Functions. rules, parameters etc for festival course ;;; (Parameter.set 'Duration_Stretch 2.0)
Start Festival as follows
festival ex.scm
Now when you synthesize anything it should be very slow
(SayText "This is a pen")
Remember to remove the Duration_Stretch
command before
doing the other exercises.
These exercises are designed to work with Festival version 1.4.1.
Some auxiliary programs and files are given as part of the course
they will identified with respect to the COURSEDIR
which
will be installed on the system where you will be doing
these exercises. Ask the course organiser for the actual
pathname.
This section gives hints (and sometimes the full answers) to the exercises. There is a lot to learn in starting to use Festival so these hints are here to point you in the right direction. Also we provide things like shell scripts etc. that are not part of Festival itself, but help to complete the exercises.
echo My name is ... | festival --ttsor within the command interpreter with the command
(SayText "My name is ...")in the command interpreter. If your name is not pronounced properly you can add new entries to the lexicon using the the function
lex.add.entry
For example the default synthesizer pronounces Ronald Reagan's
second name wrongly so we can redefine the pronunciation as
(lex.add.entry '("reagan" n (((r ei) 1) ((g a n) 0))))To find out what the phoneme set is and possible formats, it is often useful to lookup similar words. Use the
lex.lookup
function as in
(lex.lookup 'reagan)then copy the entry changing it as desired. To keep the pronunciation add it to your `.festivalrc' in your home directory. This file is automatically loaded every time you run Festival so then it will always know about your name. Because there are different lexicons for different languages/dialects you must first select the lexicon/voice first before setting the new pronunciation.
(voice_kal_diphone) (lex.add.entry ...)
#!/bin/sh # who | awk '{print $1}' | sort -u | while read i do cat /etc/passwd | grep "^"$i":" | awk -F: '{print $5}' | sed 's/,.*$//' doneThis program is also in `COURSEDIR/bin/users-logged-on'. You may want to add to this list with some introduction like "The people currently logged on to liddell are:" and you may need to add lexical entries for some names.
ftp://uiarchive.cso.uiuc.edu/pub/etext/gutenberg/etext91/alice30.txt
Go to the first, previous, next, last section, table of contents.