speechd-el
Emacs speech and Braille output interface
Maintainer: Milan Zamazal <pdm@freebsoft.org>
About
speechd-el is an Emacs client to speech synthesizers, Braille displays and other
alternative output interfaces. It provides full speech and Braille output
environment for Emacs. It is aimed primarily at visually impaired users who
need non-visual communication with Emacs, but it can be used by anybody who
needs sophisticated speech or other kind of alternative output from Emacs.
speechd-el can make Emacs a completely speech and BrlTTY enabled application
suitable for visually impaired users or, depending on its configuration, it can
only speak in certain situations or when asked, to serve needs of any Emacs
user.
Design goals
speechd-el was designed considering our experience with other free accessibility
technologies. We sometimes meet problems such as lack of maintenance power,
duplicated efforts, making technology specific solutions instead of generally
useful tools, important bugs. As other Free(b)soft projects speechd-el attempts to
fill an empty space in the accessibility area and to do it in a way ready for
future. speechd-el tries to offer technology that is useful, simple, supporting
general accessibility architecture models and that effectively utilizes the
limited accessibility development resources.
The particular desired speechd-el features imposed by its design are:
- Providing advanced accessible user environment that works out of the box and utilizes standard Emacs features wherever possible.
- Implementing just the necessary functionality, without duplicating features presented in other components such as Speech Dispatcher, speech synthesizers or Braille APIs.
- Simple and clean source code that requires only minimal maintenance and allows future extensions.
- As little modifications to standard Emacs environment as possible, with the possibility to make additional customizations if needed, either shared or private.
- Ability to work well in a multilingual environment.
- Completely Free Software architecture, without requiring any proprietary component.
Features
Major speechd-el features:
- Braille display input/output.
- Both automated and explicit reading.
- Message priorities ensuring you don't miss important messages while you needn't listen to or view unimportant messages.
- "Intelligent" and customizable selection of text to be read based on lines, text properties and other criteria.
- Support for changing speech parameters (such as language, voice, rate, pitch, volume, speech synthesizer). Different speech parameters can be used in different buffers, major modes, faces, etc.
- Support for events (such as sound icons).
- Emacs status changes reporting (such as mode, keyboard, process changes, etc.).
- Multilingual environment support. speechd-el works well with languages other than English, support for language selection based on the kind of texts, selected keyboard, etc.
- Reasonable immediate speech and Braille output in most Emacs packages.
- Speech and Braille output can be enabled/disabled independently to each other, for the whole Emacs session or just for particular buffers.
- Speech synthesizer independence, you can use all speech synthesizers supported by Speech Dispatcher (such as Festival, Flite, eSpeak, Epos, Dectalk, IBM TTS, Cicero, etc.). Similarly, you can use all Braille displays supported by BrlTTY.
- Programming libraries for those who want to extend speechd-el facilities or who just want to talk to speech synthesizers, Braille display and other output/input devices.
- Special features for speechd-el developers such as silence in debugger, providing debugging variables, ability to completely disable speechd-el hooks, etc.
- Honoring the design criteria stated above.
speechd-el components
speechd-el design is strictly modular. It contains the following components:
- Low-level access Elisp libraries to the speech and Braille APIs: SSIP (the Speech Dispatcher communication protocol) and BrlAPI (BrlTTY access protocol). You can use them in your Elisp programs to access the speech output and Braille input/output directly. Or you can write such libraries for other devices if needed.
- Higher level Elisp library for common access to the alternative output devices. That library separates you from particular kinds of output (such as SSIP or BrlAPI) and you can output messages without caring about particular technologies actually selected and used by the user.
- User interface. This part makes Emacs speak or write to Braille display automatically.
There are some other auxiliary components, look into speechd-el source code if
interested.
Differences with Emacspeak
Emacspeak is another Emacs accessibility
technology, available before speechd-el was written. People sometimes ask about
differences between speechd-el and Emacspeak. Despite speechd-el and Emacspeak serve a
similar purpose, they are based on different principles, resulting in different
user and technical features. Some of the main differences are:
- speechd-el uses message priorities for more effective speech and Braille output and input, Emacspeak doesn't have such a mechanism.
- Both systems can speak Emacs faces in different voices. In speechd-el you customize the voice changes using Emacs options, in Emacspeak by using Aural CSS.
- Emacspeak contains a lot of specific custom behavior, speechd-el doesn't. We think such customizations may be useful but we don't want to impose them on users without being requested; instead we provide a general mechanism to add them.
- speechd-el changes standard Emacs behavior as little as possible (a user can work with Emacs the same way whether speechd-el is loaded or not), while Emacspeak redefines some command keys and other settings.
- speechd-el uses Speech Dispatcher for speech output, Emacspeak uses its own set of servers. Among other things, this implies that the sets of supported speech synthesizers are different.
- speechd-el works well with Festival (through Speech Dispatcher), the most advanced free speech synthesizer, without any special arrangements.
- speechd-el supports Braille output, Emacspeak doesn't.
- speechd-el contains support for using multiple languages.
- speechd-el tries to utilize general mechanisms so that it could output proper information wherever possible without any special customizations. Emacspeak is based more on particular customizations. For instance, in Dired mode both systems speak just a file name when moving over files instead of speaking the whole line; but while speechd-el does this without any piece of Dired support, Emacspeak implements this by special Dired support in its code (which means more code lines, more maintenance and more risk of bugs).
- speechd-el doesn't include any text-to-speech processing – as this functionality has nothing to do with Emacs it is left to other components such as speech synthesizers. Emacspeak makes some text-to-speech processing itself.
- Emacspeak includes additional general purpose packages (such as frontends to multimedia players), bound to Emacspeak features. speechd-el doesn't do that, we think such packages should be implemented independent of any speech technology.
- speechd-el source code is about ten times smaller than Emacspeak source code.
Note that we are not in agreement with the Emacspeak author on this list, so
you may want to look at both the projects to understand the differences better.
Future of speechd-el
We believe that a common free software accessibility solution, not specific to
a particular platform (such as Emacs), is needed in the long term. There are
promising projects such as AT-SPI,
Speech Dispatcher,
Festival and others that could
compose a common free software accessibility platform.
Unfortunately there is no such stable accessibility platform yet that could be
used as a complete accessible environment for visually impaired users now. In
this situation Emacs provides a good accessibility solution including a text
editor, Web browser, mail and news reader, Jabber and IRC, shell command line,
etc. So Emacs together with speechd-el, Speech Dispatcher and the Festival speech
synthesizer can provide usable accessible user environment right now.
For that reason we consider speechd-el an important tool now, serving as an
accessible Emacs user interface, demonstrating power of the Speech Dispatcher
concept and possibly being useful to non-handicapped users as well. That means
speechd-el has been being further developed and maintained, in parallel with the
work on further accessibility platform common to all applications including
Emacs.
Source code
Latest released version is 2.2.
The source tarball is available at /pub/projects/speechd-el.
The source code is managed using CVS. There are the following options to get the current
development version.
Anonymous CVS access (login with an empty password):
cvs -d :pserver:anonymous@cvs.freebsoft.org:/var/lib/cvs login
cvs -d :pserver:anonymous@cvs.freebsoft.org:/var/lib/cvs checkout speechd-el
Subscribe to the mailing-list
speechd-el-cvs@lists.freebsoft.org
for notifications about all CVS commits.
Documentation
Full documentation is available as a part of the project and is distributed
together with the source code.
if "/doc/speechd-el" ?>
You can browse the HTML version on-line.
/if ?>
Related software
- Emacs – the platform we run on.
- BrlTTY – Braille display drivers and API.
- Festival – the most advanced free speech synthesizer.
- Emacspeak – the other Emacs accessibility solution.
Contacts
If you have questions, suggestions or other things you would like to discuss
with us, you can contact us at the following places: