I've created a Google Group for package G-Client here:
Emacs-G-Client.
If you are using package G-Client you can use this
group to discuss your experiences with other users.
Note that the codebase for this package is evolving actively
under SVN at
lisp/g-client
.
Here is where I plan to Blog Emacspeak tricks and introduce new features as I implement them.
Wednesday, May 23, 2007
Google Group For Package G-Client
Saturday, May 19, 2007
An Essay On Eyes-Free Computing
I just posted an essay on eyes-free computing to my MathZomeblog. This essay highlights the relevance of ZomeTool in teaching mathematical concepts to students who are visually impaired. More generally, it describes my experiences as a mathematician who cannot see. I'm posting the abstract here; the complete essay can be found on my Web site.
The experiences described in this essay have influenced the software I have built and use on a daily basis; it should be of interest to:
- Emacspeak users wishing to understand why things look like the way they do in Emacspeak.
- Students with visual impairments who are entering the field of mathematics.
- Teachers working with visually impaired students.
- And the generally curious mathematician who wishes to view the world from a different perspective.
Abstract
This essay outlines some of my experiences as a mathematician
who cannot see. Note that I transitioned to being a Computer
Scientist during Graduate School. However I strongly believe in
the edict Once a mathematician, always a mathematician!
— my training in mathematics continues to influence the
way I think.
I've been unable to see since the age of 14, which means that
I've studied and practiced mathematics predominantly in an
eyes-free environment. This essay is my first conscious attempt
at asking the question What is involved in doing mathematics
when you cannot see?
I hope that some of the
experiences outlined here will prove insightful to
mathematicians at large. At its heart, mathematics is about
understanding the underlying structure inherent in a given area
of interest — and where no such structure exists — to
define the minimal structure that is needed to make forward
progress.
The general perception that mathematics might be hard to do in
an eyes-free environment probably traces itself to the common
view of mathematics as a field where one performs copious
calculations on paper. I'll illustrate some of the habits and
abilities one evolves over time to compensate for the lack of
ready access to scratch memory provided by pencil and
paper when working in an eyes-free environment. In this essay,
I hope to demonstrate that mathematics in its essence is
something far bigger. By being bigger than calculations on
paper
, not being able to see rarely if ever proves an
obstacle when it comes to doing mathematics; the challenges one
needs to overcome are primarily centered around gaining access
to mathematical material, and communicating ones insights with
fellow mathematicians. Thus, a large portion of this essay
focuses on solutions to the challenges inherent in mathematical
communication.
Wednesday, May 16, 2007
Updates To G-Client
If you use g-client within Emacspeak to access
Google Services, you might want to read
G-Client Updates.
Wednesday, May 09, 2007
Web 2.0 And The Emacspeak Audio Webtop
Blogging while at WWW 2007. I attended the W3C AC meeting the first two days of the week. The highlight for me from the AC (Advisory Committee meeting was a panel consisting of TimBL and Tim OReilly at the end of the day yesterday. It was fun to hear Tim OReilly define Web-2.0 --- he is credited with originally coining the term, but in the last year, Web 2.0 has often been lightly equated to dynamic Web applications that use JavaScript to the extent that many assume that anything that doesn't use JavaScript is not Web-2.0!
The gist of Tim O's definition of Web-2.0 was to point out that once the Web had gained sufficient coverage and scale, it became possible to build application services on this Web that drew their value from aggregating the data on the Web; his examples ranged from Google to Amazon. His comments were insightful --- my own view now is that Web-2.0 should have been called Web^2 i.e. this current revolution is about applying the power of the Web to itself.
The other amusing piece while running around at the conference and observing what everyone is working on is to realize that now that Web Gadgets and the like are popular, it's now considered a fine idea to write light-weight site-specific tools. Notice that Emacspeak has had this since the late 90's in the form of first the websearch module, to be later joined by url-templates. I believe these innovations arrived earlier on the Emacspeak Webtop as compared to the rest of the Web for the following reasons:
- Emacspeak relied on Emacs/W3 for Web functionality,and when that browser stopped being maintained, there was a strong need to develop Web tools in the context of Emacspeak.
- The visual Web was getting too complex for use via speech output, and given the flexibility of the Emacs environment, and the arrival of XSLT in 1999, things were well set up to build a powerful set of Web access wizards.
- Task-oriented Web tools in Emacspeak led to the conceptual Web Command Line in Emacspeak at a time when command-line interfaces were considered passe'.
Incidentally when I showed others working in the field of accessibility these Emacspeak tools during their early days, they were promptly dismissed as site-specific hacks that wouldn't scale in the face of generic screenreaders that would handle every web page. With the visual Web getting too busy for everyone mainstream users now have access to productivity solutions such as Apple's Dashboard Widgets, IGoogle modules that can be placed on a Web page or the desktop, and other comparable tools. It will be interesting to see how much longer blind users saddled with commercial screenreaders will have to wait before seeing similar tools emerge in their world --- just remember, when that does arrive, Emacspeak had them in 2000!
Thursday, May 03, 2007
Emacspeak 26.0 --- LeadDog Unleashed!
Emacspeak Inc (NASDOG: ESPK) announces the immediate world-wide availability of Emacspeak-26 --a powerful audio desktop for leveraging today's evolving data and service-oriented semantic Web.
Major Enhancements
- Added support for ESpeak -- a freely available TTS engine.
- Added support for Ocropus -- a freely available OCR engine.
- Updated Websearch tools.
- Updated URL templates to enhance the Web Command Line.
- Support for Google Services like Blogger via package G-Client.
- Updated productivity tools in the wizards package.
- Fully tested against the upcoming Emacs22.
- Better integration between W3 and W3M.
This release contains many user contributed patches including:
- ESpeak patches from the Oralux project.
- W3M patches from RDC.
You can visit Emacspeak at SourceForge. The latest development snapshot of Emacspeak is available via subversion from Google Code Hosting. You can subscribe to the emacspeak mailing list emacspeak@cs.vassar.edu by sending mail to the list request address emacspeak-request@cs.vassar.edu.
Tuesday, March 20, 2007
See You At CSUN 2007
After a gap of 7 years, I will once again attend CSUN in LA this year. This will also be Bubbles' first CSUN --- I attended CSUN 6 years in a row with Aster between 1994 and 1999. Anyway, if you're an Emacspeak user and are coming to CSUN this year, look for me at the Google booth. This is also Google's first year at CSUN; I will be there with other Googlers working on accessibility. I arrive Wed morning and leave early Friday morning --- look forward to seeing you there.
Friday, March 02, 2007
An Emacs Client For Google Services
1 An Emacs Interface To Google Services
Google offers a number of services using a Google account. Many
of these services also expose a Web API. this package provides a
set of Emacs modules for accessing these services from inside
Emacs. These modules are designed with an Emacs-centric, rather
than a Web-browser centered view of the world. Where necessary
Emacs package browse-url is used to invoke the Web browser of
choice.
The current distribution can be downloaded from Google Code Hosting and the source code is available via Subversion. Note that this is still work in progress. I'm releasing it as part of the Emacspeak project since I believe the package already has sufficiently useful functionality for users who spend a large amount of their time inside Emacs. There is no dependency on Emacspeak, and all clients provided here can be used without Emacspeak loaded.
1.1 Installation
These are needed only if installing package g-client
stand-alone, i.e. outside of Emacspeak.
-
Unpack the tar archive and place the resulting
g-clientdirectory on your emacsload-path. -
Type
maketo compile the code. -
In your .emacs, add
(load-library "g")to set it up.
1.2 How It Works
Clients are implemented using Google APIs based on Atom
Publishing Protocol APP and Google Data APIs (GData). We use curl
to retrieve content via HTTPS and xsltproc to transform the
retrieved content to browsable HTML.
Clients sign you in the first time you invoke commands that require authentication. Once signed in, the session cookie is cached for future use. Session cookies presently expire in 30 minutes, and clients check for expired cookies when authentication is needed. If the cookie has expired, clients retrieve a fresh cookie using the authentication credentials provided earlier. Note that authorization tokens etc are specific to a given service.
1.3 Top-level Customizations
All clients in this package use Emacs' customize interface to
set user preferences.
The most commonly used ones are enumerated below.
-
g-user-emailDefault email-id to use. Individual clients typically override this via user option<clientname>-user-email. -
g-html-handlerName of function that handles HTML content.
1.4 Google Blogger gblogger
This client implements posting, editting and deleting of blog
entries using the new Blogger API --- it replaces the now
obsolete atom-blogger that implemented similar functionality
using the old Blogger API. It uses value of customization option
g-user-email by default; this can be overridden via option
gblogger-user-email. See Blogger GData API for the underlying
APIs used. For editing posts, I recommend installing nxml-mode.
-
Browse Command
gblogger-blogbrings up the list of blogs owned by the currently authenticated user. -
Posting Command
gblogger-new-entrytakes a post URL and sets up a special buffer where you can compose your article. the post url is obtained from the feed of blogs above, use the post link for the blog to which you wish to post. -
Browsing Command
gblogger-atom-displaydisplays the atom feed for a specified blog as a browsable HTML page. In addition to reading your blog, this helps you find the edit url for individual posts. -
Editting Command
gblogger-edit-entrytakes the edit url of a previously posted entry. It retrieves the entry, and sets up a special composition buffer where you can edit the entry. -
Submitting The special composition buffer created by
commands
gblogger-new-entryandgblogger-edit-entryprovide a special commandgblogger-publish(bound toC-c C-c) that submits the entry to blogger. -
Deleting Command
gblogger-delete-entrydeletes an entry specified by its edit url.
1.5 Google Calendar gcal
This client can be used to view, add or delete events from the
Google Calendar for the authenticated user. It uses value of
customization option g-user-email by default; this can be
overridden via option gcal-user-email. Commands that display
calendar items optionally accept the feed url of the calendar to
view; this can be used to view calendars to which the
authenticated user has read access. See GData Calendar API for
the underlying APIs used.
-
View Command
gcal-calendar-agendadisplays the default calendar for the authenticated user. A prefix arg prompts for the calendar to display. This command is best used from inside the Emacs calendar; in this case, it uses the date under point when showing the agenda. -
Add Command
gcal-add-eventprompts for event details and adds it to the calendar. -
Accept Command
gcal-accept-eventaccepts an event. Event is specified using the edit url of the event. -
Delete Command
gcal-delete-eventdeletes an event. Event is specified using the edit url of the event.
1.6 Google Reader greader
This client allows the authenticated user to read, browse and
subscribe/unsubscribe to feeds.
It uses value of customization option g-user-email by
default; this can be overridden via option g-user-email.
-
Reading Command
greader-reading-listdisplays the reading list (river of news). -
Browsing Command
greader-feed-listdisplays a browsable Web page with pointers to subscribed feeds. -
Finding Command
greader-find-feedssearches for matching feeds to subscribe. -
Subscribing Commands
greader-subscribe-feedandgreader-unsubscribe-feedare used to subscribe and unsubscribe. -
Labeling Command
greader-starandgreader-add-labelare used to label articles. -
Reading Starred articles can be read by
providing a prefix argument to command
greader-reading-list. Thus, C-u M-x greader-reading-list will prompt for the specific set of articles to retrieve.
Author: T.V Raman <raman@cs.cornell.edu>>
Date: 2007/03/02 10:36:07
Monday, February 12, 2007
Emacspeak Downloads On GoogleCode
I've now made all Emacspeak releases available from the download area on Googlecode. Going forward, all Emacspeak releases will be made at the GoogleCode site --- not SourceForge. This is because uploading code to GoogleCode is significantly easier than making releases on SourceForge.
But even more importantly, once uploaded, grabbing a release from GoogleCode is significantly easier than on SourceForge's release mechanisms. You can always find a link to the latest releases from Emacspeak on GoogleCode by starting from the Emacspeak GoogleCode page. Follow the link labeled Featured Downloads to download the newest release. I've also made all past releases from the download area --- follow the link labeled downloads on the Emacspeak GoogleCode page.
Here is a brief summary of why I chose to start making releases on GoogleCode, it can be viewed as a short summary of the positives in making the switch.
- GoogleCode makes it possible to create download URLs that
can be bookmarked.
No more clicking through multiple pages before getting to the
file you want, you can simply point
wget,curlor your favorite download tool at a meaningful URL. For instance, here is a pointer to Emacspeak 25 release. - The above is more than a convenience --- it's in line with good Web architecture. I've been looking for an alternative to SourceForge ever since that site decided to turn meaningful download URLs from the past into obfuscated pointers into their content management system; this left me with a feeling of having created Open Source Software only to have it locked away in someone else's vault with no easy mechanism for end-users to retrieve what had been released as free software.
Share And Enjoy --- and let's hope we never have download sites that say Glad to be of service as they close behind you with a sigh of a job well done.
Friday, December 22, 2006
IBM Software TTS On Ubuntu 6
I had earlier reported the IBM TTS engine segfaulting on my home Ubuntu 6 machine; I'm still to fix that problem. Surprizingly though, I tried it on a different Ubuntu 6 machine, and there, installing
sudo apt-get install libstdc++2.10-glibc2.2on top of the regular Ubuntu install was enough to get the TTS working. The segfault on my home machine occurs inside libc, and as best I can tell the two machines have identical libc installs. So on the positive front, it's only my home machine that appears broken; on the negative side, the fact that the breakage is hard to explain and hence fix doesn't inspire confidence in upgrading. Others have reported not having any problems on Edgy -- so the problem is hopefully transitory.
Thursday, December 14, 2006
Web Command Line Tool For Google Patent Search
From the every new Google search tool gets a corresponding Emacspeak wizard dept:
Google just introduced Patent Search an easy to use search interface for US patents. In the spirit of the Web Command Line, Emacspeak now sports a Patent Search From Google smart URL like other smart URLs on the Emacspeak Audio Desktop, this places executing patent searches just a few keystrokes away. To use this new wizard, do the following:
- Update your working copy of Emacspeak from SVN. The patent search wizard will be part of the next official Emacspeak release slated for May 2007.
- Invoke the Smart URL tool by pressing
C-e u - Type the first few characters of the phrase
patent search from Googleand hittabto complete the name of the smart URL. - Hit enter, specify what you're searching for and hit enter again.
happy inventing ---
Friday, November 24, 2006
Emacspeak 25.0 (ActiveDog) Unleashed
I released Emacspeak 25.0 (ActiveDog) yesterday. Here are the release notes.
While trying to release it on Sourceforge I ran into a couple
of show-stoppers --- first off the SourceForge download mechanism
has changed yet again and it's now gotten sufficiently
convoluted that software released via SourceForge's file release
system is becoming well-nigh impossible to download except for
the most motivated user. Worse, as I released the file, upload
services on SourceForge hung, with a consequence that it created
a 0 sized emacspeak-25.tar.bz2 file --- the
SourceForge mechanism made it well-nigh impossible to clean up
the 0-sized file.
Given this mess, I decided to keep things simple by placing the release on the Emacspeak site directly -- this suffers from the disadvantage of the release not getting mirrored on the various Sourceforge download archives; it has the advantage of allowing users to grab the release with one click.
The other thing to note about this release is that there are
no RPMs built --- a first in 7 years. I've now switched to
Ubuntu on my home machine and dont have the ability to build RPMs
so I'll leave this to individual distributions. I've also not
built Debian packages this time around, mostly because I've not
gotten around to understanding Debian's packaging system
sufficiently well to do this. Moreover I prefer minimalistic
packaging solutions --- and in general though Debian's packaging
is nice, it still feels a little too heavy-weight for something
like the Emacspeak source tarball which needs a simple
make; sudo make install to get set up.
So for now, I'll rely on folks like Jim Van Zandt to build
downstream Debian
packages for incorporating with the various distributions like
Debian and Ubuntu --- this way, packages can be built to match
particular distributions.
Thursday, October 05, 2006
Emacspeak Smart URL For Google Code Search
Every useful Web tool deserves a Web short-cut. Google just announced a new service called Code Search that lets you search the codebases of Open Source projects. It's a great way of finding source code relevant to ones programming projects.
I just checked in a corresponding URL Template
--- as a reminder, url templates in Emacspeak are
smart URLs that provide web short-cuts to create a
conceptual Smart Web Command Line.
To use:
- Invoke the
url templatetool via the default key-bindingC-e u. - Select the
Code Search Via Googletool by typingcodand pressing thetabkey. - Specify the search query --- see the Google Code Search help instructions for the types of queries that are allowed.
Thursday, September 28, 2006
Using Helix Player From Emacspeak
In the spirit of You can never have sufficiently many
media players
, I now have Helix Player working under
Emacspeak i.e.,
I can now run Helix Player without having to start up X. This is
useful because there are still media streams on the Web that
sometimes fail with mplayer, and from the minimal
testing I've done so far, Helix Player is successful in those
cases.
What Is It?
HelixPlayer --- installable on modern Linux
distributions as hxplay from package
HelixPlayer is the community-supported version of
RealPlayer 10. The well-distributed and documented client,
hxplay
is capable of playing a wide variety of audio and video formats
over HTTP and RTSP/RTP, and specifically, can handle RealPlayer10
formats which includes support for 5.1 audio.
A lesser known set of tools available from Helix ---
Helix DNA Client is a bare-bones UI-less player which can be
used effectively at the shell. You can download pre-built
binaries for your flavor of Linux (GCC3.2 or later vs GCC 2.95
based systems)
note that these are
nightly builds. You can also download a source zip archive. Note
that all of these requires you to accept a
End Users License Agreement (EULA)
before being taken to the download link.
The links on the page above can be confusing; Here are pointers to the specific packages you need to grab if you want a player that has all of the functionality described above.
Using The Binary Distribution
Here is what I did you set up the binary distribution on my Ubuntu 6.0.6 (Dapper) machine
- Unpacked binary
package
under
/usr/lib. - Created a symlink
/usr/lib/splayto point to the directory created by unpacking the binary package. - Created the following shell script
/usr/bin/hsplayto launch the player:#!/bin/sh #Use Simple Helix Player: # SPLAY_LIB=/usr/lib/splay export HELIX_LIBS=$SPLAY_LIB exec /usr/bin/aoss $SPLAY_LIB/splay -iss -s "$@"
- The above script assumes you have the
alsa-osspackage nstalled; you will need this to have Helix Player use ALSA --- something that is essential if you want to be able to use your sound card with other applications while playing media streams.
With this setup, you can launch one or more media streams
(both local, as well as remote HTTP/RTSP/RTP streams)
from a shell.
This player successfully plays the BBC Radio4 LW
stream, something mplayer
fails to play on my Ubuntu box.
Tuesday, September 12, 2006
Emacspeak, Ubuntu And Software Dectalk
On the positive side with respect to software synthesis, the
Software Dectalk does
work out of the box on Ubuntu --- out of the box that
is if you first install alsa-oss the ALSA->OSS
compatibility layer.
I've updated the Emacspeak speech server for Software Dectalk to
use alsa-oss where available; performance is not as
responsive as the Emacspeak Viavoice server using the native ALSA
APIs, but it's a good backup option.
Monday, September 11, 2006
Emacspeak 24 On Ubuntu 6
I upgraded my home FC3 machine to Ubuntu 6.0.6 (Dapper) over the weekend. Here is a short summary for things to watch out for as an emacspeak user.
The Good, The Bad, And The Painful
- Good
- One of my friends helped with the install and it is remarkably quick when everything works (in my case the Ubuntu LTS 6.0.6 installer had trouble with the NVidea display card and came up correctly at the third attempt).
- Bad
- A one CD install is nice -- but after it you have remarkably
little installed from the perspective of an emacspeak user. You
end up with a very nice GUI but very little else --- the
reasoning being that the average user wont need much more, and
the savvy user can always run
apt-get. - Bad
- Worse, Ubuntu does not install
openssh-server--- it limits itself to installingopenssh-client. This means that you cannot bootstrap yourself by logging in from another machine until you installopenssh-serveroff the network. If there was one thing I would ask the Ubuntu maintainers, it would be to rectify this situation. - Painful
- In my case, the
aptsuite of tools appeared to have a problem --- they died saying/var/lib/dpkg/available: no such file or directory. Googling showed this to be a known problem withaptand the fix is to rundselect update-- but if you're new to Debian/ubuntu, this is less than obvious. - Good
- Once you overcome the above,
apt-getgot me emacspeak-17.0 which was sufficient to let me bootstrap the rest of the process on my own using my trusted Dectalk Express to produce speech. - Painful
- Note that you should install
tcl8.3andtclx8.3--- rather than the newest (8.4) versions of these packages. This is because as of 8.4, the maintainers of those packages no longer build a stand-alonetcl(extended TCL) shell. This is something that will have to be handled by Emacspeak in the future. - Good
- I was able to get everything I needed (and more) installed
using a combination of
apt-getandaptitude. - Bad
- The IBM TTS engine no longer works --- under FC3 and friends,
you needed to install package
libstdc++-compatto get it to work. Well, there is no corresponding package for Ubuntu/Debian from what I could find out, and pulling in the RPM forlibstdc++-compat, converting it viaalienand installing the result produces a segfault when you run the TTS engine. - Bad
- For the same reason, the old command-line
trplayerwill also not work on Ubuntu 6.0. This is not as painful --- since mplayer works --- though I had to buildmplayerfrom source. It would be nice to create a command-line player on top of the HelixPlayer code base. At present, the missingtrplayermeans that theetc/rivo.plprovided by emacspeak no longer works. You can usemplayerto convertrealaudioto mp3; howevermplayerdoes not have a command-line option to specify the duration of playback, something that scriptetc/rivo.plneeds.
Thursday, September 07, 2006
Google Archive News Search
To mark the arrival of Google News Archive search, I checked
in a Archive News Search
url-template yesterday morning. To use it, hit
C-e u followed by arc tab and specify
your search term.
The above is checked into the SVN repository at Emacspeak GoogleCode.
Friday, August 25, 2006
Update: Emacspeak On Google Code Hosting
The initial experiment of moving emacspeak development to Subversion at Google Code Hosting has been largely successful. After a few bumps along the road, mostly a consequence of my being new to SVN, things are looking good, and I have stopped updating the CVS repository on SourceForge.
Some additional goodies as a consequence of the move to SVN:
- SVN Tags contains snapshots of prior releases.
- Future releases will come with an SVN Revision number that allows one to reliably recreate a released version.
Sunday, August 13, 2006
Emacspeak Codebase Via Subversion From GoogleCode
I've checked in the Emacspeak codebase into the Subversion repository provided by Google Project Hosting . The project page is Emacspeak at GoogleCode. You can find Emacspeak --- complete with its code history going back to the point where I started using CVS at Emacspeak SVN Repository.
For now, the Emacspeak Web site will continue to live at Sourceforge; The Emacspeak mailing list will continue to live at Vassar as before. To checkout the code from SVN, follow the instructions on Emacspeak SVN. If you run into any hitches in checking out the code, please report it on the Emacspeak mailing list. Note that you can anonymous checkout the code from the above location entirely from the shell command-line without ever having to point a browser at anything.
Emacspeak users presently running out of SourceForge CVS might want to do an SVN checkout in a separate directory and make sure things work, in preparation for a permanent switch-over to svn. Here are the minimal steps you need to perform:
svn checkout http://emacspeak.googlecode.com/svn/trunk/ emacspeak- The above will create a directory called
emacspeakwith the code under it; obviously, you should do this somewhere different from where you have your current copy of emacspeak. - For now, I recommend renaming the directory created in the
above step to
svn-emacspeakso that you can easily tell which snapshot you're looking at.
Note that reading these is not a replacement for learning about SVN --- there is an excellent on-line book available at SVN Manual.
Thursday, August 10, 2006
Zipping Through Web Pages
Zipping Through Web Pages With Emacspeak/W3
I just added an experimental zip through Web pages
shortcut to emacspeak-w3.
The command is called emacspeak-w3-speak-next-block
and is bound to z in all W3 buffers.
It is useful for quickly moving through Web pages that have
logically separate content units in separate blocks
where a block is one of:
- HTML
div. - HTML tables.
- HTML
pelements.
In general this provides an effective means of skimming many large Web pages.
Sunday, July 23, 2006
Summary Of Emacspeak Features Compared To Other Alternatives
Introduction
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.
1 Emacspeak And Speechdel -*- mode:org -*-
1.1 Background
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.
1.2 Speech Dispatcher (SpeechD)
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.
1.3 Emacspeak Features Not Found In SpeechDel
-
Emacspeak implements Aural CSS ACSS, and uses it to provides
the aural analog of
font-lock. - Emacspeak provides pronunciation dictionaries. Pronunciations can be defined on a per-mode, per-buffer or per-directory basis. Directory and mode specific pronunciations are persisted across sessions. This allows Emacspeak to leverage Emacs' intelligence about the semantics of a given application; thus, you can have it say "p arrow x" for "p->x" when editing C code. Per-directory pronunciations are useful for reading electronic books. Per-buffer pronunciations are useful for succinctly speaking long lines of shell output e.g. when compiling complex software.
-
By advising core Emacs functionality, Emacs modes work out
of the box with Emacspeak. But in most cases, Emacspeak goes
one step further by providing light-weight speech-modules
that specialize spoken output for a given mode. As an
example, advising next-line to speak the current line is
sufficient to use
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. - Emacspeak comes with many "Emacs Applets" for performing tasks that most users would perform outside of Emacs. Examples include playing CDs, playing multimedia streams etc. Fortunately, I have not had to write too many of these since there are always Emacs users other than myself who also create such Emacs applications --- so where Emacs applications already exist, I merely speech-enable them with a small set of advice definitions, and in some cases add a few additional interactive commands.
-
Emacs applications are plentiful for most tasks; one
exception is the Web. Since emacs/w3 development was
abandoned sometime around 1998, I have added significant Web
interaction functionality to Emacspeak using Emacs/W3 as the
basis. Today, a lot of this has also been ported to
Emacs/W3M thanks to other enthusiasts on the Emacspeak
mailing list. Examples include:
- WebSearch module --- prompts for query and processes response to focus on the results.
- XSLT pre-processing: Allows pre-processing of complex pages before rendering via W3. Used to enable smart screen-scrapers using XPath.
-
URL-Tempaltes: Originally motivated by
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".
-
Customization via Custom, including additional
keymaps. Comes with additional keymap files for the Linux
console to enable
hyper,super, andaltprefix keymaps. - Module emacspeak-wizards iplements a large collection of Emacs wizards that enable common tasks that you would otherwise perform at the shell e.g., checking display status on a laptop. The additional prefix keymaps come in handy!
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.
Author: TV Raman <raman@users.sf.net>