typedef struct { // srmi
GUID gEngineID;
TCHAR szMfgName[SRMI_NAMELEN];
TCHAR szProductName[SRMI_NAMELEN];
GUID gModeID;
TCHAR szModeName[SRMI_NAMELEN];
LANGUAGE language;
DWORD dwSequencing;
DWORD dwMaxWordsVocab;
DWORD dwMaxWordsState;
DWORD dwGrammars;
DWORD dwFeatures;
DWORD dwInterfaces;
DWORD dwEngineFeatures;
} SRMODEINFO, *PSRMODEINFO;
Provides details about a speech-recognition mode supported by a particular engine.
gEngineID
GUID that identifies the engine. It is possible for more than one mode to have the same engine identifier. In this case, the engine is capable of recognizing the different languages or voices of the modes.
szMfgName
Name of the manufacturer — for example, "Acme Corporation."
szProductName
Name of the product — for example, "Acme's Ultra-Listener."
gModeID
GUID that identifies the mode. These numbers are guaranteed to be unique, so it is not necessary to monitor and record them. In addition, because the GUID is not stored or used directly by OLE, it is not necessary to load it into the registry.
szModeName
Name of the recognition mode — for example, "English Ultra-Listener."
language
LANGUAGE structure that contains the name of the language and dialect.
dwSequencing
Recognition scheme. This member can be one of these values:
Value | Meaning |
SRSEQUENCE_CONTINUOUS | Performs continuous recognition. Given a continuous utterance with no pauses between words, the engine can recognize the words that were spoken. |
SRSEQUENCE_DISCRETE | Recognizes discrete utterances. Every word must be isolated by a pause before and after the word for the engine to recognize it. |
SRSEQUENCE_WORDSPOT | Performs word spotting. A series of words may be spoken in a continuous utterance, but the engine recognizes only selected words or phrases. |
SRSEQUENCE_CONTCFGDISCDICT | Performs continuous recognition for context-free grammars. It also supports discrete dictation. |
dwMaxWordsVocab
Maximum number of words allowed in an active vocabulary at any time.
dwMaxWordsState
Maximum number of words in any state of a grammar.
dwGrammars
Types of grammar supported by the engine. This member can be a combination of these values:
Value | Meaning |
SRGRAM_CFG | Context-free grammar |
SRGRAM_DICTATION | Dictation grammar |
SRGRAM_LIMITEDDOMAIN | Limited-domain grammar |
dwFeatures
Features that are available. This member can be a combination of these values:
Value | Meaning |
SRFEATURE_ANYWORD | The engine can attempt to recognize any word. |
SRFEATURE_GRAMLINK | The engine supports automatic links between grammars. |
SRFEATURE_GRAMLIST | The grammars support recognition lists. |
SRFEATURE_GRAMRECURSIVE | The engine accepts recursive, context-free grammars; otherwise, it cannot have recursive grammars. |
SRFEATURE_INDEPMICROPHONE | The engine is microphone-independent (indifferent to background noise and microphone) and does not require retraining if the microphone changes. |
SRFEATURE_INDEPSPEAKER | The engine is speaker-independent and works well without training. |
SRFEATURE_IPAUNICODE | The engine supports the IPA in Unicode. |
SRFEATURE_MULTILINGUAL | The engine can recognize speech in several languages at a time. This is necessary for systems that run two or more applications written for different languages. |
SRFEATURE_PCOPTIMIZED | The voice is optimized to work over the PC, which provides better sound quality. |
SRFEATURE_PHONEOPTIMIZED | The voice is designed to work over the telephone and uses an 8-kHz sampling rate. |
SRFEATURE_TRAINPHONETIC | The speaker can train the engine on a preselected set of words and thereby train all of the phonemes used for recognition. This is done in general training. |
SRFEATURE_TRAINWORD | The speaker can train the engine on individual words. |
SRFEATURE_WILDCARD | The engine supports wildcards in context-free grammars. |
dwInterfaces
Interfaces that the engine supports. This member can be a combination of these values:
Value | Meaning |
SRI_ILEXPRONOUNCE | The ILexPronounce interface |
SRI_ISRATTRIBUTES | The ISRAttributes interface |
SRI_ISRCENTRAL | The ISRCentral interface |
SRI_ISRDIALOGS | The ISRDialogs interface |
SRI_ISRGRAMCOMMON | The ISRGramCommon interface |
SRI_ISRGRAMCFG | The ISRGramCFG interface |
SRI_ISRGRAMDICTATION | The ISRGramDictation interface |
SRI_ISRGRAMINSERTIONGUI | The ISRGramInsertionGUI interface |
SRI_ISRESBASIC | The ISRResBasic interface |
SRI_ISRESMERGE | The ISRResMerge interface |
SRI_ISRESAUDIO | The ISRResAudio interface |
SRI_ISRESCORRECTION | The ISRResCorrection interface |
SRI_ISRESEVAL | The ISRResEval interface |
SRI_ISRESGRAPH | The ISRResGraph interface |
SRI_ISRESMEMORY | The ISRResMemory interface |
SRI_ISRESMODIFYGUI | The ISRResModifyGUI interface |
SRI_ISRESSPEAKER | The ISRResSpeaker interface |
SRI_ISRSPEAKER | The ISRSpeaker interface |
SRI_ISRESSCORES | The ISRResScore interface |
dwEngineFeatures
Features that are specific to the engine. These values are defined by the engine author. For more information, see the documentation for the engine.
The features provided by a given engine are defined by the engine author. An application can enumerate the engines to identify which engine is being used in order to determine the features it provides. For more information about enumerating engines, see the description of the ISREnum interface.
Although an engine can support both PC optimized and phone optimized voice qualities, most support either one or the other.
Some engines support recognition from several languages at a time. For more information about recognizing multiple languages, see the description of the ISRCentral::GrammarLoad member function.