Version 0.12
* Add openjtalk module.
* Add socket activation.
* Add language and variant parameters to "list voice" command.
* Add libspeechd-module library for making it simpler to create external spd modules.
* libspeechd: Simplify buffer management.
* Fix use of semaphores on MacOS.
* Fix splitting long UTF-8 sequences.
* Update CLDR to version 45, symbols from orca 45.2, and symbols from NVDA.
* Add spd_fd function to C api.
* Detect module failures from generic module.
* Make the fallback espeak-ng and dummy modules hardcoded.
* Better detect generic module failures to disable them.
* pulse: Use asynchronous API to avoid buffer underruns.
* generic: Make stripping punctuation use locale charset.
* audio: Fix logging from audio modules in server-side audio.
* Sort Baratinoo engine higher.
* espeak-ng-mbrola: Fix mbrola voices with rate different from 22KHz
* Add a run-spd-say script and make run-speechd and run-spd-say able to talk directly.
* server: fix daemon mode on macOS with libao.
* Add initial pipewire support.
* Also support loading symbols from home directory

Version 0.11.5
* Update CLDR to version 43 and symbols from NVDA.
* Fix parsing and emitting space character.
* Reduce espeak buffer size to avoid ssml issues.
* Add --disable-doc.
* Fix spd-conf not being able to set the default module.
* Fix pausing without index.
* ibmtts: Fix parameter reset.
* ibmtts: Disable using the module punctuation by default.

Version 0.11.4
* Update CLDR to version 42 and symbols from NVDA.
* Fix audio plugin loading with dlopen.
* Fix atomicity of getting reply in threaded mode.

Version 0.11.3
* Fix back DefaultModule configuration.
* pico: Avoid falling to english when passed a bogus voice name.
* espeak: Fix setting voice type.

Version 0.11.2
* Fix loading xx-yy locales.
* Various memory leaks fixes.
* Add mimic3 configuration file.
* pico: Fix setting language vs voice.
* Make sure that modules report a list of voices.
* Update CLDR to version 41, symbols from NVDA and orca.
* Allow building without ltdl.
* Re-enable SSML in espeak-ng-mbrola module.

Version 0.11.1
* Add SPEECHD_PLUGIN_DIR environment variable.
* Fix listing voices of the default module.

Version 0.11
* Support playing audio through the server.
* Simplify modules thanks to this.
* modules: Add support for loading from user's .local/libexec/speech-dispatcher.
* symbols: Process symbols.dic before emojis.dic.
* symbols: Enable speechd symbols processing by default.
* modules: Moved speech dispatcher modules to /usr/libexec/speech-dispatcher-modules
  (but keep compatibility with old /usr/lib/speech-dispatcher-modules path).
* espeak-ng: Add support for mbrola voices.
* ibmtts/voxin: Improve language selection.
* ibmtts/voxin: Add option to disable punctuation commands.
* ibmtts: Fix library load.
* ibmtts: Do not build by default on other systems than 32bit PC.
* mary: Add auto-detection.
* mary: Add newer voices.
* mary: Add volume, pitch, and rate support.
* ivona: Add auto-detection.
* festival: Strip head silence.
* generic: Add DefaultVoice option.
* es_ES: Add some gender neutral rules.
* Add SPEECHD_CMD environment variable.
* modules: Rewrite main functions with BSD licence, to let proprietary modules easily reuse this as a basis.
* modules: Add skeletons ready for use as a basis for new modules.
* Add script to run speechd from the build tree.
* Update CLDR to version 39, symbols from NVDA and orca.
* Add Esperanto translation.
* Sort modules by quality, let the best quality module be the default.

Version 0.10.2
* generic: Add support for sound icons
* Add French, Norwegian Bokmål, Portuguese, Brazilian Portuguese, and Russian translations.
* Add voxin module variant.
* Factorize espeak module with espeak-ng module.
* Make ibmtts and voxin use the common queue helpers.
* Fix python bindings against python 3.9.
* Reference the golang bindings.
* Add spd_get_client_id.
* Make key, char and sound_icon commands return message id.
* Expose modulebindir in speech-dispatcher.pc.
* Remove generic modules for synths that have a non-generic module.

