If an engine provides speech-recognition results objects, an application can use them to get more detailed information about a recognition. The following member functions of the ISRGramNotifySink notification return the address of an IUnknown interface on a results object:
· PhraseHypothesis
· PhraseFinish
· ReEvaluate
· UnArchive
After the application gets the address of IUnknown, it can call the QueryInterface member function to obtain other interfaces, such as the following (not all results objects support all of these interfaces):
· ISRResAudio. An engine may store the digital-audio information in the results object. This allows an application to access the audio so it can be played back to the user.
· ISRResBasic. This interface provides member functions that allow the application to get the same information supplied by the PhraseHypothesis and PhraseFinish member functions. It also allows an application to see the alternative recognition results.
· ISRResCorrection. Applications can and should correct the engine through this interface. If a user explicitly (or implicitly) informs the application that the engine recognized a phrase correctly or incorrectly, the application should pass this information to the engine through the ISRResCorrection interface. The engine can use the information to improve its future performance.
· ISRResEval. Allows the application to request that the engine reevaluate a recognition result to see if new training changes the result.
· ISRResGraph. An application can use these member functions to view the recognition results graph for both words and phonemes. It provides detailed information about what words or phonemes were spoken when, how loud they were, what their alternatives were, and so on.
· ISRResMemory. Results occupy a lot of memory. This interface allows an application to control how much information is stored in the results object.
· ISRResMerge. An application can use this interface to combine two temporally adjacent results objects into one.
· ISRResModifyGUI. An application can use this interface to display a small status window next to selected text for specific recognition results.
· ISRResScore. This interface provides member functions that allow the application to get scores for recognition results.
· ISRResSpeaker. Some engines support speaker identification. An application can access this to identify who spoke a particular command.
Because results objects consume so much memory, engines automatically "degrade" the results objects over time in an attempt to save memory, causing information to be lost in the process. The application can query and set the speed of this degradation by calling the ISRGramCommon::DeteriorationGet and DeteriorationSet member functions. An application can also take charge of memory management and lock a results object. Additionally, an application can take charge of memory management and lock a results object by calling the ISRResMemory::LockSet member function.