Share via


SpeechRecognizer.LoadGrammar(Grammar) Methode

Definition

Lädt eine Spracherkennungsgrammatik.

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)

Parameter

grammar
Grammar

Die zu ladende Spracherkennungsgrammatik.

Beispiele

Das folgende Beispiel ist Teil einer Konsolenanwendung, die eine sprach Erkennungs Grammatik lädt und die asynchrone emulierten Eingaben, die zugeordneten Erkennungsergebnisse und die zugeordneten Ereignisse veranschaulicht, die von der Spracherkennung ausgelöst werden. Wenn die Windows-Spracherkennung nicht ausgeführt wird, wird durch das Starten dieser Anwendung auch die Windows-Spracherkennung gestartet. Wenn die Windows -Spracherkennung im Ruhezustand ist, EmulateRecognizeAsync gibt immer NULL zurück.

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;  
    }  
  }  
}  

Hinweise

Die freigegebene Erkennung löst eine Ausnahme aus, wenn die Spracherkennungs-Grammatik bereits geladen wurde, asynchron geladen wird oder nicht in eine Erkennung geladen werden konnte. Wenn die Erkennung ausgeführt wird, müssen Anwendungen zum Anhalten RequestRecognizerUpdate der sprach Erkennungs-Engine verwenden, bevor Sie eine Grammatik laden, entladen, aktivieren oder deaktivieren.

Verwenden Sie die-Methode, um eine sprach Erkennungs Grammatik asynchron zu laden LoadGrammarAsync .

Gilt für

Siehe auch