Version 0.10
* Add punctuation level "most".
* Rework thread synchronization.
* Move espeak/espeak-ng audio queuing to shared file, rework it.
* Make baratinoo use this audio queueing, enable marks, and support
responsiveness parameter.
* Add support for Baratinoo engine 8.6
* Show mark progression in spd-say.
* Add --character option to spd-say.
* Put country/region in language instead of variant.
* pico, generic: fix setting voice by language.
* generic: Add fallback voices for generic languages.
* symbols: Add support for SSML.
* symbols: Add SymbolPreprocFile directive to load several symbol files.
* symbols: Replace DefaultSymbolsPreproc directive with SymbolsPreproc directive
to have more fine-grained control over server preprocessing.
* symbols: Import emojis and unicode font variants support from NVDA and Unicode
CLDR and UnicodeData.
* symbols: Import some symbols from Orca.
* symbols: Add rules to drop gender-neutral forms.
* symbols: Add support for group references.
* Disable Mary-TTS module by default.
* Replace AudioPulseServer option with AudioPulseDevice.
* Fix default pulse latency to 10ms to avoid pulseaudio distorted output.
* Made client isolation stronger for Snap/Flatpak support.

Version 0.9.1
* Add module for the non-free IBM TTS (voxin) speech synthesis.
* Extend licence to later versions of GPL and LGPL.
* Update mailing list address to savannah.
* Make generic modules fallback to existing voices.

Version 0.9
* Add modules for non-free Baratinoo (VoxyGen) and Kali speech syntheses.
* Add configuration file for the Mary-TTS system.
* Add configuration file for espeak-ng + mbrola.
* Set the pulse client name when using the generic module with paplay.
* espeak-*-mbrola-generic: Update voice list.
* Auto-detect module availability.
* Make generic module provide voice list.
* Add systemd service file.

Version 0.8.8
* Add German translation, thanks to Chris Leick for the patch
* Fix some spelling mistakes, thanks to Paul Gevers for the patch
* Some slight code improvements

Version 0.8.7
* Further fixes to spd-conf, which should now work properly.
* Split the espeak-ng driver code into its own source file.
* Add a work-around to the espeak-ng driver to account for spaces in voice
  names which recently appeared in espeak-ng git master. This will properly
  be fixed in 0.9.
* Voice names are not forced to lower case, due to espeak-ng git master now
  having multi-case voice names.
* Fix stripped audio output from the flite module, thanks to Samuel Thibault.
* Further code and build improvements.

Version 0.8.6
* Various internal code improvements.
* Fix more compiler warnings.
* Python bug fixes with thanks to Sebastian Humenda.

Version 0.8.5
* More unused code removal.
* Fix more compiler warnings.
* Use GLib main loop for the main server thread.
* Implement a shutdown timer in the server, which activates after 5 seconds
  with no clients connected.
* Add support for espeak-ng.
* Configuration documentation for the ibmtts module.
* Removal of unused configuration options from the ibmtts module.
* Add command-line argument to allow for custom modules location

Version 0.8.4
* Updated documentation for required dependencies and where to find them.
* Removed unused code.
* Fixed compiler and GLib warnings.
* Cleanup header definitions and inclusions.
* Enabled silent rules by default
* Fix language identification references.

Version 0.8.3
* Add API methods to get language, rate, pitch, and volume.
* A lot of code cleanup, and compatibility improvements.
* Removed all references to GNOME Speech, since it has long since been
  deprecated.
* Fix some inconsistancy in the SSIP API for voice type.
* The SET VOICE SSIP command is now deprecated, and will be removed in 0.9.
* The C library API now provides macro definitions for major, minor, and micro
  versions in libspeechd_versions.h.
* The libsndfile library is now a mandetory dependency to improve the user
  experience around sound icons.
* Fix a possible crash in the festival driver.
* Add a configuration option to the espeak driver to show voice variants in the
  voice list. This will remain until a proper variants retrieval API is added
  for compatible synthesizers.

Version 0.8.2
* Add convenience methods to the libspeech API to free module list and voice
  data structures.
* Add method to the libspeechd API to get the current output module, and
  update the documentation accordingly.
* The API is now licensed under the GNU Lesser General Public License v2.1
  or later.
* The spdconf configuration utility is now translatable.
* Fixed a bug where speech-dispatcher would fail to start if the user
  configuration directory existed but did not contain a config file.
* Install the spdconf desktop file.

