Welcome to Linux Support and Sun Help
Search LinuxSupport
The Linux Emacspeak HOWTO: Introduction Next Previous Contents

1. Introduction

Emacspeak is an Emacs subsystem that allows the user to get feedback using synthesized speech.

Screen reading programs allow a visually impaired user to get feedback using synthesized speech. Such programs have been commercially available for well over a decade. Most of them run on PC's under DOS, and there are now a few screen-readers for the Windows platform. However, screen-readers for the UNIX environment have been conspicuous in their absence.

This means that most visually impaired computer users face the additional handicap of being DOS-impaired :-)

Emacspeak is an emacs subsystem that provides basic speech access. Emacspeak will always have the shortcoming that it will only work under Emacs. This said, there is very little that cannot be done inside Emacs, so it's not a real shortcoming:-) Within Emacs, you can open a "shell window" where you can run commands and examine their output, even output which has scrolled out of the window. Emacs provides special modes for running certain commands. For example, it can parse error messages printed by a compiler and open a separate edit window with the cursor at the point of the error. It can also run a debugger and keep a separate edit window open at the point in the source code corresponding to the program counter.

Emacspeak does have a significant advantage: since it runs inside Emacs, a structure-sensitive, fully customizable editor, Emacspeak often has more context-specific information about what it is speaking than its commercial counterparts. In this sense, Emacspeak is not a "screenreader", it is a subsystem that produces speech output. A traditional screen-reader speaks the content of the screen, leaving it to the user to interpret the visually laid-out information. Emacspeak, on the other hand, treats speech as a first-class output mode; it speaks the information in a manner that is easy to comprehend when listening.

This initial version provides a basic speech subsystem for Emacs; using Emacs' power and flexibility, it has proven straightforward to add modules that customize how things are spoken, e.g. depending on the major/minor mode of a given buffer. Note that the basic speech functionality provided by Emacspeak is sufficient to use most Emacs packages effectively; adding package-specific customizations makes the interaction much smoother. This is because package-specific extensions can take advantage of the current context.

Emacspeak will only work with emacs. However, emacs can be used to run any program that has a command-line interface (ls, cd, rm, adduser, etc.). In general use M-x shell to run such programs.

You can even run those like less or lynx which use escape sequences to control the appearance of the screen. The key to this is term mode, which you get with the emacs command M-x term.

Let me insert here some explanation, because the word "terminal" is used in several senses. The original terminal was of course an electromechanical device that translated keystrokes into character codes and received the same codes and printed the characters. Eventually these were replaced by entirely electronic "dumb terminals" which also implemented escape sequences to clear the screen, move the cursor, etc. Unix adapted to these by introducing an abstract notion of a "terminal" with very general capabilities. A program like a text editor issues generic commands, which are translated into the commands suitable for your terminal. The choice of translation is controlled by the variable "TERM" in the environment. One common value for this variable is "vt100", since many terminals implement the same commands as the DEC VT100. The Emacs command `M-x term' starts a virtual terminal with its own set of cursor commands. It notifies the operating system of this by setting the environment variable "TERM" to the value "eterm" (which is why it is sometimes called eterm mode).

Note that this Unix "terminal" is concerned only with escape commands for the display. Let me just mention a couple of other kinds of "terminal" to distinguish them from the Unix concept: For DOS, there are "terminal emulators" like COMMO and TELIX that simulate a terminal, and can be used to connect to a remote computer via a serial port (and usually a modem). That is, they accept keystrokes and send the character codes out a serial port, and receive character codes from the serial port and display them. Unix has similar programs, such as minicom and seyon. Both DOS and Unix have another program called "telnet" which can establish a similar connection to a separate computer using the Internet (that is, a TCP/IP connection rather than a serial connection). The program "kermit" is available for both DOS and Unix, and can establish either kind of connection. However, none of these should be confused with the eterm mode of emacs. There is nothing about eterm mode that implies a connection to a remote computer.

Note that in most cases there is an emacs mode that works better than the separate program in an eterm buffer. That is, instead of "less", just open a buffer on the file. Instead of "lynx", use w3. Instead of "man", use `M-x man', and type the name of the program in the minibuffer.

