# The mimic3-generic output module is based on the generic plugin for Speech
# Dispatcher. It means there is no 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.

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

# IMPORTANT: The audio output method relies on an audio playback
# utility (play, aplay, paplay for OSS, ALSA or Pulse)
# being installed. If this is not the case, consider installing it
# or replace the $PLAY_COMMAND string in the GenericExecuteString below
# with play, paplay or similar.
#
# 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).
# This line uses the command curl, so you might need to install
# curl if it isn't already installed.
# The command can be split into more lines, if necessary, using '\'.
GenericExecuteSynth \
"printf %s \'$DATA\' | mimic3 --remote --voice \'$VOICE\' --stdout | $PLAY_COMMAND"

GenericCmdDependency "mimic3"
GenericSoundIconFolder "/usr/local/share/sounds/sound-icons/"

# 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=\"()[]{};:\""
GenericPunctMost "--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  ""

# If the language you need to pass in $LANGUAGE is different
# from the standard ISO language code, you can specify
# which string to use instead. If you wish to use
# other than ISO charset for the specified language,
# you can add it's name (as accepted by iconv) as a
# third parameter in doublequotes, or use GenericDefaultCharset
# to specify it

#GenericLanguage  "en" "en_GB" "utf-8"
#GenericLanguage  "en" "en_US" "utf-8"
#GenericDefaultCharset "utf-8"

# 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 your mimic3 installation and add the voices
# you want to use.

AddVoice	"af"	"FEMALE1"	"af_ZA/google-nwu_low"
AddVoice	"bn"	"FEMALE1"	"bn/multi_low"
AddVoice	"de"	"MALE1"		"de_DE/thorsten_low"
AddVoice	"de"	"MALE2"		"de_DE/thorsten-emotion_low"
AddVoice	"de"	"MALE3"		"de_DE/m-ailabs_low"
AddVoice	"el"	"FEMALE1"	"el_GR/rapunzelina_low"
AddVoice	"en"	"MALE1"		"en_UK/apope_low"
AddVoice	"en"	"MALE1"		"en_US/hifi-tts_low"
AddVoice	"en"	"FEMALE1"	"en_US/ljspeech_low"
AddVoice	"en"	"MALE2"		"en_US/m-ailabs_low"
AddVoice	"en"	"MALE3"		"en_US/cmu-arctic_low"
AddVoice	"en"	"FEMALE2"	"en_US/vctk_low"
AddVoice	"es"	"MALE1"		"es_ES/carlfm_low"
AddVoice	"es"	"MALE2"		"es_ES/m-ailabs_low"
AddVoice	"fa"	"FEMALE1"	"fa/haaniye_low"
AddVoice	"fi"	"MALE1"		"fi_FI/harri-tapani-ylilammi_low"
AddVoice	"fr"	"FEMALE1"	"fr_FR/m-ailabs_low"
AddVoice	"fr"	"FEMALE2"	"fr_FR/siwis_low"
AddVoice	"fr"	"MALE1"		"fr_FR/tom_low"
AddVoice	"gu"	"FEMALE1"	"gu_IN/cmu-indic_low"
AddVoice	"ha"	"MALE1"		"ha_NE/openbible_low"
AddVoice	"hu"	"FEMALE1"	"hu_HU/diana-majlinger_low"
AddVoice	"it"	"MALE1"		"it_IT/mls_low"
AddVoice	"it"	"MALE2"		"it_IT/riccardo-fasol_low"
AddVoice	"jv"	"MALE1"		"jv_ID/google-gmu_low"
AddVoice	"ko"	"FEMALE1"	"ko_KO/kss_low"
AddVoice	"ne"	"FEMALE1"	"ne_NP/ne-google_low"
AddVoice	"nl"	"MALE1"		"nl/bart-de-leeuw_low"
AddVoice	"nl"	"MALE2"		"nl/flemishguy_low"
AddVoice	"nl"	"FEMALE1"	"nl/nathalie_low"
AddVoice	"nl"	"MALE3"		"nl/pmk_low"
AddVoice	"nl"	"MALE4"		"nl/rdh_low"
AddVoice	"pl"	"FEMALE1"	"pl_PL/m-ailabs_low"
AddVoice	"ru"	"FEMALE1"	"ru_RU/multi_low"
AddVoice	"sw"	"MALE1"		"sw/lanfrica_low"
AddVoice	"te"	"MALE1"		"te_IN/cmu-indic_low"
AddVoice	"tn"	"FEMALE1"	"tn_ZA/google-nwu_low"
AddVoice	"uk"	"MALE1"		"uk_UK/m-ailabs_low"
AddVoice	"vi"	"FEMALE1"	"vi_VN/vais1000_low"
AddVoice	"to"	"MALE1"		"yo/openbible_low"

# DefaultVoice specifies which $VOICE string should be used if no voice is
# specified otherwise.

DefaultVoice    "en_UK/apope_low"

# Copyright (C) 2018 Florian Steinhardt <no.known.email@example.com>
# Copyright (C) 2022, 2025 Samuel Thibault <samuel.thibault@ens-lyon.org>
#
# This program is free software; you can redistribute it and/or modify it under
# the terms of the GNU General Public License as published by the Free Software
# Foundation; either version 2 of the License, or (at your option) any later
# version.
#
# This program is distributed in the hope that it will be useful, but WITHOUT ANY
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
# PARTICULAR PURPOSE.  See the GNU General Public License for more details (file
# COPYING in the root directory).
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <https://www.gnu.org/licenses/>.
