
# Global configuration for Speech Dispatcher
# ==========================================

# -----SYSTEM OPTIONS-----

# CommunicationMethod specifies the method to be used by Speech Dispatcher to communicate with
# its clients. Two basic methods are "unix_socket" and "inet_socket".
#
# unix_socket -- communication over Unix sockets represented by a file in the
# filesystem (see SocketPath below). This method works only locally, but is
# preferred for standard session setup, where every user runs his own instance of Speech
# Dispatcher to get voice feedback on his own computer.
#
# inet_socket -- alternatively, you can start Speech Dispatcher on
# a TCP port and connect to it via hostname/port. This allows for a more
# flexible setup, where you can use Speech Dispatcher over network
# from different machines. See also the Port and LocalhostAccessOnly
# configuration variables.
#
# CommunicationMethod "unix_socket"

# SocketPath is either "default" or a full path to the filesystem
# where the driving Unix socket file should be created in case the
# CommunicationMethod is set to "unix_socket". The default is
# $XDG_RUNTIME_DIR/speech-dispatcher/speechd.sock where $XDG_RUNTIME_DIR
# is the directory specified by the XDG Base Directory Specification.
# Do not change this unless you have a reason and know what you are doing.

# SocketPath "default"

# The Port on which Speech Dispatcher should be available to clients if the "inet_socket"
# communication method is used.

# Port 6560

# By default, if "inet_socket" communication method is used, the specified port is opened only
# for connections coming from localhost. If LocalhostAccessOnly is set to 0 it disables this
# access control. It means that the port will be accessible from all computers on the
# network. If you turn off this option, please make sure you set up some system rules on what
# computers are and are not allowed to access the Speech Dispatcher port.

# LocalhostAccessOnly 1

# By default, Speech Dispatcher is configured to shut itself down after a period of
# time if no clients are connected. The timeout value is in seconds, and is started when
# the last client disconnects. A value of 0 disables the timeout.

# Timeout 5

# -----LOGGING CONFIGURATION-----

# The LogLevel is a number between 0 and 5 specifying the
# verbosity of information to the logfile  or screen
# 0 means nothing, 5 means everything (not recommended).

LogLevel  3

# The LogDir specifies where the Speech Dispatcher logs reside
# Specify "stdout" for standard console output
# or a custom log directory path. 'default' means
# the logs are written to the default destination (e.g. a preconfigured
# system directory or the home directory if .speech-dispatcher is present)
# DO NOT COMMENT OUT THIS OPTION, leave as "default" for standard logging

LogDir  "default"
#LogDir  "/var/log/speech-dispatcher/"
#LogDir  "stdout"

# The CustomLogFile allows logging all messages # regardless of
# priority, to the given destination.
#CustomLogFile "protocol" "/var/log/speech-dispatcher/speech-dispatcher-protocol.log"

# ----- VOICE PARAMETERS -----

# The DefaultRate controls how fast the synthesizer is going to speak.
# The value must be between -100 (slowest) and +100 (fastest), default
# is 0.

# DefaultRate  0

# The DefaultPitch controls the pitch of the synthesized voice.  The
# value must be between -100 (lowest) and +100 (highest), default is
# 0.

# DefaultPitch  0

# The DefaultPitchRange controls the pitch range of the synthesized voice.  The
# value must be between -100 (lowest) and +100 (highest), default is
# 0.

# DefaultPitchRange  0

# The DefaultVolume controls the default volume of the voice.  It is
# a value between -100 (softly) and +100 (loudly).  Currently, +100
# maps to the default volume of the synthesizer.

DefaultVolume 100

# The DefaultVoiceType controls which voice type should be used by default.
# Voice types are symbolic names which map to particular voices provided by
# the synthesizer according to the output module configuration.
# Please see the synthesizer-specific configuration
# in etc/speech-dispatcher/modules/ to see which voices are assigned to
# different symbolic names.  The following symbolic names are
# currently supported: MALE1, MALE2, MALE3, FEMALE1, FEMALE2, FEMALE3,
# CHILD_MALE, CHILD_FEMALE

# DefaultVoiceType  "MALE1"

# The Default language with which to speak
# Note that the spd-say client in particular always sets the language to its
# current locale language, so this particular client will never pick this
# configuration.

# DefaultLanguage "en-US"


# ----- MESSAGE DISPATCHING CONTROL -----

# The DefaultClientName specifies the name of a client who didn't
# introduce himself at the beginning of an SSIP session.

# DefaultClientName  "unknown:unknown:unknown"

