Microsoft Speech API (SAPI) 5.3
Microsoft Speech API 5.3
Microsoft Speech API (SAPI) 5.3
This is the documentation for Microsoft Speech API (SAPI) 5.3, the native API for Windows.
These are interfaces, structures, and enumerations that have been added for the SAPI 5.3 release:
- New SAPI 5.3 Interfaces
- New SAPI 5.3 Enumerations
- New SAPI 5.3 Structures
This topic also includes conceptual material that describes and explains the new scenarios that SAPI 5.3 supports:
- W3C Speech Synthesis Markup Language
- W3C Speech Recognition Grammar Specification
- Semantic Interpretation
New Managed API for Speech
Windows Vista includes a new .NET namespace, System.Speech, that allows developers to speech-enable applications, especially those based on the Windows Presentation Foundation. Authors of managed applications can use this in addition to, or as an alternative to SAPI. For more information, see the System.Speech.* namespaces in the Windows SDK Class Library. They are:
- System.Speech.Audioformat
- System.Speech.Recognition
- System.Speech.Recognition.SrgsGrammar
- System.Speech.Synthesis
- System.Speech.Synthesis.TtsEngine
New SAPI 5.3 Interfaces
The new interfaces in SAPI 5.3 are:
New SAPI 5.3 Enumerations
The new enumerations in SAPI 5.3 are:
New SAPI 5.3 Structures
The new structures in SAPI 5.3 are:
Structure Name |
SPEVENTEX |
SPNORMALIZATIONLIST |
SPRULE |
SPSEMANTICERRORINFO |
SPSHORTCUTPAIR |
SPSHORTCUTPAIRLIST |
W3C Speech Synthesis Markup Language
SAPI 5.3 supports the W3C Speech Synthesis Markup Language (SSML) version 1.0, which is defined at http://www.w3.org/TR/speech-synthesis. SSML provides the ability to markup voice characteristics, speed, volume, pitch, emphasis, and pronunciation, so that developers can make TTS sound more natural in their applications.
In addition to SSML, SAPI 5.3 continues to support the proprietary SAPITTS markup language for annotating text for TTS rendering. SSML and SAPITTS have a fairly close mapping - close enough that most SSML can be transformed into SAPITTS. Indeed, this is what SAPI does when it receives SSML, so that underlying TTS engines that have been built for SAPITTS do not need to also support SSML.
SAPI does not support new DDI for TTS engines to accept SSML.
W3C Speech Recognition Grammar Specification
SAPI 5.3 supports the definition of context-free grammars using the W3C Speech Recognition Grammar Specification (SRGS), with these two important constraints:
- It does not support the use of SRGS to specify DTMF (touch-tone) grammars.
- It only supports the expression of SRGS as XML - not as augmented BNF (ABNF).
SRGS is defined at http://www.w3.org/TR/speech-grammar.
In addition to SRGS, SAPI 5.3 continues to support the proprietary SAPI CFG XML format for specifying a grammar.
Semantic Interpretation
SAPI 5.3 enables an SRGS grammar to be annotated with semantic information, so that a recognition result may contain not only the recognized text but also the semantic interpretation of that text. For example, the recognized text of a yes/no grammar might be "yes", "yeah" or "yep", but the semantic meaning of all of these is "yes". This makes it easier for applications to consume recognition results, as well as empowering grammar authors to provide a full spectrum of possible utterances without burdening the developer with the interpretation task.
The annotation of semantic information within SRGS can be either of the following:
- A string literal containing the semantic value.
- A Jscript statement that ultimately returns a string containing the semantic value.
In addition to the annotation of SRGS, SAPI also provides results that contain not only the recognized text but also the semantic information as a hierarchy of name-value pairs.