# Espeak output module is based on the generic plugin for Speech
# Dispatcher. It means there is no C code written explicitly for
# this plugin, all the specifics are handled in this configuration
# and we call a simple command line client to perform the actual
# synthesis. Use this config file with the sd_generic output module.
#
# IMPORTANT: The audio output method relies on ALSA Player (aplay)
# being installed. If this is not the case, consider installing it
# or replace the aplay command in the GenericExecuteString below
# with play or similar.
#
# GenericExecuteString to what's the name of this utility on your
# system (it might be "speak")

# GenericExecuteSynth is the shell command that should be
# executed in order to say some message. This command must
# stop saying the message on SIGKILL, otherwise it's useless.
# You can use the variables $LANGUAGE, $VOICE, $PITCH and $RATE
# which will be substituted for the appropriate value (you
# can modify this value, see other parameters).
# The command can be split into more lines, if necessary, using '\'.
GenericExecuteSynth \
"echo \'$DATA\' | espeak -w $TMPDIR/espeak.wav -v $VOICE -s $RATE -a $VOLUME -p $PITCH $PUNCT --stdin && $PLAY_COMMAND $TMPDIR/espeak.wav"

# The following three items control punctuation levels None, Some, and All.
# Each of these values will be substituted into the $PUNCT variable depending
# on the value passed to speech dispatcher from applications.
# Note that if an empty string is specified, then $PUNCT will be blank 
# which is a default situation for espeak.
 
GenericPunctNone ""
GenericPunctSome "--punct=\"()[]{};:\""
GenericPunctAll "--punct"

# GenericStripPunctChars is a list (enclosed in doublequotes) of
# all the characters that should be replaced by whitespaces in
# order not to be badly handled by the output module or misinterpreted
# by shell.

# GenericStripPunctChars  ""

# AddVoice specifies which $VOICE string should be assigned to
# each language and symbolic voice name. All the voices you want
# to use must be specified here. This list will likely not be
# up-to-date, please check eSpeak documentation and add the voices
# you want to use. Or better use the native espeak module ('espeak'
# not 'espeak-generic')

AddVoice        "en"    "MALE1"		"en"
AddVoice	"en"    "MALE2"		"en-b"
AddVoice	"en"    "MALE3"		"en-d"
AddVoice	"en"    "FEMALE1"   	"en-f"
AddVoice	"en"    "FEMALE2"   	"en-fb"
AddVoice	"en"    "FEMALE3"   	"en-fd"
AddVoice	"en"    "CHILD_MALE"    "en-c"
AddVoice	"en"	"CHILD_FEMALE" 	"en-fc"
AddVoice        "af"    "MALE1"		"af"
AddVoice        "de"    "MALE1"		"de"
AddVoice        "eo"    "MALE1"		"eo"
AddVoice        "es"    "MALE1"		"es"
AddVoice        "fi"    "MALE1"		"fi"
AddVoice        "fr"    "MALE1"		"fr"
AddVoice        "it"    "MALE1"		"it"
AddVoice        "pt"    "MALE1"		"pt"
AddVoice        "ro"    "MALE1"		"ro"

# Experimental voices
AddVoice        "cs"    "MALE1"		"cs"
AddVoice        "cy"    "MALE1"		"cy"
AddVoice        "el"    "MALE1"		"el"
AddVoice        "nl"    "MALE1"		"nl"
AddVoice        "no"    "MALE1"		"no"
AddVoice        "hi"    "MALE1"		"hi"
AddVoice        "pl"    "MALE1"		"pl"
AddVoice        "ru"    "MALE1"		"ru"
AddVoice        "sv"    "MALE1"		"sv"
AddVoice        "vi"    "MALE1"		"vi"


# These parameters set _rate_, _pitch_, and _volume_ conversion. This is
# part of the core of the definition of this generic output
# module for this concrete synthesizer, it's not intended to
# be modified by common users.
# The resulting rate (or pitch) has the form:
#       (speechd_rate * GenericRateMultiply) + GenericRateAdd
# while speechd_rate is a value between -100 (lowest) and +100 (highest)
# You have to define some meaningful conversion for each synthesizer

# Here's the mapping from SSIP (Speech Dispatcher) to ESpeak (v1.10):
#
#           SSIP Range  SSIP Default    ESpeak Range    ESpeak Default
#           ----------- ------------    ------------    --------------
# Rate      -100 to 100     0           80 to 320       160
# Pitch     -100 to 100     0            0 to 99         50
# Volume    -100 to 100     0            0 to 20         10
#
# The SSIP defaults are actually controlled via DefaultRate, DefaultPitch, and
# DefaultVolume in the speechd.conf file.

GenericRateAdd          160
GenericPitchAdd         50
GenericVolumeAdd        10

# (These values are multiplied by 100, because DotConf currently
# doesn't support floats. So you can write 0.85 as 85 and so on.)

GenericRateMultiply     160
GenericPitchMultiply    50
GenericVolumeMultiply   10

# If the client program can't handle floats, you will have to
# use these two options to force integers as the parameters
# 1 means force integers, 0 means do nothing (write floats).

GenericRateForceInteger     1
GenericPitchForceInteger    1
GenericVolumeForceInteger   1

# Note that SSIP rates < -50 are spoken at -50.

# Debug turns debugging on or off
# See speechd.conf for information where debugging information is stored
Debug 0
