Emacspeak for Blind Users
Slackware Linux includes two methods of creating a blind-accessible
distribution: the Speakup.s kernel and
emacspeak.
The Speakup.s kernel is configured to work with hardware
speech-synthesizers which connect to a non-sighted user's computer
and "speaks" whatever is sent to standard out.
Not all non-sighted users have access to hardware
speech-synthesizers and even those that do might find it cumbersome
to carry one along with their laptop every time they go out. To
account for this, Emacspeak was
developed, by a non-sighted programmer, to create audio output from normal
interactions in Emacs. Since
Emacs is so extensible and has modes for
shell access, office work, email, web browsing, file management, and
so much more, it can act as the primary UI for the rest of the OS.
Prerequisites
Before you install Emacspeak, you should
(obviously) first have installed
Emacs. If you excluded this from your
initial install, then add it with
slackpkg or
pkgtool (it can be found in application
set "e").
You should also have at least one user (not including root) on the
system, and this user should be a member of the audio group.
Installing Emacspeak
Emacspeak can be installed over the
network with slackpkg. See for more information.
darkstar:~# slackpkg install emacspeak
You can also install it from the install media using
pkgtool or
installpkg. Emacspeak
can be found in the /extra directory on the
disc.
Once Emacspeak has been installed, it
needs to be configured, but you can test that it has been installed
by simply typing emacspeak at a shell
prompt. Emacs will start and return some
errors in the minibuffer; this is expected, since we have yet to
configure the backend for sound.
To exit emacs, type
control-x control-c.
Configuring Emacspeak
In order for emacspeak to produce sound,
your system requires speech synthesizer software. As of this
writing, flite is the most actively
maintained and most reliable free speech synthesizer for
Linux. While it does not ship with Slackware, it can be obtained
as an RPM package from LINK HERE
Use rpm2tgz to convert the RPM package to
a Slackware Package, and install using
installpkg as discussed in .
You can test flite once it has been
installed with the command flite -t
foo. You should hear
flite speak "foo". If you do not,
then either flite has not been installed
correctly, or your computer's sound is not working or is
muted. Check alsamixer to adjust the
levels of your speakers, use lsmod to
find out if your computer speakers are being recognized at all, and
which flite to ensure that
flite actually got installed.
With flite and
emacspeak confirmed, your system now has
both the user interface and the speech synthesizer to vocalize input
and output. The final component necessary is a speech server to
bridge these two separate parts. The speech server that has been
developed for flite is
eflite, and is available directly from
its homepage at eflite.sourceforge.net.
To build eflite from source code:
darkstar:~$ tar -xf eflite*gz && cd eflite*
darkstar:~$ make
darkstar:~$ make test
The test should play a voice confirming that eflite is working
properly. If you hear nothing, do not install
eflite until you diagnose and repair the
problem.
Assuming all goes well, install eflite:
darkstar:~$ su -c 'make install'
An environment variable needs to be established so that
emacspeak knows what speech server to
use:
darkstar:~$ echo
"DTK_PROGRAM=/usr/local/bin/eflite" >> ~/.bash_profile
darkstar:~$ echo "export DTK_PROGRAM"
>> ~/.bash_profile
darkstar~:$ source ~/.bash_profile
Launch emacspeak and you will find that
every interaction is narrated.
Usability Hacks
Strictly speaking, the emacspeak system
is now fully configured. However, there are two useful modifications
that should be made to help usability. As it is now, when the system
boots, it runs through the usual init sequence and stops silently at
a login prompt waiting for the user to enter their
information. Obviously a silent prompt is meaningless to a
non-sighted user.
To create an audible login prompt, modify a startup script such that
some command is initiated at the end of the boot sequence. The final
script to be executed during the normal init sequence is
/etc/rc.d/rc.local, so modify it as root:
darkstar:~# echo 'exec
/usr/bin/flite -t "please log in."' >>
/etc/rc.d/rc.local
Now the non-sighted user will know when it is time to log in to
the computer, but immediately after logging in the same problem
exists: the user is given a silent shell prompt without any
confirmation that their login was successful or that the computer
awaits their next command.
Probably the most sensible way to deal with this problem is to have
emacspeak automatically launch after a
successful login; this provides audio cues that the login was
successful as well as eliminating the redundancy of manually
launching emacspeak every time the user
logs into the system.
darkstar:~$ echo 'exec
/usr/bin/emacspeak' >> ~/.bash_profile
Reboot and test the new configuration; not only should the user be
audibly prompted to login, but immediately after login
emacspeak should launch. In fact, any new
shell that the user creates will launch an instance of
emacspeak.
Combined with the inherent power of GNU emacs
and the addition of all of its extensions such as the
w3m web browser,
eshell console,
wl email client,
org-mode organizer,
dired file manager,
emms multimedia player, a non-sighted user
has a robust, stable, and powerful Slackware Linux system.