Skip to content

How to install flite / flitevox for FFmpeg?

Flitevox or Flitelib is an open source small run time speech engine. Pass it text and create an audio file with a robot saying it. Really cool and useful for some projects.

Flitelib is not a native filter available in FFmpeg build nor inside the source. Although the documentation states that –enable-libflite is required for config, installing flitelib is required before installing FFmpeg. If you do try to enable the filter you’ll get this error:

$ ./configure --disable-indevs --enable-libflite --enable-cross-compile
ERROR: libflite not found

If you think configure made a mistake, make sure you are using the latest
version from Git.  If the latest version fails, report the problem to the
ffmpeg-user@ffmpeg.org mailing list or IRC #ffmpeg on irc.freenode.net.
Include the log file "ffbuild/config.log" produced by configure as this will help
solve the problem.

In this post, I’ll show you how to install flite and get it working with FFmpeg

First download flitevox from source and install

$ git clone https://github.com/festvox/flite.git
$ cd flite/
$ ./configure
$ make
$ sudo make install

If you’re running linux this installation works perfectly. If you’re running MacOS (if on Monterey or newer, look at the bottom of this tutorial for new instructions), you’ll get this error:

$ sudo make install
Password:
Installing
mkdir -p /usr/local/bin
mkdir -p /usr/local/lib
mkdir -p /usr/local/include/flite
/usr/bin/install -c -m 644 include/*.h /usr/local/include/flite
/usr/bin/install -c -m 755 ../bin/flite_time /usr/local/bin
cp -pd ../build/x86_64-darwin19.0.0/lib/libflite_cmu_us_kal.a ../build/x86_64-darwin19.0.0/lib/libflite_cmu_time_awb.a ../build/x86_64-darwin19.0.0/lib/libflite_cmu_us_kal16.a ../build/x86_64-darwin19.0.0/lib/libflite_cmu_us_awb.a ../build/x86_64-darwin19.0.0/lib/libflite_cmu_us_rms.a ../build/x86_64-darwin19.0.0/lib/libflite_cmu_us_slt.a ../build/x86_64-darwin19.0.0/lib/libflite_usenglish.a ../build/x86_64-darwin19.0.0/lib/libflite_cmu_indic_lang.a ../build/x86_64-darwin19.0.0/lib/libflite_cmu_grapheme_lang.a ../build/x86_64-darwin19.0.0/lib/libflite_cmulex.a ../build/x86_64-darwin19.0.0/lib/libflite_cmu_indic_lex.a ../build/x86_64-darwin19.0.0/lib/libflite_cmu_grapheme_lex.a ../build/x86_64-darwin19.0.0/lib/libflite.a /usr/local/lib
cp: illegal option -- d
usage: cp [-R [-H | -L | -P]] [-fi | -n] [-apvXc] source_file target_file
       cp [-R [-H | -L | -P]] [-fi | -n] [-apvXc] source_file ... target_directory
make[1]: *** [install] Error 64
make: *** [install] Error 2

That’s because MacOS uses different “cp” variables then linux. I found this Stack Overflow answer with the solution: https://stackoverflow.com/a/29075638/525576 but here’s the steps to fix it.

In the folder “flite/main” you’ll need to edit the Makefile with the MacOS version of the command:

$ cd main/
$ vim Makefile

Replace the following:

#       The libraries: static and shared (if built)
        cp -pd $(flite_LIBS_deps) $(INSTALLLIBDIR)
ifdef SHFLAGS
        cp -pd $(SHAREDLIBS) $(VERSIONSHAREDLIBS) $(INSTALLLIBDIR)
endif

to (-pd to -pR):

#       The libraries: static and shared (if built)
        cp -pR $(flite_LIBS_deps) $(INSTALLLIBDIR)
ifdef SHFLAGS
        cp -pR $(SHAREDLIBS) $(VERSIONSHAREDLIBS) $(INSTALLLIBDIR)
endif

How we can try installing flite again:

$ sudo make install

flite should not show any errors and the installation should be complete.

Now back in ffmpeg source filter:

$ ./configure --enable-libflite --enable-cross-compile
$ make install

Installation will complete. To test if flite is working open a new terminal and type:

$ ffplay -f lavfi -i flite=text='Hello World!'

Hello work will speak!


Update Install on macOS Monterey

I recently installed this on macOS Monterey, and it seems the installation is a lot easier than before. Here’s the history of my install:

git clone https://github.com/festvox/flite.git
cd flite/
./configure
make
sudo make install
git clone https://github.com/FFmpeg/FFmpeg.git
cd FFmpeg/
./configure --enable-libflite --enable-cross-compile
make install

Then run this to try it out

ffplay -f lavfi -i flite=text='Hello World!'

For more information on how to use the flite filter in ffmpeg, check out this tutorial, How to generate text to speech in FFmpeg.

Love FFmpeg? Grab a copy of FFmpeg For Beginners on Kindle or Paperback to learn over 120 ways to master FFmpeg!

buy now on amazon

One Trackback/Pingback

  1. […] Tip: You’ll need to enable –enable-libflite for this filter to work. Full tutorial here. […]