If you wish to use an SRGS grammar for decode, you need to activate it. Activating a grammar puts it in the multi-grammar grammarset called LV_ACTIVE_GRAMMAR_SET. The grammars that were activated can then be used for a decode by specifying LV_ACTIVE_GRAMMAR_SET as the grammarset parameter in a call to Decode, or by setting the STREAM_PARM_GRAMMAR_SET equal to the LV_ACTIVE_GRAMMAR_SET before calling StreamStart. The reason for this mechanism is to maintain backward compatibility with previous APIs.
When ActivateGrammar is called, first the grammar is searched for among the grammars in the speech port's loaded grammars. If it can not be found there, the collection of application level grammars is searched. If you wish to explicitly activate an application level grammar, use LV_SRE_ActivateGlobalGrammar.
LV_SRE_ActivateGrammar(HPORT hport, const char* gram_name);
LV_SRE_ActivateGrammarIdx(HPORT hport, int gram_name);
hport
The handle of the speech port for which you are activating the grammar.
gram_name
The identifier for the grammar being activated. This is the same identifier that was given to the grammar when it was loaded. This can be a string, or an integer ID if you use the *Idx version of the function call. The string "123" and the integer 123 are identical labels. Integer names are provided for backward compatibility.
LV_SUCCESS
No errors; this grammar is now active.
LV_GRAMMAR_LOADING_ERROR
This grammar could not be activated, because it was not found in the speech port's set of loaded grammars.
Detailed error and warning messages are sent to the speech port's logging callback function at priorities 0 and 1, respectively.
LV_SRE_DeactivateGrammar functions
LVSpeechPort::ActivateGrammar functions (C++ API)
Complete Help Topic List | Speech Engine Product Information