| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320 |
- Flite: a small run-time speech synthesis engine
- version 2.0.0-release
- Copyright Carnegie Mellon University 1999-2014
- All rights reserved
- http://cmuflite.org
- Flite is a small fast run-time speech synthesis engine. It is the
- latest addition to the suite of free software synthesis tools
- including University of Edinburgh's Festival Speech Synthesis System
- and Carnegie Mellon University's FestVox project, tools, scripts and
- documentation for building synthetic voices. However, flite itself
- does not require either of these systems to compile and run.
- The core Flite library was developed by Alan W Black <awb@cs.cmu.edu>
- (mostly in his so-called spare time) while employed in the Language
- Technologies Institute at Carnegie Mellon University. The name
- "flite", originally chosen to mean "festival-lite" is perhaps doubly
- appropriate as a substantial part of design and coding was done over
- 30,000ft while awb was travelling, and (usually) isn't in meetings.
- The voices, lexicon and language components of flite, both their
- compression techniques and their actual contents were developed by
- Kevin A. Lenzo <lenzo@cs.cmu.edu> and Alan W Black <awb@cs.cmu.edu>.
- Flite is the answer to the complaint that Festival is too big, too slow,
- and not portable enough.
- o Flite is designed for very small devices, such as PDAs, and also
- for large server machines which need to serve lots of ports.
- o Flite is not a replacement for Festival but an alternative run time
- engine for voices developed in the FestVox framework where size and
- speed is crucial.
- o Flite is all in ANSI C, it contains no C++ or Scheme, thus requires
- more care in programming, and is harder to customize at run time.
- o It is thread safe
- o Voices, lexicons and language descriptions can be compiled
- (mostly automatically for voices and lexicons) into C representations
- from their FestVox formats
- o All voices, lexicons and language model data are const and in the
- text segment (i.e. they may be put in ROM). As they are linked in
- at compile time, there is virtually no startup delay.
- o Although the synthesized output is not exactly the same as the same
- voice in Festival they are effectively equivalent. That is, flite
- doesn't sound better or worse than the equivalent voice in festival,
- just faster, smaller and scalable.
- o For standard diphone voices, maximum run time memory
- requirements are approximately less than twice the memory requirement
- for the waveform generated. For 32bit archtectures
- this effectively means under 1M.
- o The flite program supports, synthesis of individual strings or files
- (utterance by utterance) to direct audio devices or to waveform files.
- o The flite library offers simple functions suitable for use in specific
- applications.
- Flite is distributed with a single 8K diphone voice (derived from the
- cmu_us_kal voice), a pruned lexicon (derived from
- cmulex) and a set of models for US English. Here are comparisons
- with Festival using basically the same 8KHz diphone voice
- Flite Festival
- core code 60K 2.6M
- USEnglish 100K ??
- lexicon 600K 5M
- diphone 1.8M 2.1M
- runtime <1M 16-20M
- On a 500Mhz PIII, a timing test of the first two chapters of
- "Alice in Wonderland" (doc/alice) was done. This produces about
- 1300 seconds of speech. With flite it takes 19.128 seconds (about
- 70.6 times faster than real time) with Festival it takes 97 seconds
- (13.4 times faster than real time). On the ipaq (with the 16KHz diphones)
- flite synthesizes 9.79 time faster than real time.
- Requirements:
- o A good C compiler, some of these files are quite large and some C
- compilers might choke on these, gcc is fine. Sun CC 3.01 has been
- tested too. Visual C++ 6.0 is known to fail on the large diphone
- database files. We recommend you use GCC under Cygwin or mingw32
- instead.
- o GNU Make
- o An audio device isn't required as flite can write its output to
- a waveform file.
- Supported platforms:
- We have successfully compiled and run on
- o Various Intel Linux systems (and iPaq Linux), under various versions
- of GCC (2.7.2 to 4.x)
- o Mac OS X
- o Various Android devices
- o FreeBSD 3.x and 4.x
- o Solaris 5.7, and Solaris 9
- o Windows 2000/XP and later under Cygwin 1.3.5 and later
- o Successfully compiles and runs under 64Bit Linux architectures
- o OSF1 V4.0 (gives an unimportant warning about sizes when compiled cst_val.c)
- Previously we supported PalmOS and Windows CE but these seem to be rare
- nowadays so they are no longer actively supported.
- Other similar platforms should just work, we have also cross compiled
- on a Linux machine for StrongARM. However note that new byte order
- architectures may not work directly as there is some careful
- byte order constraints in some structures. These are portable but may
- require reordering of some fields, contact us if you are moving to
- a new archiecture.
- News
- ----
- New in 2.0.0 (Dec 2014)
- o Indic language support (Hindi, Tamil and Telugu)
- o SSML support
- o CG voices as files accessilble by file:/// and http://
- (and set of 13 voices to load)
- o random forest (multimodel support) improves voice quality
- o Supports diffrent sample rates/mgc order to tune for speed
- o Kal diphone 500K smaller
- o Fixed lots of API issues
- o thread safe (again) after initialization
- o Generalized tokenstreams (used in Bard Storyteller)
- o simple-Pulseaudio support
- o Improved Android support
- o Removed PalmOS support from distribution
- o Companion multilingual ebook reader Bard Storyteller
- http://festvox.org/bard/
- New in 1.4.1 (March 2010)
- o better ssml support (actually does something)
- o better clunit support (smaller)
- o Android support
- New in 1.4 (December 2009)
- o crude multi-voice selection support (may change)
- o 4 basic voices are included 3 clustergen (awb, rms and slt) plus
- the kal diphone database
- o CMULEX now uses maximum onset for syllabification
- o alsa support
- o Clustergen support (including mlpg with mixed excitation)
- But is still slow on limited processors
- o Windows support with Visual Studio (specifically for the Olympus
- Spoken Dialog System)
- o WinCE support is redone with cegcc/mingw32ce with example
- example TTS app: Flowm: Flite on Windows Mobile
- o Speed-ups in feature interpretation limiting calls to alloc
- o Speed-ups (and fixes) for converting clunits festvox voices
- New in 1.3-release (October 2005)
- o fixes to lpc residual extraction to give better quality output
- o An updated lexicon (festlex_CMU from festival-2.0.95) and better
- compression its about 30% of the previous size, with about
- the same accuracy
- o Fairly substantial code movements to better support PalmOS and
- multi-platform cross compilation builds
- o A PalmOS 5.0 port with an small example talking app ("flop")
- o runs under ix86_64 linux
- New in 1.2-release (February 2003)
- o A build process for diphone and clunits/ldom voices
- FestVox voices can be converted (sometimes) automatically
- o Various bug fixes
- o Initial support for Mac OS X (not talking to audio device yet)
- but compiles and runs
- o Text files can be synthesize to a single audio file
- o (optional) shared library support (Linux)
- Compilation
- -----------
- In general
- tar zxvf flite-2.0.0-release.tar.gz
- cd flite-2.0.0-release
- ./configure
- make
- Where tar is gnu tar (gtar), and make is gnu make (gmake).
- Configuration should be automatic, but maybe doesn't work in all cases
- especially if you have some new compiler. You can explicitly set to
- compiler in config/config and add any options you see fit. Configure
- tries to guess these but it might be able for cross compilation cases
- Interesting options there are
- -DWORDS_BIGENDIAN=1 for bigendian machines (e.g. Sparc, M68x)
- -DNO_UNION_INITIALIZATION=1 For compilers without C 99 union inintialization
- -DCST_AUDIO_NONE if you don't need/want audio support
- There are different sets of voices and languages you can select between
- them (and your own sets if you make config/XXX.lv). For example
- ./configure --with-langvox=transtac
- Will use the languages and voices defined in config/transtac.lv
- Usage:
- ------
- The ./bin/flite voices contains all supported voices and you may
- choose between the voices with the -voice flag and list the supported
- voices with the -lw flag. Note the kal (diphone) voice is a different
- technology from the others and is much less computationally expensive
- but more robotic. For each voice additional binaries that contain
- only that voice are created in ./bin/flite_FULLVOICENAME,
- e.g. ./bin/flite_cmu_us_awb.
- If it compiles properly a binary will be put in bin/, note by
- default -g is on so it will be bigger than is actually required
- ./bin/flite "Flite is a small fast run-time synthesis engine" flite.wav
- Will produce an 8KHz riff headered waveform file (riff is Microsoft's
- wave format often called .WAV).
- ./bin/flite doc/alice
- Will play the text file doc/alice. If the first argument contains
- a space it is treated as text otherwise it is treated as a filename.
- If a second argument is given a waveform file is written to it,
- if no argument is given or "play" is given it will attempt to
- write directly to the audio device (if supported). if "none"
- is given the audio is simply thrown away (used for benchmarking).
- Explicit options are also available.
- ./bin/flite -v doc/alice none
- Will synthesize the file without playing the audio and give a summary
- of the speed.
- ./bin/flite doc/alice alice.wav
- will synthesize the whole of alice into a single file (previoous
- versions would only give the last utterance in the file, but
- that is fixed now).
- An additional set of feature setting options are available, these are
- *debug* options, Voices are represented as sets of feature values (see
- lang/cmu_us_kal/cmu_us_kal.c) and you can override values on the
- command line. This can stop flite from working if malicious values
- are set and therefor this facility is not intended to be made
- available for standard users. But these are useful for
- debugging. Some typical examples are
- ./bin/flite --sets join_type=simple_join doc/intro
- Use simple concatenation of diphones without prosodic modification
- ./bin/flite -pw doc/alice
- Print sentences as they are said
- ./bin/flite --setf duration_stretch=1.5 doc/alice
- Make it speak slower
- ./bin/flite --setf int_f0_target_mean=145 doc/alice
- Make it speak higher
- The talking clock is an example talking clode as discussed on
- http://festvox.org/ldom it requires a single argument HH:MM
- under Unix you can call it
- ./bin/flite_time `date +%H:%M`
- ./bin/flite -lv
- List the voices linked in directly in this build
- ./bin/flite -voice rms -f doc/alice
- Speak with the US male rms voice
- ./bin/flite -voice awb -f doc/alice
- Speak with the "Scottish" male awb voice
- ./bin/flite -voice slt -f doc/alice
- Speak with the US female slt voice
- ./bin/flite -voice http://festvox.org/flite/voices/US/cmu_us_ksp.flitevox -f doc/alice
- Speak with KSP voice, download on the fly from festvox.org
- ./bin/flite -voice voices/cmu_us_ahw.flitevox -f doc/alice
- Speak with AHW voice loaded from the local file.
- Voice names are identified as loadable files if the name includes a
- "/" (slash) otherwise they are treated as internal names. So if you
- want to load voices from the current directory you need to prefix the
- with "./".
- Voice quality
- -------------
- So you've eagerly downloaded flite, compiled it and run it, now you
- are disappointed that it doesn't sound wonderful, sure its fast and
- small but what you really hoped for was the dulcit tones of a deep
- baritone voice that would make you desperately hang on every phrase it
- mellifluously produces. But instead you get an 8Khz diphone voice that
- sounds like it came from the last millenium.
- Well, first, you are right, it is an 8KHz diphone voice from the last
- millenium, and that was actually deliberate. As we developed flite we
- wanted a voice that was stable and that we could directly compare with
- that very same voice in Festival. Flite is an *engine*. We want to
- be able take voices built with the FestVox process and compile them
- for flite, the result should be exactly the same quality (though of
- course trading the size for quality in flite is also an option). The
- included voice is just a sample voice that was used in the testing
- process.
- We expect that often voices will be loaded from external files, and we
- have now set up a voice repository on
- http://festvox.org/flite/voices/LANG/*.flitevox
- If you visit there with a browser you can hear the examples. You can
- also download the .flitevox files to you machine so you don't need a
- network connect everytime you need to load a voice.
- We are now actively adding to this list of available voices in English
- and other languages.
- Bard Storyteller: http://festvox.org/bard/
- -------------------------------------------
- Bard is a companion app that read ebooks, both displaying them and
- actually reading them to you using flite. Bard supports a wide
- range of fonts, and flite voices, and books in text, html and
- epub format. Bard is used as a evaluation of flites capabilities
- and an example of a serious application using flite.
|