Version 0.8.1
* User dictionaries support added to the IBMTTS driver
* Added a pico configuration file for use with the generic driver
* Better support for multi-arch enabled distros to facilitate the use of the
  i386 only IBMTTS driver being easily installable on an amd64 system
* Bug fixes, and documentation cleanup

Version 0.8
 * Python 3 compatibility of the Python bindings
 * User configuration, logs and runtime files are now stored in
   directories according to the XDG specification
 * Internationalization of spd-say and translations into Hungarian
   and Czech languages
 * Espeak output can now use libsonic for faster speech
 * Pico output module
 * Lots of bugfixes, cleanups and fine-tunnings

Version 0.7.1
 * Easy configuration of the client communication method using a
   single environment variable SPEECHD_ADDRESS.
 * Advanced autospawn -- server is autostarted only when its
   communication channel matches the communication channels requested
   by the client.  Local server is not started when client attempts to
   connect to a remote server.
 * Both libspeechd and python library now report a detailed error
   information in case of connection failure (why has connect failed,
   why was it not possible to autostart the server, what has the
   server reported etc.)  Clients can directly show this information
   to the user and the user doesn't have to search them in logfiles.
 * Improvements in memory usage
 * Cleanup of priorities of messages in logging output
 * Various bugfixes, cleanups and fine-tunnings

Version 0.7
 * Speech Dispatcher uses UNIX style sockets as default means of communication,
   thus avoiding the necessity to choose a numeric port and greatly easying
   session integration
 * Autospawn -- server is started automatically when a client requests it
   It can be forbidden in the appropriate server configuration file
   (thanks to Luke Yelavich)
 * Pulse Audio output reworked and fixed (thanks to Bill Cox and Rui Batista)
 * Dispatcher runs as user service (not system service) by default
   and doesn't require the previous presence of ~/.speech-dispatcher
   directory
 * All logging is now managed centrally, not by separate options
   (thanks to Luke Yelavich)
 * Graceful audio fallback (e.g. if pulse is not working, use Alsa...)
   (thanks to Luke Yelavich)
 * Audio output to different soundsystems through the
   libao library (thanks to Marco Skambraks)
 * Various bugfixes and fine-tunnings
 * Updated documentation

Version 0.6.7
 * Central settings for preferred audio output method
 * Dummy output module gives a pre-recorded message whenever
   no other output module works   
 * Possibility to switch on verbose logging over SSIP
   for easy debugging and bug-reporting from client applications
 * 'spd-conf' configuration, diagnostics and troubleshooting tool
 * Volume settings in Pulse Audio
 * Pulseaudio output now keeps connection to daemon open.
 * Punctuation mechanism in IBM TTS is now configurable
 * New generic output modules for Espeak with Mbrola
   and for Cepstral Swift.
 * Bugfixes

Version 0.6.6
 * Bugfixes (ALSA audio output, libspeechd connection
    failure handling and others)

Version 0.6.5
 * Pulse Audio output module (thanks to Gilles Casse)
 * Speech Dispatcher is now adapted for easy setup and using
   under ordinary system user accounts
 * Bugfixes

Version 0.6.4
 * Native output module for eSpeak (thanks to Lukas Loehrer)
 * Support for punctuation settings in the Generic output module
	(thanks to Steve Holmes)
 * Default audio output for all modules switched to ALSA
 * Support for listing output modules and voices supported by
   a synthesizer
 * Bug fixes (SMP related bugs, bugs in libspeechd and others)

Version 0.6.2
 * Bug fixes.
 * Generic output module for eSpeak includes definitions for all
   known languages.
 * Python interface now supports callbacks.

Version 0.6.1
 * Bug fixes
 * Generic output module support for the eSpeak synthesizer (free, GPL)
 * Output module for Cicero (french TTS, GPL but requires mbrola)
 * Output module for IBM TTS (non-free)
 * Revision and stabilization of the Python interface

Version 0.6
 * ALSA and experimental NAS sound output supported (apart from OSS)
 * SSIP implementation now supports events notification and index marking
 * Improved documentation
 * spd-say client functionality expanded (stopping, client name setting)
 * Better performance

Version 0.5
 * SSIP now supports SSML (Speech Synthesis Markup Language) messages.
 * Communication with Festival is highly improved.
 * Improved DTK Software Synthesis support.
 * Python interface library
 * Bugfixes

