SpeechRecognitionEngine Class

Provides the means to access and manage a speech recognition engine.

Inheritance Hierarchy


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


Public Class SpeechRecognitionEngine _
    Implements IDisposable
Dim instance As SpeechRecognitionEngine
public class SpeechRecognitionEngine : IDisposable


You can create an instance of this class to use any installed recognizer (a Runtime Language for recognition). To get information about which recognizers are installed, use the static InstalledRecognizers() method. See SpeechRecognitionEngine(CultureInfo) for information about downloading additional Runtime Languages.

Applications using SpeechRecognitionEngine can be constructed as clients of a particular recognition engine, as standalone speech recognition applications using an in-process recognition engine, and as servers that provide access to a recognition engine for clients.

Using the functionality provided by the SpeechRecognitionEngine class, you can do the following:


Always call Dispose before you release your last reference to the SpeechRecognitionEngine object. Otherwise, the resources it is using will not be freed until the garbage collector calls the object's Finalize method.


The following example shows part of a console application that demonstrates basic speech recognition. Because this example uses the Multiple mode of the RecognizeAsync(RecognizeMode) method, it performs recognition until you close the console window or stop debugging.

using System;
using Microsoft.Speech.Recognition;

namespace SpeechRecognitionApp
  class Program
    static void Main(string[] args)

      // Create a SpeechRecognitionEngine object for the default recognizer in the en-US locale.
      using (
      SpeechRecognitionEngine recognizer =
        new SpeechRecognitionEngine(
          new System.Globalization.CultureInfo("en-US")))

        // Create a grammar for finding services in different cities.
        Choices services = new Choices(new string[] { "restaurants", "hotels", "gas stations" });
        Choices cities = new Choices(new string[] { "Seattle", "Boston", "Dallas" });

        GrammarBuilder findServices = new GrammarBuilder("Find");

        // Create a Grammar object from the GrammarBuilder and load it to the recognizer.
        Grammar servicesGrammar = new Grammar(findServices);

        // Add a handler for the speech recognized event.
        recognizer.SpeechRecognized +=
          new EventHandler<SpeechRecognizedEventArgs>(recognizer_SpeechRecognized);

        // Configure the input to the speech recognizer.

        // Start asynchronous, continuous speech recognition.

        // Keep the console window open.
        while (true)

    // Handle the SpeechRecognized event.
    static void recognizer_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
      Console.WriteLine("Recognized text: " + e.Result.Text);

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


SpeechRecognitionEngine Members

Microsoft.Speech.Recognition Namespace