I've received a number of queries asking about the differences between Emacspeak and Speechdel ---especially given some of the somewhat confusing assertions made in recent Speechdel release announcements. I'm posting this article in the hope of clearing up some of this confusion.
Emacspeak speech-enables Emacs by advising core emacs functionality. Speech services are provided by a simple Emacspeak speech-server. Additionally, Emacspeak implements speech-extensions for popular emacs modules --- see the speech-enabled applications list.
Emacspeak was first released in 1995, and then (as now), there was limited speech access to the Linux GUI. Therefore, to be useful as a complete access solution, Emacspeak has always needed to enable the user to do everything from within Emacs, not just regular editing operations. As a case in point, emacspeak users are probably one of the last remaining communities that use Emacs for browsing the Web.
The idea of SpeechD --- peech Dispatcher as an intermediate layer between speech clients and TTS engines was first floated sometime in the late 90's. Such a common layer is a laudible goal but is something that takes time and effort to get right. Additionally, you have the challenge of geting existing software e.g., emacspeak, to abandon their own speech abstraction and re-implement against a supposedly more generic, but completely untested and untried intermediate layer.
The developers of SpeechD initially incorporated some of the Emacspeak code into an Emacs wrapper (speechdel) that called SpeechD, but later decided to go their own way -- and present speechdel is the result.
Like Emacspeak, speechdel uses Emacs Lisp's advice facility to add spoken feedback to core editing commands; speech output is produced by calling out to speech-dispatcher.
The summary of feature differences between Emacspeak and speechdel in the next section is from examining the speechdel code-base; I have not run speechdel since its dependency chain resulting from speechd was difficult to resolve on my FC3 64bit machine.
font-lock
.
dired-mode
--- but having to listen to
the entire line of dired output is not a pleasant
experience. The dired-specific module in Emacspeak advises
all interactive dired commands to speak the "right"
information. As an another example, GUD interaction
automatically speaks the line of source-code without leaving
the Gud buffer.
webjump.el
, this
provides url templates that enable easy access to a
variety of Web tasks rangig from looking up flight times
to listening to your favorite NPR or BBc show. Think early
cut at a "Web Command Line in the minibuffer".
hyper
, super
, and alt
prefix
keymaps.
byte-compile-dynamic
set to
=T= and individual application-specific modules are kept
completely independent of one another. Given the size of the
Emacspeak codebase, this is a pre-requisite for both efficiency
and developer sanity.