NOTE: The information in this document may by no means be entirely correct. If you feel that something needs correcting, please do so.
Speakup Project Page: http://www.linux-speakup.org
Speakup is a program that reads the text console, and sends what it reads to a speech synthesizer. It is in fact a kernel patch that is applied against any 2.4 or 2.6 kernel, and can be either a module, or compiled into the kernel. When it is in the kernel, it starts reading as soon as it loads, which is very early in the kernel load process.
For this reason, the speech synthesizer drivers are also kernel code, and can also be loaded as modules, or compiled directly into the kernel. When they are in the kernel, Speakup is able to read all the kernel boot messages as they are displayed, allowing the user to troubleshoot any problems.
Speakup offers a good default set of keys that can be used for screen review functions. The number pad, with numlock turned off is used for this task, allowing the user to read by line, word, and character. Colours, as well as current cursor position information can also be obtained with a press of a key. It is also possible to copy and paste text with Speakup. A default set of key commands is also provided for laptop users, with a modifier key, in this case the capslock key. The key commands are also fully customizable.
Speakup provides access to all virtual terminals, and keeps track of cursor position for each terminal. The copy and paste feature mentioned above can be used between terminals.
The fact that Speakup is kernel code presents one problem, the synthesizer drivers, which are also kernel code. Some of the speech synthesizers supported by these drivers are not supported by any other speech back-end under Linux. In order for these devices to be used for other software such as GNOME, these drivers will have to be ported to a userspace backend, that also needs to be decided. Read the Userspace Backend document for more information.
Speakup does have a way of allowing the user to send data directly to the speech synthesizer, which could mean the use of the kernel drivers for all devices with all software. However, the direct sending of text to the synthesizer doesn't support synthesizer commands, which would make it difficult to adjust speech rate, punctuation, etc.
The one notable exception to this is the software synthesizer driver. This driver allows speakup to be used with software speech synthesizers that are either in the kernel, or in userspace. Work on a kernel software speech synthesizer was started, but development has currently stalled, very likely indefinitely. However this would also allow Speakup to be used with any chosen backend that supported both hardware and software speech.
Speakup is by far the best console screen reader available, and would be a very good choice for an accessible Ubuntu installation, allowing access to the console. The kernel drivers for speech synthesizers would have to be ported as mentioned above, however they would still be useful in allowing users to receive speech feedback during the kernel boot process. The software synthesizer driver could then be used to allow speakup to work with any other speech synthesizer that is supported by a userspace backend.