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 submitis a link.
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 }