Version 0.4
 * Volume settings in the Generic output module.
 * The 16-bit voice for Flite is installed if available.
 * spd-say now accepts the most important speech parameters.
 * libspeechd now uses TCP_NODELAY to make the communication faster.
 * Bugfixes. 

Version 0.3
 * Volume setting commands in SSIP.
 * Package and binary renamed to speech-dispatcher.
 * Generic output module configuration file for DTK Software Synthesis.
   Thanks to Jacob Schmude.
 * Document with definition of SSIP is now separated.
 * Debugging.

Version 0.2
 * Improved documentation (definition of the SSIP
   protocol is now a separated document)
 * Caching of characters, keys and sound icons in the
   Festival output modules brings much quicker responses
   for these types of events.
 * If some output module fails to load completely (e.g. because
   it's unable to connect to the synthesizer), error is reported
   to Speech Dispatcher and written into the log file. (Sadly,
   this doesn't work with kernels that don't support real threading).
 * Necessary recoding in Festival output module is now retrieved
   from Festival itself.

Version 0.1
 * First official release
 * Improved documentation
 * We have abandoned the idea to do some text processing in Speech Dispatcher,
   it's all handled in the output modules
 * New scheme scripts so that Festival supports some of the SSIP commands.
 * Improvements in the C-library
 * Documentation in Czech.
 * Debugging, testing.

Version 0.0.10
 * Output modules are now external programs communicating through stdin/stdout
 * Output modules can be reloaded at run time sending SIGUSR1 to speechd
 * Multiple generic modules loaded at once supported
 * Filtering in output layer of Speech Dispatcher is now optional
   and can be handled later in output_modules or in the TTSs they use
 * Client specific configuration
 * Bug-fixes

Version 0.0.9
  * Generic output module (+definition for the Epos synthesiser)
  * Better autoconf configuration
  * Restructured documentation
  * Block support in SSIP
  * Daemon implementation
  * Better configuration
  * Capital letters recognition
  * Experimental support for ogg sound icons.
  * Bug-fixes

Version 0.0.8
  * Output modules reworked (now using a common mechanism)
  * New priority system (now using 5 priorities)
  * Improved documentation
  * Improved C API
  * Tables for czech language
  * run_test and new tests, sayfortune.sh (src/tests/)
  * Many bugs fixed
  * Renamed to Speech Dispatcher

Version 0.0.7
  * Support for sound-mapped icons (cstsnd output module)
  * Debian package support
  * Apollo output module
  * Experimental Python API
  * Tests in src/tests/
  * Improved PAUSE mechanism

Version 0.0.6
  * Speech Dispatcher now works in 2 threads for better performance
  * New output module for Flite (using Flite C API)
  * Added debug mode
  * Spelling, punctuation, CHAR and KEY commands
  * Heavily improved documentation of SSIP (thx Milan Zamazal)
  * Chages in SSIP
  * Emacspeak server
  * Python API

Version 0.0.5
  * Renamed back to Speech Dispatcher
  * Speech Dispatcher Center -- history and configuration client (first version)
	* command line / menu logic
	* browsing through clients
	* browsing through client's history
  	* stop/pause/resume functions
	* speech support
	* command line completion
  * Lower CPU usage
  * Sound icons support

Version 0.0.4
  * Automake and autoconf support
  * Robod now uses GLib2 instead of GDSL
  * More polished source
  * Improved configuration of server
  * More functions in the API.

Version 0.0.3
  * API for communication with Robod. 
  * New output module for flite.
  * History commands implemented.
  * Shared library API in Robodlib.so.

Version 0.0.2

  * API for output modules designed
  * sample output module implementation written
  * server configuration based on DotConf implemented
  * analysis of input protocol requirements documented

Version 0.0.1
        
  * Project started ...
  * Design documentation written (using DocBook XML)
  * pre API designed
  * simple server core and client example written
  * CVS repository and other project stuff set up


Copyright (C) 2002-2012 Brailcom, o.p.s
Copyright (C) 2002-2012 Brailcom, o.p.s
Copyright (C) 2018-2025 Samuel Thibault <samuel.thibault@ens-lyon.org>
Copyright (C) 2018 Florian Steinhardt <no.known.email@example.com>

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/>.