Remember, though: ordinary command-line oriented programs are best run in shell mode, which starts with the command `M-x shell'.

Emacs is a large program, but it does not all have to be in RAM, because Linux has virtual memory. You can designate a swap partition, so that programs (or parts of programs) can be swapped out when they are not being used. You can comfortably run emacs with 8 MB of ram plus 8 MB of swap space.

This document is limited to the following:

The use of adaptive technology with Linux, and in particular, using adaptive technology to make Linux accessible to those who could not use it otherwise, is covered in the Linux Access HOWTO.

If you would like to help extend this document to cover one or more of the other alternatives, or point me to a discussion somewhere else, please contact me.

The most recent version of this document should be available in several formats at ftp://metalab.unc.edu/pub/Linux/docs/HOWTO/ and its mirrors (see below). The plain text version should be available at ftp://leb.net/pub/blinux/doc/.

Emacspeak was written by T. V. Raman raman@adobe.com. Emacspeak has a Web page at http://www.cs.cornell.edu/Info/People/raman/emacspeak/emacspeak.html.

Emacspeak supports several speech synthesizers. The software required depends on which you have.

If you have a DECtalk Express or MultiVoice, you need the basic Emacspeak package, tcl (an interpreter), and tclx (extensions for tcl). You can get the source package for Emacspeak from the Emacspeak web page, or a binary package in one of the popular distributions of Linux (Slackware, Red Hat, or Debian). I build each of these packages. Since I normally run Debian, the Debian package will be available a little sooner than the others. At this writing, the most recent release of Emacspeak is version 7.0. Here are some URLs:

http://leb.net/pub/blinux/emacspeak/cornell.mirror ftp://leb.net/pub/blinux/emacspeak/blinux/emacspeak-6.0-2.i386.rpm

Note: there are European mirrors of the blinux site which you should use if they closer:

ftp://ftp.uni-muenster.de/share/public6/ ftp://ftp.gwdg.de/pub/linux/misc/blinux/

For the internal DECtalk PC, you also need a kernel driver which is available from ftp://leb.net/pub/blinux/dectalk_pc-0.91.tgz

Extract it with the command: `tar xfz dectalk_pc-0.91.tgz' and then follow the installation instructions found in the README file. This driver apparently works with both the original DECTALK-pc and the new DECTALK-PC II.

For the external DoubleTalk, LiteTalk, Accent, or Apollo synthesizers, or for the Braille 'n Speak, Type 'n Speak, or Braille Lite devices in "speech box" mode, you need the Emacspeak package and a separate "speech server" which comes in the emacspeak-ss package:

ftp://leb.net/pub/blinux/emacspeak/blinux/emacspeak-ss-0.5.tar.gz
The DoubleTalk and LiteTalk are also supported by a separate speech server which has been packaged for Red Hat and Debian systems:
http://www.mv.com/ipusers/vanzandt/emacspeak-dt-tcl-1.2.tar.gz ftp://leb.net/pub/blinux/emacspeak/blinux/emacspeak-dt-1.2-1.i386.rpm http://www.mv.com/ipusers/vanzandt/emacspeak-dt_0.27-1_i386.deb http://www.mv.com/ipusers/vanzandt/emacspeak-dt-tcl_1.2-1_all.deb

For the internal DoubleTalk, you need three pieces of software: the basic Emacspeak package, the emacspeak-ss or emacspeak-dt package, and a device driver. Here are some URLs for the device driver:

ftp://leb.net/pub/blinux/emacspeak/blinux/dtlk-1.12.tar.gz http://www.mv.com/ipusers/vanzandt/dtlk-1.12.tar.gz http://www.mv.com/ipusers/vanzandt/dtlk_1.12-1_i386.deb

There is a server for the Braille 'n Speak, Braille Lite, and Type 'n Speak devices used in "speech box" mode:

ftp://leb.net/pub/blinux/emacspeak/blinux/emacspeak-bs-tcl-1.2.tar.gz ftp://leb.net/pub/blinux/emacspeak/blinux/emacspeak-bs-tcl_1.2-1_all.deb ftp://leb.net/pub/blinux/emacspeak/blinux/emacspeak-bs-1.2-1.i386.rpm
Once again, the emacspeak-ss server handles all the synthesizers other than the DECtalk. You should use that one if you don't mind building and installing a source package.

Computer hardware, Unix user commands, Unix system administration, Emacs, and Emacspeak are each substantial subjects. Attempting to learn all of them at once is likely to lead to frustration. Instead, I suggest that the new user go through a sequence of stages, learning about only one system at a time.


Next Previous Contents
Valid HTML 4.01! Valid CSS!