RecognizeCompletedEventArgs Class

Provides data for the RecognizeCompleted event.

Inheritance Hierarchy

System.Object
  System.EventArgs
    System.ComponentModel.AsyncCompletedEventArgs
      Microsoft.Speech.Recognition.RecognizeCompletedEventArgs

Namespace:  Microsoft.Speech.Recognition
Assembly:  Microsoft.Speech (in Microsoft.Speech.dll)

Syntax

'Declaration
Public Class RecognizeCompletedEventArgs _
    Inherits AsyncCompletedEventArgs
'Usage
Dim instance As RecognizeCompletedEventArgs
public class RecognizeCompletedEventArgs : AsyncCompletedEventArgs

Remarks

An instance of RecognizeCompletedEventArgs is created when the SpeechRecognitionEngine object raises the RecognizeCompleted event at the completion of a RecognizeAsync() operation. To obtain information related to the RecognizeCompleted event, access the following properties in the handler for the event:

RecognizeCompletedEventArgs derives from EventArgs For more information about speech recognition events, see Use Speech Recognition Events (Microsoft.Speech).

Examples

The following example performs asynchronous speech recognition on a speech recognition grammar, using the SpeechRecognitionEngine.RecognizeAsync method. The example uses Choices and GrammarBuilder objects to create the speech recognition grammar before building it into a Grammar object. A handler for the SpeechRecognitionEngine.RecognizeCompleted event outputs information about the recognition operation to the console.

using System;
using Microsoft.Speech.Recognition;

namespace SampleRecognition
{
  class Program
  {
    private static SpeechRecognitionEngine recognizer;
    public static void Main(string[] args)
    {

      // Initialize a SpeechRecognitionEngine object and set its input.
      recognizer = new SpeechRecognitionEngine(new System.Globalization.CultureInfo("en-US"));
      recognizer.SetInputToDefaultAudioDevice();

      // Configure recognition parameters.
      recognizer.InitialSilenceTimeout = TimeSpan.FromSeconds(5.0);
      recognizer.BabbleTimeout = TimeSpan.FromSeconds(3.0);
      recognizer.EndSilenceTimeout = TimeSpan.FromSeconds(1.0);
      recognizer.EndSilenceTimeoutAmbiguous = TimeSpan.FromSeconds(1.0);

      // Add a handler for the LoadGrammarCompleted event.
      recognizer.LoadGrammarCompleted +=
        new EventHandler<LoadGrammarCompletedEventArgs>(recognizer_LoadGrammarCompleted);

      // Add a handler for the RecognizeCompleted event.
      recognizer.RecognizeCompleted += 
        new EventHandler<RecognizeCompletedEventArgs>(recognizer_RecognizeCompleted);

      // Create a speech recognition grammar and build it into a Grammar object.
      Choices bankingMenu = new Choices(new string[] 
      { "Access accounts", "Transfer funds", "Pay bills", "Get loan balance" });
      GrammarBuilder banking = new GrammarBuilder(bankingMenu);
      Grammar bankGrammar = new Grammar(banking);
      bankGrammar.Name = "Banking Menu";
    
      // Load the Grammar objects to the recognizer.
      recognizer.LoadGrammarAsync(bankGrammar);

      // Start asynchronous, continuous recognition.
      recognizer.RecognizeAsync();

      // Keep the console window open.
      Console.ReadLine();
    }

    // Handle the RecognizeCompleted event.
    static void recognizer_RecognizeCompleted(object sender, RecognizeCompletedEventArgs e)
    {
      if (e.Error != null)
      {
        Console.WriteLine(
          "RecognizeCompleted, error occurred during recognition: {0}", e.Error);
        return;
      }

      if (e.InitialSilenceTimeout || e.BabbleTimeout)
      {
        Console.WriteLine(
          "RecognizeCompleted: BabbleTimeout({0}), InitialSilenceTimeout({1}).",
          e.BabbleTimeout, e.InitialSilenceTimeout);
        return;
      }

      if (e.InputStreamEnded)
      {
        Console.WriteLine(
          "RecognizeCompleted: AudioPosition({0}), InputStreamEnded({1}).",
          e.AudioPosition, e.InputStreamEnded);
      }

      if (e.Result != null)
      {
        Console.WriteLine(
          "RecognizeCompleted: Grammar ({0}), Text ({1}), Confidence ({2}), AudioPosition ({3}).",
          e.Result.Grammar.Name, e.Result.Text, e.Result.Confidence, e.AudioPosition);
      }

      else
      {
        Console.WriteLine("RecognizeCompleted: No result.");
      } 
      
      Console.WriteLine();
      Console.WriteLine("Press any key to exit...");
      Console.ReadKey();
    }

    // Handle the LoadGrammarCompleted event. 
    static void recognizer_LoadGrammarCompleted(object sender, LoadGrammarCompletedEventArgs e)
    {
      string grammarName = e.Grammar.Name;
      bool grammarLoaded = e.Grammar.Loaded;
      bool grammarEnabled = e.Grammar.Enabled;

      if (e.Error != null)
      {
        Console.WriteLine("LoadGrammar for {0} failed with a {1}.",
        grammarName, e.Error.GetType().Name);

        // Add exception handling code here.
      }

      Console.WriteLine("Grammar {0} {1} loaded and {2} enabled.", grammarName, 
        (grammarLoaded) ? "is" : "is not", (grammarEnabled) ? "is" : "is not");
    }
  }          
}

Thread Safety

Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.

See Also

Reference

RecognizeCompletedEventArgs Members

Microsoft.Speech.Recognition Namespace

Microsoft.Speech.Recognition.SpeechRecognitionEngine

SpeechRecognitionEngine.RecognizeCompleted

SpeechRecognitionEngine.RecognizeAsync

Microsoft.Speech.Recognition.EmulateRecognizeCompletedEventArgs