# The Default Priority. Use with caution, normally this shouldn't be
# changed globally (at this place)

# DefaultPriority  "text"

# The DefaultPauseContext specifies by how many index marks a speech
# cursor should return when resuming after a pause. This is roughly
# equivalent to the number of sentences before the place of the
# execution of pause that will be repeated.

# DefaultPauseContext 0

# -----SPELLING/PUNCTUATION/CAPITAL LETTERS  CONFIGURATION-----

# The DefaultPunctuationMode sets the way dots, comas, exclamation
# marks, question marks etc. are interpreted.  none: they are ignored
# some: some of them are sent to synthesis (see
# DefaultPunctuationSome) all: all punctuation marks are sent to
# synthesis

# DefaultPunctuationMode "none"

# Level of punctuation for which symbol pre-processing should be performed by
# the server rather than by the module.
#
# This is completely independent of what punctuation level is actually asked, it
# controls to which extent the server should do the punctuation work to insert
# the appropriate words or if the output module is responsible for doing it.
#
# Setting this to "no" disables pre-processing completely and leaves all
# punctuation preprocessing to the output module. Setting this to
# "none" enables only the server rules which are always enabled whatever
# the punctuation level. Setting this to "all" enables all server rules for
# punctuation. Setting this to "char" enables all server rules, including
# rules for spelling spaces. Of course, which rules actually take effect depends
# on the requested punctuation level.

SymbolsPreproc "char"

# Which preprocessing files should be loaded, and in which order
#
# This is done first for the most specific localization, then lesser specific
# localization, etc.  I.e. for the fr_FR language for instance, fr-fr files are
# loaded first, then fr files, then en files.

SymbolsPreprocFile "gender-neutral.dic"
SymbolsPreprocFile "font-variants.dic"
SymbolsPreprocFile "symbols.dic"
SymbolsPreprocFile "emojis.dic"
SymbolsPreprocFile "orca.dic"
SymbolsPreprocFile "orca-chars.dic"

# The DefaultCapLetRecognition: if set to "spell", capital letters
# should be spelled (e.g. "capital b"), if set to "icon",
# capital letters are indicated by inserting a special sound
# before them but they should be read normally, it set to "none"
# capital letters are not recognized (by default)

# DefaultCapLetRecognition  "none"

# The DefaultSpelling: if set to On, all messages will be spelt
# unless set otherwise (this is usually not something you want to do.)

# DefaultSpelling  Off

# ----- AUDIO CONFIGURATION -----------

# -- AUDIO OUTPUT --

# Chooses between the possible sound output systems:
#       "pulse" - PulseAudio
#       "alsa"  - Advanced Linux Sound System
#       "oss"   - Open Sound System
#       "pipewire" -   the new low-latency sound server, for near realtime speech performance
#       "nas"   - Network Audio System
#       "libao" - A cross platform audio library
#
# Pipe Wire is the newest audio output method in this configuration, but not the default one.
# However, if it works in your deployment, it is recommended because of the
# latency related advantages it has over pulseaudio and others, however enabling
# it should be done with precaution, because it isn't tested to work in all
# configurations supported by speech dispatcher.
# For now, enabling this is at the discression of the users and packagers of
# speech dispatcher. However, because we want to eventually make this the default
# for everyone, trying it in your deployments, if non-critical, is recommended
#
# OSS, Pulse Audio and ALSA are only provided for compatibility with
# architectures that do not include Pipe Wire.
#
# NAS provides network transparency, but is not very well tested.
#
# libao is a cross platform library with plugins for different sound systems
# and provides alternative output for Pulse Audio and ALSA as well as for other
# backends.

# AudioOutputMethod "pipewire"

# -- Pulse Audio parameters --

# Pulse audio device name or "default" for the default pulse device

#AudioPulseDevice "default"

# Latency requested from pulseaudio, in ms. Smaller values make speech
# interruption snappier, but also uses more CPU time thus battery.
# 10ms latency is considered in HCI (Human-computer Interaction) as real-time.

#AudioPulseMinLength 10

# -- ALSA parameters --

# Audio device for ALSA output

#AudioALSADevice "default"

# -- OSS parameters --

# Audio device for OSS output

#AudioOSSDevice "/dev/dsp"

# -- NAS parameters --

# Route to the Network Audio System server when NAS
# is chosen for the audio output. Note that NAS
# server doesn't need to run on your machine,
# you can use it also over network (for instance
# when working on remote machines).

#AudioNASServer "tcp/localhost:5450"



# -----OUTPUT MODULES CONFIGURATION-----

