This is an emofilt distribution. You should get further information at
The newest version of emofilt should always be available there via the
emoFilt is NOT a text-to-speech synthesizer, it's ONLY a filter between
an MBROLA pho-file and the MBROLA-engine to "emotionalize" the speech.
You NEED at least MBROLA in you path to use emofilt.
if you unpacked the distribution the following files should be there
Readme.txt - this file
emofilt_software_user_agreement.txt - license agreement
emofilt.jar - program as jar-file
emofiltConfig.ini - main configuratio file, this needs DEFINITELY to be adapted before first use!
languages.xml - voice-specification file
emotions.xml - example emotion-specification file
logConfig.xml - log4j-configuration
taggergui.config - configuration file for the storytelling interface
sayEmo.sh - example script to run emofilt with Mary TTS
emofilt.bat/emofilt.sh - example batch file to start Gui with button-click
runTaggerGUI.sh/runTaggerGUI.bat - example files to start the storytelling interface
makeLanguage.awk - script to generate new languages.xml entries
directory test - several PHO-files for testing
directory docs - web documentation
directory src - source-files
directory init - initilization files for the modification plugins, only needed for building
Emofilt needs Java 1.5 to be installed. Other versions might
work, but I didn't try them.
Unpack the zip-archive. All pathes are stored in the
emofiltConfig.ini files, open it (or use one of the templates provided
for your operating system) with a text-editor.
The most important path you will have to configure (besides the paths
to Mbrola-programs) is the workingDir (right on top of the file).
Specify here the directory where the other configuration files
(languages.xml, emotions.xml and loggerConfig.xml) are stored.
Then either (if windows) click emoFilt.bat or type
java -jar emofilt_fat.jar -useGui on a commandline in this emofilt-
You can run emofilt from anywhere if you specify the path to its
configuration file with the -cf option.
Some fixed values should be specified in this configuration file, but
you can specify a different one with the -cf argument).
In order to get acoustic output ("play-button") you must configure
the paths in the configuration file and have MBROLA installed.
The default configuration file is in English, but you can write
your own for your language by translating the wordings.
In order to have the "new utterance" command in the Gui-interface work,
you have to have installed and configured (in the configuration-file) a
text-to-phofile converter program, e.g. MARY TTS.
Because emofilt is a java program you need Java to run it.
There are three interfaces:
- 1. Emofilt Developer is a graphical interface (Gui) that lets you
You can call it with the option -useGui, so you would type on the
commandline (from inside the program directory):
java -jar emofilt_fat.jar -useGui
and you should see a window popping up with the interface. First
thing you might do then is loading an utterance via the
Help is provided mainly by tooltips, which should pop up if you
linger with the pointer over the panels.
2. The story tagger interface displays an editor that can be marked up with
emotions. You can call it from the command-line by providing the path to its
java -cp emofilt/emofilt.jar; emofilt.storytagger.TaggerGUI taggergui.config
- 3. the same program can be used as a commandline interface, if you want
to use it as a filter between a text-to-phoneme converter program
here is the output if the program's usage message:
$ java -jar emofilt_fat.jar -h
emofilt version 0.94
Usage: program [-h ] [-version ] [-useGui ] [-mary ] [-if ] [-of ] [-e ] [-voc ] [-cf ] [-ef ] [-lf ] [-lcf ] [-lv ]
-h 'print usage' Default: false
-version 'print version' Default: false
-useGui 'display the graphical developer interface' Default: false
-mary 'send input to mary server for text-to-speech' Default: false
-if 'specify input pho-file' Default: System.in
-of 'specify output pho-file' Default: System.out
-e 'specify emotion (must appear in emotions-description)' Default: untitled
-voc 'specify voice' Default:
-cf 'specify configuration-file' Default: emofiltConfig.ini
-ef 'specify emotion-description xml-file' Default: emotions.xml
-lf 'specify voice-description xml-file' Default: languages.xml
-lcf 'specify logger configuration log4j-file' Default: logConfig.xml
-lv 'specify log-level [debug warn error fatal off]' Default: debug
-gr 'global rate: damp or amplify the modifications for graded emotions between -1 and 1' Default: 0
many of the required input files can be specified in the emofilt
Follows an example-script that utters a phrase emotionally, if you use
the cygwin bash under windows and txt2pho
$ cat sayEmotional.bat
echo $2 > tmp.txt;
echo "" > txt2pho.ini;
txt2pho.exe tmp.txt tmp.pho;
java -jar "D:\Work\emoFilt\emofilt\emofilt_fat.jar" -lv off -cf
"D:\Work\emoFilt\emofilt\emofiltConfig.ini" -e $1 -if tmp.pho
PhoPlayer.exe database="D:\Programme\Mbrola\de6\de6" tmp_e.pho;
or, if the Mary server is running:
$ cat sayMary.sh
echo $2 | java -jar emofilt_fat.jar -mary -voc us1 -e $1 -of tmp_e.pho;
PhoPlayer.exe database="D:\Programme\Mbrola\us1\us1" tmp_e.pho;
the same function as a bash-script under linux
$ cat sayEmotional.sh
echo $2 | txt2pho | java -jar /home/felixbur/emofilt/emofilt.jar -cf /home/felixbur/emofilt/emofiltConfig.ini -e $1 | mbrola /home/felixbur/de1/de1 - -.au | play -t au -;
If you have the Mary text-to-speech server running, you could also omit
txt2pho and pass orthography directly to emofilt like this:
echo $2 | java -jar /home/felixbur/emofilt/emofilt.jar -mary -cf /home/felixbur/emofilt/emofiltConfig.ini -e $1 | mbrola /home/felixbur/de1/de1 - -.au | play -t au -;
If I type now
$ sayEmotional.sh happiness "am Wochenende scheint mal wieder die Sonne."
I hear the sentence played in a happy mood ;-)
If you should write new language, emotion or config files, e.g.
for new voices/languages,
I'll be happy to include them in future distributions.
- fixed bug that allowed pitch to go below zero because pause length was used in descending pitch calcule.
- allowing zero duration for silence phoneme
- fixed bug that caused current directory to appear before path values
- lines in tagger gui can now be selected by double click
- fixed bug in storytagger that prevented proper synthesis
- added tabbed pane to story tagger to show resulting xml code
- added first version of story tagger GUI
- added some library interfaces to call pho-file creation from outside the package
- replaced Mary phonetization server interface version 3.6 with version 4.3
- added us3
- added menu entries to create new emotion names and remove them.
- handle audio playback now with internal java audio library
- changed replacements of language descriptors for de[1,2,3,4,5] from 6-a: to a-a:.
- enhanced readability of messages in GUI
- changeLastSylContour now changes last syllable containing a voiced phoneme.
- fixed bug in modelContour causing zero f0-values at utterance end.
- added Dutch: nl2
- added global rate for graded emotion simulation: possibility to dampen or amplify all modifications by a single factor.
- make GUI geometry configurable
- interpolate missing pitch contour description for voiced phonemes.
- read and writes now also pitch information for unvoiced phonemes
- added save PHO file functionality
- removed the automatic modeling of f0-contours when reading in a PHO file
- fixed some serious bugs concerning the modeling of f0-contours (still needed for jitter and wave-model)
- fixed bug: couldn't read in files starting with vowel
- changed pitch interpolation to interpolate between phoneme borders
- migrated code to java 1.5.0
- added interface to Mary (http://mary.dfki.de/) Text-to-speech in the
GUI. Start the Mary server and edit the PhoGenCmd section in the
config.ini if you want to use it. You can call the Mary-server via the
GUI (new utterance) or via the commandline (-mary option).
- fixed bug: wave-model plugin caused zero-pitch values if utterance starts or
ends with voiceless syllables.
- fixed bug: globally descending f0-contour had no syllable-focus.
- fixed bug: plugin lastSylContour didn't work on utterances with unvoiced last syllables.
- fixed bug: modifications were done repeatedly
- new feature: can specify Colors by names (as specified at
- fixed bug: rewritten Syllabelizer, many bugs fixed
- added plugin architecture for modifications (see extra docs on how
to write own modifications)
- changed almost all modification-names : old emotions.xml files won't
work any more
- fixed bug: change last sylcontour didn't work for English
- changed -v option to -version
- fixed bug: -voc option wasn't settable
- tested with Linux (Suse 9.0)
- changed pathes to external commands in the config-file
- renamed config-file extension from .dat to .ini
- changed rate-settings for jitter and pauses
- configuration: removed paths to config-files and added workingDir
- fixed bug: help-file wasn't readable from jar-file
- added save-utterance button
- showHelp didn't work with jar-file.
- fixed bug: overlong error messages caused Gui-widgets to collaps
- added menu icons
- fixed bug: close window in GUI didn't exit program
- added looks jgoodies look and feel
- fixed bug: no tooltip for changeLastSylContour
- fixed bug: if reading emotion-descriptions from non-English denotations
pitch-contours, vowel-targets and voice-effort were ignored
- look and feel can now be set in config-file
- fixed bug: starting a pho-file with pauses gave nullpointer in syllablelize
- added defaultVoice to config-file
- fixed bug: duration and time f0-values couldn't be specified as Doubles
- Gui starts now also without initial utterance
- added German configuration file for distribution
- added gender option for NLP-processor in the GUI.
- Added tooltips.
- Added description-element for emotions (shows as tooltip).
- fixed bug: No error message appeared if NLP-program wasn't configured.
- fixed bug: Foreground color in modification-label wasn't setable
- added command-line interface.
- very first alpha version, not yet tested.