UnloadGrammar Method

Microsoft Speech Platform SDK 11

Collapse imageExpand ImageCopy imageCopyHover image

Unloads a specified Grammar object from the SpeechRecognitionEngine instance.

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

Syntax

Visual Basic (Declaration)
Public Sub UnloadGrammar ( _
	grammar As Grammar _
)
Visual Basic (Usage)
Dim instance As SpeechRecognitionEngine
Dim grammar As Grammar

instance.UnloadGrammar(grammar)
C#
public void UnloadGrammar(
	Grammar grammar
)

Parameters

grammar
Type: Microsoft.Speech.Recognition..::..Grammar

The grammar object to unload.

Remarks

If the Grammar specified by the grammar parameter is not currently loaded, TargetInvocationException will be generated.

If the recognizer is running, applications must use RequestRecognizerUpdate()()()() to pause the SpeechRecognitionEngine instance before loading, unloading, enabling, or disabling a Grammar object. To unload all Grammar objects, use the UnloadAllGrammars method.

Examples

The following example shows part of a console application that demonstrates the synchronous loading and unloading of speech recognition grammars.

 Copy imageCopy Code
Loading grammars...
Loaded grammars:
 - Grammar1
 - Grammar2
 - Grammar3

Unloading Grammar1...
Loaded grammars:
 - Grammar2
 - Grammar3

Unloading all grammars...
No grammars loaded.

Press any key to exit...
C# Copy imageCopy Code
using System;
using System.Collections.Generic;
using System.Globalization;
using Microsoft.Speech.Recognition;

namespace UnloadGrammars
{
  class Program
  {
    static void Main(string[] args)
    {
      using (SpeechRecognitionEngine recognizer =
        new SpeechRecognitionEngine(new CultureInfo("en-US")))
      {
        Console.WriteLine("Loading grammars...");

        // Create and load a number of grammars.
        Grammar grammar1 = new Grammar(new GrammarBuilder("first grammar"));
        grammar1.Name = "Grammar1";
        recognizer.LoadGrammar(grammar1);

        Grammar grammar2 = new Grammar(new GrammarBuilder("second grammar"));
        grammar2.Name = "Grammar2";
        recognizer.LoadGrammar(grammar2);

        Grammar grammar3 = new Grammar(new GrammarBuilder("third grammar"));
        grammar3.Name = "Grammar3";
        recognizer.LoadGrammar(grammar3);

        // List the recognizer's loaded grammars.
        ListGrammars(recognizer);

        // Unload one grammar and list the loaded grammars.
        Console.WriteLine("Unloading Grammar1...");
        recognizer.UnloadGrammar(grammar1);
        ListGrammars(recognizer);

        // Unload all grammars and list the loaded grammars.
        Console.WriteLine("Unloading all grammars...");
        recognizer.UnloadAllGrammars();
        ListGrammars(recognizer);
      }

      Console.WriteLine("Press any key to exit...");
      Console.ReadKey();
    }

    private static void ListGrammars(SpeechRecognitionEngine recognizer)
    {
      // Make a copy of the recognizer's grammar collection.
      List<Grammar> loadedGrammars = new List<Grammar>(recognizer.Grammars);

      if (loadedGrammars.Count > 0)
      {
        Console.WriteLine("Loaded grammars:");
        foreach (Grammar g in recognizer.Grammars)
        {
          Console.WriteLine(" - {0}", g.Name);
        }
      }
      else
      {
        Console.WriteLine("No grammars loaded.");
      }
      Console.WriteLine();
    }
  }
}

See Also