GrammarBuilder Constructor (SemanticResultKey)


Initializes a new instance of the GrammarBuilder class from a semantic key.

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

public GrammarBuilder(
	SemanticResultKey key


Type: System.Speech.Recognition.SemanticResultKey

The semantic key.

When you create a GrammarBuilder instance from a SemanticResultValue object, you add semantic information to the grammar that can be returned in the recognition result. You can access the semantic information in the recognition result using the Semantics property of RecognizedPhrase, which is available in the handler for the SpeechRecognized event. If the GrammarBuilder defines a SemanticResultKey, this can be used to retrieve the semantic information in a recognition result that is associated with the key. See the example for Append(SemanticResultKey), and also see SemanticResultValue and SemanticResultKey.


When you construct GrammarBuilder objects that contain SemanticResultValue or SemanticResultKey instances, make sure you avoid creating duplicate semantic elements with the same key name or multiple semantic elements that could repeatedly modify the Value property of a SemanticValue object. The speech recognizer can throw an exception if it encounters these circumstances. For more information about building a speech recognition grammar that contains semantic information, see Using SemanticResultKey and SemanticResultValue Objects.

The following example creates a speech recognition grammar that can recognize the two phrases, "Make background colorChoice" and "Set background to colorChoice", where colorChoice is selected from a set of colors. The grammar lets a user speak any of several color names, and returns semantic information about the recognized color name to the application.

The example uses a single SemanticResultKey with which you can retrieve the SemanticValue that is associated with the color spoken by the user. For example, if the input contains the phrase, "Set background to red", the recognition result contains the semantic value of "#FF0000", which you can retrieve using a handler for the SpeechRecognized event.

The example uses String, Choices, SemanticResultKey, SemanticResultValue, and GrammarBuilder objects to build the constraints that are all contained in the last GrammarBuilder object, bothPhrases. Finally, the example constructs a Grammar object from the completed GrammarBuilder.

private Grammar CreateColorGrammar()

  // Create a set of color choices.
  // Include semantic information about each of the colors.
  Choices colorChoice = new Choices();

  GrammarBuilder colorBuilder = new GrammarBuilder("red");
  SemanticResultValue colorValue =
    new SemanticResultValue(colorBuilder, "#FF0000");
  colorChoice.Add(new GrammarBuilder(colorValue));

  colorBuilder = new GrammarBuilder("green");
  colorValue = new SemanticResultValue(colorBuilder, "#00FF00");
  colorChoice.Add(new GrammarBuilder(colorValue));

  colorBuilder = new GrammarBuilder("blue");
  colorValue = new SemanticResultValue(colorBuilder, "#0000FF");
  colorChoice.Add(new GrammarBuilder(colorValue));

  GrammarBuilder colorElement = new GrammarBuilder(colorChoice);

  // Create grammar builders for the two versions of the phrase.
  GrammarBuilder makePhrase = new GrammarBuilder("Make background");
  GrammarBuilder setPhrase = new GrammarBuilder("Set background to");

  // Create a Choices object for the two alternative phrases.
  Choices bothChoices = new Choices(new GrammarBuilder[] {makePhrase, setPhrase});
  GrammarBuilder bothPhrases = new GrammarBuilder(bothChoices);

  // Create the semantic key for referencing the color information.
  SemanticResultKey colorKey =
    new SemanticResultKey("ColorCode", bothPhrases);
  bothPhrases = new GrammarBuilder(colorKey);

  // Construct the Grammar object from the GrammarBuilder.
  Grammar grammar = new Grammar(bothPhrases);
  grammar.Name = "backgroundColor";
  return grammar;

.NET Framework
Available since 3.0
Return to top