Implementation --Emacspeak And W3

Emacspeak is a full-fledged speech interface to GNU Emacs. Emacspeak should be thought of as the speech analogue to the visual GUI; just as a GUI presents a pleasant visual front-end to a set of computing applications, Emacspeak enables fluent spoken feedback from a varied collection of applications. One of Emacspeak's primary strengths is its ability to produce context-specific feedback as opposed to just speaking the screen. Thus, whereas traditional screen-reading applications for the blind merely speak the screen contents out loud --leaving it to the user to interpret the context and intent of the visual display-- Emacspeak presents information aurally as opposed to speaking the screen. See this short talk on Emacspeak for additional details on the speech-enabling approach introduced in Emacspeak.

The Emacspeak extension to the Emacs W3 browser --a powerful WWW browser implemented entirely in Emacs lisp-- extends the speech-enabling approach to the domain of WWW browsers. Emacspeak interprets the structure of HTML documents as they ar displayed and speaks the contents using sophisticated audio rendering techniques. In an early implementation of this approach, we relied exclusively on browser-specific mechanisms to achieve these effects; --at the time this was how all UAs (both visual and aural) achieved high-quality renderings.

The current implementation of the speech extension to W3 in Emacspeak uses the CSS mechanism and is implemented as per the specification given in the previous section.

An Emacspeak user can customize a local or personal stylesheet instance to produce audio renderings that are attuned to individual tastes. Using speech styles to convey structural information about the content being presented has the advantage of making the resulting renderings succinct. In the absence of speech styles, a listener would hear added verbiage such as

link click here to submit
. An Emacspeak user instead gets the link text spoken in a slightly different voice; the change in voice characteristic implicitly cues the listener to the fact that the text click here to submit is a link.

Example Speech Style Sheet

This section gives a sample instance of a speech style sheet. This is extracted from my currently running instance of Emacspeak and W3 --it represents an example and reflects my own personal tastes.

The Emacs W3 browser divides the stylsheet into device-specific sections; only the section that is specific to an auditory display is shown below.


:speech:
/* family, pitch, pitch-range, stress, richness */
h1,h2,h3,
h4,h5,h6 { voice-family: paul; stress: 2; richness: 9; }
      h1 { pitch: 1; pitch-range: 9; }
      h2 { pitch: 2; pitch-range: 8; }
      h3 { pitch: 3; pitch-range: 7; }
      h4 { pitch: 4; pitch-range: 6; }
   h5 { pitch: 5; pitch-range: 5; }
h6 { pitch: 6; pitch-range: 4; }
      li { pitch: 6; richness: 6; }
      dt  { pitch: 6; stress: 8;  richness: 6; }
      dd { pitch: 6; richness: 6; }
pre,xmp,
plaintext { pitch: 1; pitch-range: 1; stress: 1; richness: 8; }
key,code,
       tt { pitch: 1; pitch-range: 1; stress: 1; richness: 8; }
em { pitch: 6; pitch-range: 6; stress: 6; richness:5 }
strong { pitch: 6; pitch-range: 6; stress: 9; richness: 9; }
      dfn { pitch: 7; pitch-range: 6; stress: 6; }
 s,strike { richness: 0; }
        i   { pitch: 6; pitch-range: 6; stress: 6; richness: 5 }
        b { pitch: 6; pitch-range: 6; stress: 9; richness: 9; }
        u { richness: 0; }
a:link    { voice-family: harry; }
a:visited { voice-family: betty;}
a:active  { voice-family: betty; pitch-range: 8; pitch: 8 }


Email: raman@adobe.com
Last modified: Thu Nov 21 09:24:26 1996

Return to Technical Papers Index