-
Notifications
You must be signed in to change notification settings - Fork 1
iPodLinux port of CMU Flite (festival-lite), a fast text-to-speech synthesis engine
License
iPodLinux-Community/Flite
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
Flite: a small run-time speech synthesis engine version 1.3-release Copyright Carnegie Mellon University 1999-2005 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 <[email protected]> (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 <[email protected]> and Alan W Black <[email protected]>. 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 with 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. (Later versions will include a streaming option which will reduce this to less than one quarter). 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 FreeBSD 3.x and 4.x o Solaris 5.7, and Solaris 9 o Initial support for Mac OS X o Windows 2000 under Cygwin 1.3.5 o Some support for WinCE (2.11 and 3.0) is included but is not complete o PalmOS 5.x devices (Treo 600, Zire 31 and Tungsten C) o Successfully compiles and runs under 64Bit Linux architectures o OSF1 V4.0 (gives an unimportant warning about sizes when compiled cst_val.c) 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 1.3-release o fixes to lpc residual extraction to give better quality output o An updated lexicon (festlex_CMU from festival-2.0) 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 a small talking app ("flop") o runs under ix86_64 linux New in 1.2-release (February 2003) o A build process for diphone and clunit/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-1.3-release.tar.gz cd flite-1.3-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 To compile for the ipaq Linux distribution (we've done this on Familiar and Intimate), no automatic cross compilation configuration is set up yet. Thus configure on a Linux machine and edit config/config. change gcc ar ranlib to their arm-linux equivalents change FL_VOX to cmu_us_kal16, make clean make arm-linux-strip bin/flite The copy bin/flite to the ipaq. This binary is also available from http://cmuflite.org/packed/flite-1.2/flite-1.2_bin16KHz_arm-linux.tar.gz Because the Linux ipaq audio driver only supports 16KHz (and more) we include this larger voice. The Sharp Zaurus SL-5000D is a very similar machine, however it does support 8KHz sampling and a smaller binary is provided. The Zaurus typically has less free memory so there is an advantage to this http://cmuflite.org/packed/flite-1.2/flite-1.2_bin8KHz_arm-linux.tar.gz This voice also used fixed point rather floating point as the StrongARM doesn't have floating point instructions. Usage: ------ 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 --seti verbosity=1 doc/alice Print sentences as ther 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` Voice quality ------------- So you've eagerly downloaded flite, compiled it and run it, now you are disappointed that is 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 sang. 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 an sample voice that was used in the testing process. We have better voices in Festival and are working on the coversion process to make it both more automatic and more robust and tunable, but we haven't done that yet, so in this first beta release. This old poor sounding voice is all we have, sorry, we'll provide you with free, high-quality, scalable, configurable, natural sounding voices for flite, in all languages and dialects, with the tools to built new voices efficiently and robustly as soon as we can. Though in the mean time, a few higher quality voices will be released with the next version. If you aren't willing to wait you can try Cepstral, LLC's voices. (http://www.cepstral.com) They aren't free, but they do sound better and are targeted at similar platforms. Although Cepstral uses the Flite core, the voices, compression and interfaces are quite different. Todo: ---- This release is just the beginning, there is much to do and this can be a lot faster and smaller. We have already seriously considered some of the following but they didn't make this release. In near future versions we will add o Streaming synthesis so no large buffers of waveforms need be held o Better compression of the lexicon, and unit databases o Better quality speech (we have better diphone databases which haven't been released yet but do give better quality synthesis). o Documentation to allow people to more easily integrate flite into applications. o Some reasonable voices based on our newer voice building work (e.g. Arctic and HTS)
About
iPodLinux port of CMU Flite (festival-lite), a fast text-to-speech synthesis engine
Resources
License
Stars
Watchers
Forks
Releases
No releases published
Packages 0
No packages published