# Each AddModule line loads an output module.
#  Syntax: AddModule "name" "binary" "configuration" "logfile"
#  - name is the name under which you can access this module
#  - binary is the path to the binary executable of this module,
#    either relative (to libexec/speech-dispatcher-modules/
#    or ~/.local/libexec/speech-dispatcher-modules) or absolute
#  - configuration is the path to the config file of this module,
#    either relative (to etc/speech-dispatcher/modules/
#    or ~/.config/speech-dispatcher) or absolute

#AddModule "espeak"                   "sd_espeak"    "espeak.conf"
#AddModule "espeak-ng"                "sd_espeak-ng" "espeak-ng.conf"
#AddModule "festival"                 "sd_festival"  "festival.conf"
#AddModule "flite"                    "sd_flite"     "flite.conf"
#AddModule "ivona"                    "sd_ivona"     "ivona.conf"
#AddModule "pico"                     "sd_pico"      "pico.conf"
#AddModule "espeak-ng-mbrola"         "sd_espeak-ng-mbrola" "espeak-ng-mbrola.conf"
#AddModule "espeak-ng-mbrola-generic" "sd_generic"   "espeak-ng-mbrola-generic.conf"
#AddModule "espeak-mbrola-generic"    "sd_generic"   "espeak-mbrola-generic.conf"
#AddModule "swift-generic"            "sd_generic"   "swift-generic.conf"
#AddModule "epos-generic"             "sd_generic"   "epos-generic.conf"
#AddModule "dtk-generic"              "sd_generic"   "dtk-generic.conf"
#AddModule "ibmtts"                   "sd_ibmtts"    "ibmtts.conf"
#AddModule "cicero"                   "sd_cicero"    "cicero.conf"
#AddModule "kali"                     "sd_kali"      "kali.conf"
#AddModule "mary-generic"             "sd_generic"   "mary-generic.conf"
#AddModule "baratinoo"                "sd_baratinoo" "baratinoo.conf"
#AddModule "rhvoice"                  "sd_rhvoice"   "rhvoice.conf"
#AddModule "voxin"                    "sd_voxin"     "voxin.conf"

# The output module testing doesn't actually connect to anything. It
# outputs the requested commands to standard output and reads
# responses from stdandard input. This way, Speech Dispatcher's
# communication with output modules can be tested easily.

# AddModule "testing"

# The DefaultModule selects which output module is the default.  You
# must use one of the names of the modules loaded with AddModule.

# DefaultModule espeak-ng

# The LanguageDefaultModule selects which output modules are preferred
# for specified languages.

#LanguageDefaultModule "en"  "espeak"
#LanguageDefaultModule "cs"  "festival"
#LanguageDefaultModule "es"  "festival"

# -----CLIENT SPECIFIC CONFIGURATION-----

# Here you can include the files with client-specific configuration
# for different types of clients. They must contain one or more sections with
# this structure:
#     BeginClient "emacs:*"
#          DefaultPunctuationMode "some"
#          ...and/or some other settings
#     EndClient
# The parameter of BeginClient tells Speech Dispatcher which clients
# it should apply the settings to (it does glob-style matching, you can use
# * to match any number of characters and ? to match one character)

# There are some sample client settings

Include "clients/*.conf"

# The DisableAutoSpawn option will disable the autospawn mechanism.
# Thus the server will not start automatically on requests from the clients
# DisableAutoSpawn


# Copyright (C) 2001-2009 Brailcom, o.p.s
# Copyright (C) 2009 Rui Batista <ruiandrebatista@gmail.com>
# Copyright (C) 2010 Andrei Kholodnyi <Andrei.Kholodnyi@gmail.com>
# Copyright (C) 2010 William Hubbs <w.d.hubbs@gmail.com>
# Copyright (C) 2010 Trevor Saunders <trev.saunders@gmail.com>
# Copyright (C) 2012 William Jon McCann <jmccann@redhat.com>
# Copyright (C) 2014 Rob Whyte <fudge@thefudge.net>
# Copyright (C) 2014-2016 Luke Yelavich <themuso@ubuntu.com>
# Copyright (C) 2014 Hussain Jasim <hussainmkj@gmail.com>
# Copyright (C) 2017 Colomban Wendling <cwendling@hypra.fr>
# Copyright (C) 2018 Raphaël POITEVIN <rpoitevin@hypra.fr>
# Copyright (C) 2018 Florian Steinhardt <no.known.email@example.com>
# Copyright (C) 2018-2024 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/>.
