Two recently released text-to-speech extensions can transform Firefox into a talking Web browser suitable for users with visual impairments -- and anyone else who can use a speech interface to the Web. Fire Vox is designed to be a full-fledged "screen reader in a browser," usable for daily browsing even for unsighted users. CLiCk, Speak provides point-and-click screen reading, which can be helpful for partially-sighted users or sighted users who have written language difficulties (such as dyslexia).
Both extensions are cross-platform, working with Linux, Windows, and Mac OS X. Separate instructions outline the installation steps for the different platforms, as the extensions take advantage of the different accessibility frameworks in the operating systems. On Linux, you can use the Java FreeTTS speech engine supplied by the project, or use the Orca accessibility framework provided by GNOME.
Fire Vox, CLiCk, Speak, and the CLC-4-TTS library that powers them are the work of Charles L. Chen. As an undergraduate, Chen worked on a way to tie Firefox in to the commercial screen reader JAWS. The difficulty of interfacing with JAWS, the uncooperativeness of its manufacturer, and its high price tag all convinced Chen of the need for an open source alternative.
He wrote CLC-4-TTS to function as a reusable text-to-speech library, and the Fire Vox extension initially to serve as a demonstration. But to his surprise, the extension's popularity took off on its own. The accessibility advocacy organization Knowbility invited Chen to demonstrate Fire Vox in its booth space at the South By Southwest festival in 2005, and has continued to assist him. Periodically Chen, in turn, serves as an accessibility instructor for the organization.
If you wonder why there is a need for a browser-specific screen reader when system-wide screen reading is available from both major Linux desktop environments (as well as proprietary OSes), Chen explains the rationale on his site. A browser-specific reader can more intelligently interpret HTML tags, to better do things such as announcing headings, counting the number of items in list elements, and verbally distinguishing between internal and external links.
Because Fire Vox and CLiCk, Speak work within the browser itself, they can keep track of dynamic content changes -- something an external reader cannot do. Both extensions support the World Wide Web Consortium's Accessible Rich Internet Applications (WAI-ARIA) standard, which introduces controls and navigation techniques to cope with AJAX content, and CSS 3 Speech Module, which defines "aural markup" properties used when rendering HTML as speech.
Finally, they build on Firefox's internal MathML support, automatically reading MathML content using the mathspeak method developed by Abraham Nemeth to unambiguously parse and read even complex mathematical expressions.
Let's start talking
To get started with Fire Vox on Linux, first decide whether you want to try CLC-4-TTS's FreeTTS speech engine (provided by the project), or rely on Orca. There is a separate installation page for each option.
If you have not set up Orca on your system before, try the CLC-4-TTS route first. You will need a working Java setup. Download the CLC-4-TTS for FreeTTS package from the downloads page. It is a .jar file providing a Java-based speech engine; you must install it as root with
sudo java -jar clc4tts_freetts_installer_1.2.jar
Next, download the Fire Vox extension and install it. It is an .xpi file that contains the Fire Vox extension itself as well as two supporting CLC-4-TTS extensions that it shares with CLiCk, Speak. Once the installation is complete, restart Firefox.
Fire Vox adds a submenu to the browser's Tools menu that lets you bring up the configuration panel or change speech engines, should you decide to see how Orca compares. Every function in Fire Vox has a keyboard shortcut, and you can reassign the shortcuts with the configuration panel.
Basic usage treats Web content as "chunks" -- paragraphs and typical HTML elements, for example. Press Ctrl-Shift-F and Fire Vox will read the next chunk aloud. Ctrl-Shift-D will read the previous chunk. Ctrl-Shift-A starts an automatic read-through of an entire page, and Ctrl-Shift-C stops speaking. Ctrl-Shift-O reads the currently selected text.
You can take advantage of some of Fire Vox's browser-specific functions with additional shortcuts. Ctrl-Shift-H reads a list of all of the headings in the current document, and Ctrl-Shift-L brings up a user-navigable menu to access all of the page elements individually -- links, forms, images, frames, and so on.
If you only need occasional use of a screen reader, you might try CLiCk, Speak instead of Fire Vox. The installation procedure is exactly the same, but instead of running constantly, CLiCk, Speak adds two buttons to the Firefox toolbar (and two corresponding entries to the context menu): one starts auto-reading mode, the other stops it.
I am a sighted user, so my experience with Fire Vox was only experimental. I had one significant hangup: several of the keyboard shortcuts conflicted with shortcuts used by other Firefox extensions, notably the Web Developer extension and AdBlock. I'm not sure of the popularity of either extension among users with visual impairments, but it could take considerable trial-and-error to remap Fire Vox's keybindings if you use a lot of extensions.
The extensions are Firefox-only for now, although they do work in context in other Firefox extensions, including ChatZilla. Chen says he may consider building Thunderbird support if user interest demands it. Given the simpler nature of email compared to Web browsing, though, system-wide screen readers may be filling that need sufficiently.
Every Monday we highlight a different extension, plugin, or add-on. Write an article of less than 1,000 words telling us about one that you use and how it makes your work easier, along with tips for getting the most out of it. If we publish it, we'll pay you $100. (Send us a query first to be sure we haven't already published a story on your chosen topic recently or have one in hand.)