Note
Please see Azure Cognitive Services for Speech documentation for the latest supported speech solutions.
SpeechRecognitionEngine.EmulateRecognize Method (RecognizedWordUnit[], CompareOptions)
Emulates input of specific words to the speech recognizer, using an array of RecognizedWordUnit objects in place of audio for synchronous speech recognition, and specifies how the recognizer handles Unicode comparison between the words and the loaded speech recognition grammars.
Namespace: Microsoft.Speech.Recognition
Assembly: Microsoft.Speech (in Microsoft.Speech.dll)
Syntax
'Declaration
Public Function EmulateRecognize ( _
wordUnits As RecognizedWordUnit(), _
compareOptions As CompareOptions _
) As RecognitionResult
'Usage
Dim instance As SpeechRecognitionEngine
Dim wordUnits As RecognizedWordUnit()
Dim compareOptions As CompareOptions
Dim returnValue As RecognitionResult
returnValue = instance.EmulateRecognize(wordUnits, _
compareOptions)
public RecognitionResult EmulateRecognize(
RecognizedWordUnit[] wordUnits,
CompareOptions compareOptions
)
Parameters
- wordUnits
Type: []
An array of word units that contains the input for the recognition operation.
- compareOptions
Type: System.Globalization.CompareOptions
A bitwise combination of the enumeration values that describe the type of comparison to use for the emulated recognition operation.
Return Value
Type: Microsoft.Speech.Recognition.RecognitionResult
The result for the recognition operation, or a null reference (Nothing in Visual Basic) if the operation is not successful.
Exceptions
Exception | Condition |
---|---|
InvalidOperationException | The recognizer has no speech recognition grammars loaded. |
ArgumentNullException | wordUnits is a null reference (Nothing in Visual Basic). |
ArgumentException | wordUnits contains one or more a null reference (Nothing in Visual Basic) elements. |
NotSupportedException | compareOptions contains the IgnoreNonSpace, IgnoreSymbols, or StringSort flag. See CompareOptions. |
Remarks
The speech recognizer raises the SpeechDetected, SpeechHypothesized, SpeechRecognitionRejected, and SpeechRecognized events as if the recognition operation is not emulated. The recognizer ignores new lines and extra white space and treats punctuation as literal input.
The only supported values of the compareOptions argument are the OrdinalIgnoreCase and IgnoreCase members of the CompareOptions enumerated type. All other members will generate a NotSupportedException exception or return a a null reference (Nothing in Visual Basic).
Examples
In the example below, an array of RecognizedWordUnit objects is obtained from a recognized candidate and tested against the other grammars the recognition engine supports.
private void checkOtherGrammars(RecognizedPhrase candidate)
{
string msg = "";
if (candidate != null && candidate.Grammar != null)
{
//Unload successful grammar and try again, see if other grammars
Collection<Grammar> unloadList= new Collection<Grammar>(); //keep track of unloaded grammars and reload.
_recognitionEngine.UnloadGrammar(candidate.Grammar);
unloadList.Add(candidate.Grammar);
RecognizedWordUnit[] words = new RecognizedWordUnit[candidate.Words.Count];
candidate.Words.CopyTo(words, 0);
//Iterate over remaining grammars
msg = String.Format("Candidate \"{0}\"\nSelected by Grammar: \"{1}\"\n\n",
candidate.Text, candidate.Grammar);
while (_recognitionEngine.Grammars.Count != 0)
{
RecognitionResult emResult = _recognitionEngine.EmulateRecognize(
words, System.Globalization.CompareOptions.OrdinalIgnoreCase);
if (emResult == null)
{
break;
}
else
{
msg += String.Format("Emulation returns \"{0}\"\nSelected by Grammar: \"{1}\" \n",
emResult.Text, emResult.Grammar.Name);
_recognitionEngine.UnloadGrammar(emResult.Grammar);
unloadList.Add(emResult.Grammar);
}
}
MessageBox.Show(msg);
// restore grammars
for (int i=0;i<unloadList.Count;i++)
{
_recognitionEngine.LoadGrammar(unloadList[i]);
}
}
}
See Also
Reference
SpeechRecognitionEngine Members