SpeechRecognizer.LoadGrammar(Grammar) Methode

Definitie

Laadt een grammatica voor spraakherkenning.

public:
 void LoadGrammar(System::Speech::Recognition::Grammar ^ grammar);
public void LoadGrammar(System.Speech.Recognition.Grammar grammar);
member this.LoadGrammar : System.Speech.Recognition.Grammar -> unit
Public Sub LoadGrammar (grammar As Grammar)

Parameters

grammar
Grammar

De grammatica van spraakherkenning die moet worden geladen.

Voorbeelden

Het volgende voorbeeld maakt deel uit van een consoletoepassing die een grammatica van spraakherkenning laadt en asynchrone geƫmuleerde invoer demonstreert, de bijbehorende herkenningsresultaten en de bijbehorende gebeurtenissen die door de spraakherkenning worden gegenereerd. Als Windows Spraakherkenning niet wordt uitgevoerd, wordt het starten van deze toepassing ook gestart Windows Spraakherkenning. Als Windows Spraakherkenning de status Sleeping heeft, retourneert EmulateRecognizeAsync altijd null.

using System;
using System.Speech.Recognition;
using System.Threading;

namespace SharedRecognizer
{
  class Program
  {
    // Indicate whether the asynchronous emulate recognition
    // operation has completed.
    static bool completed;

    static void Main(string[] args)
    {
      // Initialize an instance of the shared recognizer.
      using (SpeechRecognizer recognizer = new SpeechRecognizer())
      {
        // Create and load a sample grammar.
        Grammar testGrammar =
          new Grammar(new GrammarBuilder("testing testing"));
        testGrammar.Name = "Test Grammar";

        recognizer.LoadGrammar(testGrammar);

        // Attach event handlers for recognition events.
        recognizer.SpeechRecognized +=
          new EventHandler<SpeechRecognizedEventArgs>(
            SpeechRecognizedHandler);
        recognizer.EmulateRecognizeCompleted +=
          new EventHandler<EmulateRecognizeCompletedEventArgs>(
            EmulateRecognizeCompletedHandler);

        completed = false;

        // This EmulateRecognizeAsync call generates a SpeechRecognized event.
        recognizer.EmulateRecognizeAsync("testing testing");

        // Wait for the asynchronous operation to complete.
        while (!completed)
        {
          Thread.Sleep(333);
        }

        completed = false;

        // This EmulateRecognizeAsync call does not match the grammar
        // or generate a SpeechRecognized event.
        recognizer.EmulateRecognizeAsync("testing one two three");

        // Wait for the asynchronous operation to complete.
        while (!completed)
        {
          Thread.Sleep(333);
        }
      }

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

    // Handle the SpeechRecognized event.
    static void SpeechRecognizedHandler(
      object sender, SpeechRecognizedEventArgs e)
    {
      if (e.Result != null)
      {
        Console.WriteLine("Recognition result = {0}",
          e.Result.Text ?? "<no text>");
      }
      else
      {
        Console.WriteLine("No recognition result");
      }
    }

    // Handle the EmulateRecognizeCompleted event.
    static void EmulateRecognizeCompletedHandler(
      object sender, EmulateRecognizeCompletedEventArgs e)
    {
      if (e.Result == null)
      {
        Console.WriteLine("No result generated.");
      }

      completed = true;
    }
  }
}

Opmerkingen

De shared recognizer genereert een uitzondering als de grammatica van spraakherkenning al is geladen, asynchroon wordt geladen of niet kan worden geladen in een herkenner. Als de recognizer wordt uitgevoerd, moeten toepassingen de RequestRecognizerUpdate spraakherkenningsengine onderbreken voordat ze een grammatica laden, lossen, in- of uitschakelen.

Gebruik de LoadGrammarAsync methode om een grammatica voor spraakherkenning asynchroon te laden.

Van toepassing op

Zie ook