4 This section describes how to install Festival from source in a new
5 location and customize that installation.
9 * Requirements:: Software/Hardware requirements for Festival
10 * Configuration:: Setting up compilation
11 * Site initialization:: Settings for your particular site
12 * Checking an installation:: But does it work ...
17 In order to compile Festival you first need the following source
20 `festival-2.0-release.tar.gz'
21 Festival Speech Synthesis System source
23 `speech_tools-1.2.4-release.tar.gz'
24 The Edinburgh Speech Tools Library
27 The lexicon distribution, where possible, includes the lexicon
28 input file as well as the compiled form, for your convenience.
29 The lexicons have varying distribution policies, but are all free
30 except OALD, which is only free for non-commercial use (we are
31 working on a free replacement). In some cases only a pointer to
32 an ftp'able file plus a program to convert that file to the
33 Festival format is included.
36 You'll need a speech database. A number are available (with
37 varying distribution policies). Each voice may have other
38 dependencies such as requiring particular lexicons
41 Full postscript, info and html documentation for Festival and the
42 Speech Tools. The source of the documentation is available in the
43 standard distributions but for your conveniences it has been
46 In addition to Festival specific sources you will also need
49 Currently we have compiled and tested the system under Solaris
50 (2.5(.1), 2.6, 2.7, 2.8 and 2.9), SunOS (4.1.3), FreeBSD 3.x, 4.x Linux
51 (Redhat 4.1, 5.0, 5.1, 5.2, 6.[012], 7.[01], 8.0, 9, FC1 and other Linux
52 distributions), and it should work under OSF (Dec Alphas) SGI
53 (Irix), HPs (HPUX). But any standard UNIX machine should be
54 acceptable. We have now successfully ported this version to
55 Windows XP, Windows NT and Windows 95 (using the Cygnus GNU win32
56 environment). This is still a young port but seems to work.
59 Note that C++ is not very portable even between different versions
60 of the compiler from the same vendor. Although we've tried very
61 hard to make the system portable, we know it is very unlikely to
62 compile without change except with compilers that have already
63 been tested. The currently tested systems are
64 * Sun Sparc Solaris 2.5, 2.5.1, 2.6, 2.7, 2.9: GCC 2.95.1, GCC
67 * FreeBSD for Intel 3.x and 4.x GCC 2.95.1, GCC 3.0
69 * Linux for Intel (RedHat 4.1/5.0/5.1/5.2/6.0/7.x/8.0): GCC
70 2.7.2, GCC 2.7.2/egcs-1.0.2, egcs 1.1.1, egcs-1.1.2, GCC
71 2.95.[123], GCC "2.96", GCC 3.0, GCC 3.0.1, GCC 3.2, GCC 3.2.1
74 * Windows NT 4.0: GCC 2.7.2 plus egcs (from Cygnus GNU win32
75 b19), Visual C++ PRO v5.0, Visual C++ v6.0
76 Note if GCC works on one version of Unix it usually works on
79 We have compiled both the speech tools and Festival under Windows
80 NT 4.0 and Windows 95 using the GNU tools available from Cygnus.
81 http://www.cygwin.com/
84 Due to there being too many different `make' programs out there we
85 have tested the system using GNU make on all systems we use.
86 Others may work but we know GNU make does.
89 You can use Festival without audio output hardware but it doesn't
90 sound very good (though admittedly you can hear less problems with
91 it). A number of audio systems are supported (directly inherited
92 from the audio support in the Edinburgh Speech Tools Library):
93 NCD's NAS (formerly called netaudio) a network transparent audio
94 system (which can be found at
95 `ftp://ftp.x.org/contrib/audio/nas/'); `/dev/audio' (at 8k ulaw
96 and 8/16bit linear), found on Suns, Linux machines and FreeBSD;
97 and a method allowing arbitrary UNIX commands. *Note Audio
100 Earlier versions of Festival mistakenly offered a command line editor
101 interface to the GNU package readline, but due to conflicts with the GNU
102 Public Licence and Festival's licence this interface was removed in
103 version 1.3.1. Even Festival's new free licence would cause problems as
104 readline support would restrict Festival linking with non-free code. A
105 new command line interface based on editline was provided that offers
106 similar functionality. Editline remains a compilation option as it is
107 probably not yet as portable as we would like it to be.
109 In addition to the above, in order to process the documentation you
110 will need `TeX', `dvips' (or similar), GNU's `makeinfo' (part of the
111 texinfo package) and `texi2html' which is available from
112 `http://wwwcn.cern.ch/dci/texi2html/'.
114 However the document files are also available pre-processed into,
115 postscript, DVI, info and html as part of the distribution in
116 `festdoc-1.4.X.tar.gz'.
118 Ensure you have a fully installed and working version of your C++
119 compiler. Most of the problems people have had in installing Festival
120 have been due to incomplete or bad compiler installation. It might be
121 worth checking if the following program works if you don't know if
122 anyone has used your C++ installation before.
123 #include <iostream.h>
124 int main (int argc, char **argv)
126 cout << "Hello world\n";
129 Unpack all the source files in a new directory. The directory will
130 then contain two subdirectories
137 First ensure you have a compiled version of the Edinburgh Speech
138 Tools Library. See `speech_tools/INSTALL' for instructions.
140 The system now supports the standard GNU `configure' method for set
141 up. In most cases this will automatically configure festival for your
142 particular system. In most cases you need only type
144 and the system will configure itself and conpile, (note you need to
145 have compiled the Edinburgh Speech Tools `speech_tools-1.2.4' first.
147 In some case hand configure is require. All of the configuration
148 choise are held in the file `config/config'
150 For the most part Festival configuration inherits the configuration
151 from your speech tools config file (`../speech_tools/config/config').
152 Additional optional modules may be added by adding them to the end of
153 your config file e.g.
154 ALSO_INCLUDE += clunits
155 Adding and new module here will treat is as a new directory in the
156 `src/modules/' and compile it into the system in the same way the
157 `OTHER_DIRS' feature was used in previous versions.
159 If the compilation directory being accessed by NFS or if you use an
160 automounter (e.g. amd) it is recommend to explicitly set the variable
161 `FESTIVAL_HOME' in `config/config'. The command `pwd' is not reliable
162 when a directory may have multiple names.
164 There is a simple test suite with Festival but it requires the three
165 basic voices and their respective lexicons install before it will work.
166 Thus you need to install
169 festlex_POSLEX.tar.gz
171 festvox_kedlpc16k.tar.gz
172 festvox_rablpc16k.tar.gz
173 If these are installed you can test the installation with
176 To simply make it run with a male US English voiuce it is sufficient
179 festlex_POSLEX.tar.gz
180 festvox_kallpc16k.tar.gz
182 Note that the single most common reason for problems in compilation
183 and linking found amongst the beta testers was a bad installation of GNU
184 C++. If you get many strange errors in G++ library header files or link
185 errors it is worth checking that your system has the compiler, header
186 files and runtime libraries properly installed. This may be checked by
187 compiling a simple program under C++ and also finding out if anyone at
188 your site has ever used the installation. Most of these installation
189 problems are caused by upgrading to a newer version of libg++ without
190 removing the older version so a mixed version of the `.h' files exist.
192 Although we have tried very hard to ensure that Festival compiles
193 with no warnings this is not possible under some systems.
195 Under SunOS the system include files do not declare a number of
196 system provided functions. This a bug in Sun's include files. This
197 will causes warnings like "implicit definition of fprintf". These are
200 Under Linux a warning at link time about reducing the size of some
201 symbols often is produced. This is harmless. There is often
202 occasional warnings about some socket system function having an
203 incorrect argument type, this is also harmless.
205 The speech tools and festival compile under Windows95 or Windows NT
206 with Visual C++ v5.0 using the Microsoft `nmake' make program. We've
207 only done this with the Professonal edition, but have no reason to
208 believe that it relies on anything not in the standard edition.
210 In accordance to VC++ conventions, object files are created with
211 extension .obj, executables with extension .exe and libraries with
212 extension .lib. This may mean that both unix and Win32 versions can be
213 built in the same directory tree, but I wouldn't rely on it.
215 To do this you require nmake Makefiles for the system. These can be
216 generated from the gnumake Makefiles, using the command
218 in the speech_tools and festival directories. I have only done this
219 under unix, it's possible it would work under the cygnus gnuwin32
222 If `make.depend' files exist (i.e. if you have done `gnumake depend'
223 in unix) equivalent `vc_make.depend' files will be created, if not the
224 VCMakefiles will not contain dependency information for the `.cc'
225 files. The result will be that you can compile the system once, but
226 changes will not cause the correct things to be rebuilt.
228 In order to compile from the DOS command line using Visual C++ you
229 need to have a collection of environment variables set. In Windows NT
230 there is an instalation option for Visual C++ which sets these
231 globally. Under Windows95 or if you don't ask for them to be set
232 globally under NT you need to run
234 See the VC++ documentation for more details.
236 Once you have the source trees with VCMakefiles somewhere visible
237 from Windows, you need to copy `peech_tools\config\vc_config-dist' to
238 `speech_tools\config\vc_config' and edit it to suit your local
239 situation. Then do the same with `festival\config\vc_config-dist'.
241 The thing most likely to need changing is the definition of
242 `FESTIVAL_HOME' in `festival\config\vc_config_make_rules' which needs
243 to point to where you have put festival.
245 Now you can compile. cd to the speech_tools directory and do
246 nmake /nologo /fVCMakefile
247 and the library, the programs in main and the test programs should be
250 The tests can't be run automatically under Windows. A simple test to
251 check that things are probably OK is:
252 main\na_play testsuite\data\ch_wave.wav
253 which reads and plays a waveform.
254 Next go into the festival directory and do
255 nmake /nologo /fVCMakefile
256 to build festival. When it's finished, and assuming you have the
257 voices and lexicons unpacked in the right place, festival should run
260 We should remind you that the NT/95 ports are still young and there
261 may yet be problems that we've not found yet. We only recommend the
262 use the speech tools and Festival under Windows if you have significant
263 experience in C++ under those platforms.
265 Most of the modules `src/modules' are actually optional and the
266 system could be compiled without them. The basic set could be reduced
267 further if certain facilities are not desired. Particularly: `donovan'
268 which is only required if the donovan voice is used; `rxp' if no XML
269 parsing is required (e.g. Sable); and `parser' if no stochastic paring
270 is required (this parser isn't used for any of our currently released
271 voices). Actually even `UniSyn' and `UniSyn_diphone' could be removed
272 if some external waveform synthesizer is being used (e.g. MBROLA) or
273 some alternative one like `OGIresLPC'. Removing unused modules will
274 make the festival binary smaller and (potentially) start up faster but
275 don't expect too much. You can delete these by changing the
276 `BASE_DIRS' variable in `src/modules/Makefile'.
281 Once compiled Festival may be further customized for particular
282 sites. At start up time Festival loads the file `init.scm' from its
283 library directory. This file further loads other necessary files such
284 as phoneset descriptions, duration parameters, intonation parameters,
285 definitions of voices etc. It will also load the files `sitevars.scm'
286 and `siteinit.scm' if they exist. `sitevars.scm' is loaded after the
287 basic Scheme library functions are loaded but before any of the
288 festival related functions are loaded. This file is intended to set
289 various path names before various subsystems are loaded. Typically
290 variables such as `lexdir' (the directory where the lexicons are held),
291 and `voices_dir' (pointing to voice directories) should be reset here
294 The default installation will try to find its lexicons and voices
295 automatically based on the value of `load-path' (this is derived from
296 `FESTIVAL_HOME' at compilation time or by using the `--libdir' at
297 run-time). If the voices and lexicons have been unpacked into
298 subdirectories of the library directory (the default) then no site
299 specific initialization of the above pathnames will be necessary.
301 The second site specific file is `siteinit.scm'. Typical examples
302 of local initialization are as follows. The default audio output method
303 is NCD's NAS system if that is supported as that's what we use normally
304 in CSTR. If it is not supported, any hardware specific mode is the
305 default (e.g. sun16audio, freebas16audio, linux16audio or mplayeraudio).
306 But that default is just a setting in `init.scm'. If for example in
307 your environment you may wish the default audio output method to be 8k
308 mulaw through `/dev/audio' you should add the following line to your
310 (Parameter.set 'Audio_Method 'sunaudio)
311 Note the use of `Parameter.set' rather than `Parameter.def' the
312 second function will not reset the value if it is already set.
313 Remember that you may use the audio methods `sun16audio'.
314 `linux16audio' or `freebsd16audio' only if `NATIVE_AUDIO' was selected
315 in `speech_tools/config/config' and your are on such machines. The
316 Festival variable `*modules*' contains a list of all supported
317 functions/modules in a particular installation including audio support.
318 Check the value of that variable if things aren't what you expect.
320 If you are installing on a machine whose audio is not directly
321 supported by the speech tools library, an external command may be
322 executed to play a waveform. The following example is for an imaginary
323 machine that can play audio files through a program called `adplay'
324 with arguments for sample rate and file type. When playing waveforms,
325 Festival, by default, outputs as unheadered waveform in native byte
326 order. In this example you would set up the default audio playing
327 mechanism in `siteinit.scm' as follows
328 (Parameter.set 'Audio_Method 'Audio_Command)
329 (Parameter.set 'Audio_Command "adplay -raw -r $SR $FILE")
330 For `Audio_Command' method of playing waveforms Festival supports
331 two additional audio parameters. `Audio_Required_Rate' allows you to
332 use Festivals internal sample rate conversion function to any desired
333 rate. Note this may not be as good as playing the waveform at the
334 sample rate it is originally created in, but as some hardware devices
335 are restrictive in what sample rates they support, or have naive
336 resample functions this could be optimal. The second addition audio
337 parameter is `Audio_Required_Format' which can be used to specify the
338 desired output forms of the file. The default is unheadered raw, but
339 this may be any of the values supported by the speech tools (including
340 nist, esps, snd, riff, aiff, audlab, raw and, if you really want it,
343 For example suppose you run Festival on a remote machine and are not
344 running any network audio system and want Festival to copy files back to
345 your local machine and simply cat them to `/dev/audio'. The following
346 would do that (assuming permissions for rsh are allowed).
347 (Parameter.set 'Audio_Method 'Audio_Command)
348 ;; Make output file ulaw 8k (format ulaw implies 8k)
349 (Parameter.set 'Audio_Required_Format 'ulaw)
350 (Parameter.set 'Audio_Command
351 "userhost=`echo $DISPLAY | sed 's/:.*$//'`; rcp $FILE $userhost:$FILE; \
352 rsh $userhost \"cat $FILE >/dev/audio\" ; rsh $userhost \"rm $FILE\"")
353 Note there are limits on how complex a command you want to put in the
354 `Audio_Command' string directly. It can get very confusing with respect
355 to quoting. It is therefore recommended that once you get past a
356 certain complexity consider writing a simple shell script and calling
357 it from the `Audio_Command' string.
359 A second typical customization is setting the default speaker.
360 Speakers depend on many things but due to various licence (and resource)
361 restrictions you may only have some diphone/nphone databases available
362 in your installation. The function name that is the value of
363 `voice_default' is called immediately after `siteinit.scm' is loaded
364 offering the opportunity for you to change it. In the standard
365 distribution no change should be required. If you download all the
366 distributed voices `voice_rab_diphone' is the default voice. You may
367 change this for a site by adding the following to `siteinit.scm' or per
368 person by changing your `.festivalrc'. For example if you wish to
369 change the default voice to the American one `voice_ked_diphone'
370 (set! voice_default 'voice_ked_diphone)
371 Note the single quote, and note that unlike in early versions
372 `voice_default' is not a function you can call directly.
374 A second level of customization is on a per user basis. After
375 loading `init.scm', which includes `sitevars.scm' and `siteinit.scm'
376 for local installation, Festival loads the file `.festivalrc' from the
377 user's home directory (if it exists). This file may contain arbitrary
380 Checking an installation
381 ========================
383 Once compiled and site initialization is set up you should test to
384 see if Festival can speak or not.
388 Festival Speech Synthesis System 2.0:release July 2004
389 Copyright (C) University of Edinburgh, 1996-2004. All rights reserved.
390 For details type `(festival_warranty)'
392 If errors occur at this stage they are most likely to do with
393 pathname problems. If any error messages are printed about
394 non-existent files check that those pathnames point to where you
395 intended them to be. Most of the (default) pathnames are dependent on
396 the basic library path. Ensure that is correct. To find out what it
397 has been set to, start the system without loading the init files.
399 Festival Speech Synthesis System 1.4.3:release Jan 2003
400 Copyright (C) University of Edinburgh, 1996-2003. All rights reserved.
401 For details type `(festival_warranty)'
403 "/projects/festival/lib/"
405 This should show the pathname you set in your `config/config'.
407 If the system starts with no errors try to synthesize something
408 festival> (SayText "hello world")
409 Some files are only accessed at synthesis time so this may show up
410 other problem pathnames. If it talks, you're in business, if it
411 doesn't, here are some possible problems.
413 If you get the error message
414 Can't access NAS server
415 You have selected NAS as the audio output but have no server running
416 on that machine or your `DISPLAY' or `AUDIOSERVER' environment variable
417 is not set properly for your output device. Either set these properly
418 or change the audio output device in `lib/siteinit.scm' as described
421 Ensure your audio device actually works the way you think it does.
422 On Suns, the audio output device can be switched into a number of
423 different output modes, speaker, jack, headphones. If this is set to
424 the wrong one you may not hear the output. Use one of Sun's tools to
425 change this (try `/usr/demo/SOUND/bin/soundtool'). Try to find an audio
426 file independent of Festival and get it to play on your audio. Once
427 you have done that ensure that the audio output method set in Festival
430 Once you have got it talking, test the audio spooling device.
432 This plays a short introduction of two sentences, spooling the audio
435 Finally exit from Festival (by end of file or `(quit)') and test the
439 A test suite is included with Festival but it makes certain
440 assumptions about which voices are installed. It assumes that
441 `voice_rab_diphone' (`festvox_rabxxxx.tar.gz') is the default voice and
442 that `voice_ked_diphone' and `voice_don_diphone'
443 (`festvox_kedxxxx.tar.gz' and `festvox_don.tar.gz') are installed.
444 Also local settings in your `festival/lib/siteinit.scm' may affect
445 these tests. However, after installation it may be worth trying
447 from the `festival/' directory. This will do various tests
448 including basic utterance tests and tokenization tests. It also checks
449 that voices are installed and that they don't interfere with each other.
450 These tests are primarily regression tests for the developers of
451 Festival, to ensure new enhancements don't mess up existing supported
452 features. They are not designed to test an installation is successful,
453 though if they run correctly it is most probable the installation has