change log
project main page
further samples
languages config
emotions config
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.


if you unpacked the distribution the following files should appear
Readme.txt  - this file
emofilt_software_user_agreement.txt - license agreement
emofilt_fat.jar - program as jar-file

configuration files:
emofiltConfig.ini - main configuratio file
languages.xml  - voice-specification file
emotions.xml - example emotion-specification file
logConfig.xml - log4j-configuration

sayMary.sh - example script to run emofilt with Mary TTS
emoFilt.bat - example batch file to start Gui with button-click
directory test - several PHO-files for testing

directory docs - web documentation
directory src - source-files
directory licenses - several software licenses that apply


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 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 two interfaces:
- 1.  Emofilt Developer is a graphical interface (Gui) that lets you 
  generate emotion-descriptions.
  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 
  utterance.load menu-items. 
  Help is provided mainly by tooltips, which should pop up if you 
  linger with the pointer over the panels.

- 2. 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 
  and Mbrola.
  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 
-of tmp_e.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.