This is slightly reformatted from what was posted to the Emacspeak mailing list as separate message.
- Emacspeak defines a number of voice overlays such as
voice-bolden, andvoice-lightenthat can be applied to a given voice to change what it sounds like. - Voice overlays are defined in terms of Aural CSS (ACSS) to keep them independent of a specific TTS engine.
- For each such overlay there is a corresponding
<overlay-name>-settingsvariable that can be customized via custom. - The numbers in
voice-bolden-settings as an example:
| Setting | Value |
|---|---|
| family | nil |
| average-pitch | 1 |
| pitch-range | 6 |
| stress | 6 |
| richness | nil |
| punctuation | nil |
nil) show up as "unspecified" in the customize
interface.
- Do not directly customize
voice-boldenand friends, instead customize the correspondingvoice-bolden-settings, since that ensures that all voices that are defined in terms ofvoice-boldenget correctly updated. - Discovering what to customize:
Command emacspeak-show-personality-at-point (bound by default
to C-e M-v) will show you the value of properties personality and
face at point. A recent update I implemented last weekend makes
this more useful, so make sure you do a CVS update; earlier this
command used to display the ACSS setting --- now it displays the
abstract name. Describe-variable on these names should tell you
what to customize; so as an example:
Put point on a comment line, and hit C-e M-v:
you will hear
Personality emacspeak-voice-lock-comment-personality Face font-lock-comment-delimiter-face
Describe-variable of emacspeak-voice-lock-comment-personality gives:
emacspeak-voice-lock-comment-personality's value is acss-p0-s0-all Documentation: Personality used for font-lock-comment-face This personality uses voice-monotone whose effect can be changed globally by customizing voice-monotone-settings.
How It All Works
Here is a brief explanation of the connection between
voice-bolden and its associated voice-bolden-settings.
- Voice settings are initially in
voice-bolden-settingswhich is a list of numbers. - That list of numbers needs to be translated to appropriate device-specific codes to send to the TTS engine.
- You do not want to do this translation each time you speak something.
- So when
voice-boldenis defined, the definition happens in two steps:
- The list of settings is stored away in
voice-bolden-settings, - A corresponding voice-name is generated ---
acss-a<n>-p<n>-r<n>-s<n>and the corresponding control codes to send to the device are stored away in a hash-table keyed by the above symbol. - Finally,
voice-boldenis assigned the above symbol.
What this gives is:
- The ability to customize the voice via custom by editting
the list of numbers in
voice-bolden-settings - When that list is editted,
voice-boldenis arranged to be updated automatically.
Other Useful Commands
In addition, commands
emacspeak-wizards-generate-voice-sampler can be
useful in generating a buffer that shows what the various ACSS
settings sound like.
Command emacspeak-wizards-voice-sampler can be used
to apply a specific voice to a region of text while experimenting
with the various settings.