Uploaded the Microsoft SAPI5 SDK help files if anyone is looking for deep details. It's at
http://www.nextup.com/sapi5doc/sapi5doc.html
Please note that not all voices support all TAGS, and that for any of them to work in TextAloud under Options->Voice and File Options you must have SAPI Version set to SAPI5 Only.
Some of the TAGs of greatest interest are documented below:
Voice state control tags
SAPI TTS XML supports five tags that control the state of the current voice: Volume, Rate, Pitch, Emph, and Spell.
Volume
The Volume tag controls the volume of a voice. The tag can be empty, in which case it applies to all subsequent text, or it can have content, in which case it only applies to that content.
The Volume tag has one required attribute: Level. The value of this attribute should be an integer between zero and one hundred. Values outside of this range will be truncated.
<volume level="50">
This text should be spoken at volume level fifty.
<volume level="100">
This text should be spoken at volume level one hundred.
</volume>
</volume>
<volume level="80"/>
All text which follows should be spoken at volume level eighty.
One hundred represents the default volume of a voice. Lower values represent percentages of this default. That is, 50 corresponds to 50% of full volume.
Values specified using the Volume tag will be combined with values specified programmatically (using ISpVoice::SetVolume). For example, if you combine a SetVolume( 50 ) call with a <volume level="50"> tag, the volume of the voice should be 25% of its full volume.
Rate
The Rate tag controls the rate of a voice. The tag can be empty, in which case it applies to all subsequent text, or it can have content, in which case it only applies to that content.
The Rate tag has two attributes, Speed and AbsSpeed, one of which must be present. The value of both of these attributes should be an integer between negative ten and ten. Values outside of this range may be truncated by the engine (but are not truncated by SAPI). The AbsSpeed attribute controls the absolute rate of the voice, so a value of ten always corresponds to a value of ten, a value of five always corresponds to a value of five.
<rate absspeed="5">
This text should be spoken at rate five.
<rate absspeed="-5">
This text should be spoken at rate negative five.
</rate>
</rate>
<rate absspeed="10"/>
All text which follows should be spoken at rate ten.
Speed
The Speed attribute controls the relative rate of the voice. The absolute value is found by adding each Speed to the current absolute value.
<rate speed="5">
This text should be spoken at rate five.
<rate speed="-5">
This text should be spoken at rate zero.
</rate>
</rate>
Zero represents the default rate of a voice, with positive values being faster and negative values being slower. Values specified using the Rate tag will be combined with values specified programmatically (using ISpVoice::SetRate).
Pitch
The Pitch tag controls the pitch of a voice. The tag can be empty, in which case it applies to all subsequent text, or it can have content, in which case it only applies to that content.
The Pitch tag has two attributes, Middle and AbsMiddle, one of which must be present. The value of both of these attributes should be an integer between negative ten and ten. Values outside of this range may be truncated by the engine (but are not truncated by SAPI).
The AbsMiddle attribute controls the absolute pitch of the voice, so a value of ten always corresponds to a value of ten, a value of five always corresponds to a value of five.
<pitch absmiddle="5">
This text should be spoken at pitch five.
<pitch absmiddle="-5">
This text should be spoken at pitch negative five.
</pitch>
</pitch>
<pitch absmiddle="10"/>
All text which follows should be spoken at pitch ten.
The Middle attribute controls the relative pitch of the voice. The absolute value is found by adding each Middle to the current absolute value.
<pitch middle="5">
This text should be spoken at pitch five.
<pitch middle="-5">
This text should be spoken at pitch zero.
</pitch>
</pitch>
Zero represents the default middle pitch for a voice, with positive values being higher and negative values being lower.
Spell
The Spell tag forces the voice to spell out all text, rather than using its default word and sentence breaking rules, normalization rules, and so forth. All characters should be expanded to corresponding words (including punctuation, numbers, and so forth). The Spell tag cannot be empty.
<spell>
These words should be spelled out.
</spell>
These words should not be spelled out.
Direct item insertion tags
Three tags are supported that applications the ability to insert items directly at some level: Silence, Pron, and Bookmark.
Silence
The Silence tag inserts a specified number of milliseconds of silence into the output audio stream. This tag must be empty, and must have one attribute, Msec.
Five hundred milliseconds of silence <silence msec="500"/> just occurred.
Pron
The Pron tag inserts a specified pronunciation. The voice will process the sequence of phonemes exactly as they are specified. This tag can be empty, or it can have content. If it does have content, it will be interpreted as providing the pronunciation for the enclosed text. That is, the enclosed text will not be processed as it normally would be.
The Pron tag has one attribute, Sym, whose value is a string of white space separated phonemes.
<pron sym="h eh 1 l ow & w er 1 l d "/>
<pron sym="h eh 1 l ow & w er 1 l d"> hello world </pron>
