Freigeben über


SpeechRecognitionEngine.RecognizeAsync Methode

Definition

Startet einen asynchronen Spracherkennungsvorgang.

Überlädt

Name Beschreibung
RecognizeAsync()

Führt einen einzelnen, asynchronen Spracherkennungsvorgang aus.

RecognizeAsync(RecognizeMode)

Führt einen oder mehrere asynchrone Spracherkennungsvorgänge aus.

Hinweise

Diese Methoden führen einzelne oder mehrere asynchrone Erkennungsvorgänge aus. Die Erkennung führt jeden Vorgang anhand seiner geladenen und aktivierten Spracherkennungsgrammatik aus.

Während eines Aufrufs dieser Methode kann die Erkennung die folgenden Ereignisse auslösen:

Um das Ergebnis eines asynchronen Erkennungsvorgangs SpeechRecognized abzurufen, fügen Sie einen Ereignishandler an das Ereignis der Erkennung an. Die Erkennung löst dieses Ereignis aus, wenn es erfolgreich einen synchronen oder asynchronen Erkennungsvorgang abgeschlossen hat. Wenn die Erkennung nicht erfolgreich war, lautet die Result Eigenschaft für RecognizeCompletedEventArgs das Objekt, auf die Sie im Handler für das RecognizeCompleted Ereignis zugreifen können, .null

Aus folgenden Gründen kann ein asynchroner Erkennungsvorgang fehlschlagen:

RecognizeAsync()

Quelle:
SpeechRecognitionEngine.cs
Quelle:
SpeechRecognitionEngine.cs
Quelle:
SpeechRecognitionEngine.cs
Quelle:
SpeechRecognitionEngine.cs

Führt einen einzelnen, asynchronen Spracherkennungsvorgang aus.

public:
 void RecognizeAsync();
public void RecognizeAsync();
member this.RecognizeAsync : unit -> unit
Public Sub RecognizeAsync ()

Beispiele

Das folgende Beispiel zeigt einen Teil einer Konsolenanwendung, die grundlegende asynchrone Spracherkennung veranschaulicht. Das Beispiel erstellt einen DictationGrammar, lädt ihn in eine prozessinterne Spracherkennung und führt einen asynchronen Erkennungsvorgang aus. Ereignishandler werden eingeschlossen, um die Ereignisse zu veranschaulichen, die die Erkennung während des Vorgangs auslöst.

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

namespace AsynchronousRecognition
{
  class Program
  {
    // Indicate whether asynchronous recognition is complete.
    static bool completed;

    static void Main(string[] args)
    {
      // Create an in-process speech recognizer.
      using (SpeechRecognitionEngine recognizer =
        new SpeechRecognitionEngine(new CultureInfo("en-US")))
      {
        // Create a grammar for choosing cities for a flight.
        Choices cities = new Choices(new string[]
        { "Los Angeles", "New York", "Chicago", "San Francisco", "Miami", "Dallas" });

        GrammarBuilder gb = new GrammarBuilder();
        gb.Append("I want to fly from");
        gb.Append(cities);
        gb.Append("to");
        gb.Append(cities);

        // Construct a Grammar object and load it to the recognizer.
        Grammar cityChooser = new Grammar(gb);
        cityChooser.Name = ("City Chooser");
        recognizer.LoadGrammarAsync(cityChooser);

        // Attach event handlers.
        recognizer.SpeechDetected +=
          new EventHandler<SpeechDetectedEventArgs>(
            SpeechDetectedHandler);
        recognizer.SpeechHypothesized +=
          new EventHandler<SpeechHypothesizedEventArgs>(
            SpeechHypothesizedHandler);
        recognizer.SpeechRecognitionRejected +=
          new EventHandler<SpeechRecognitionRejectedEventArgs>(
            SpeechRecognitionRejectedHandler);
        recognizer.SpeechRecognized +=
          new EventHandler<SpeechRecognizedEventArgs>(
            SpeechRecognizedHandler);
        recognizer.RecognizeCompleted +=
          new EventHandler<RecognizeCompletedEventArgs>(
            RecognizeCompletedHandler);

        // Assign input to the recognizer and start an asynchronous
        // recognition operation.
        recognizer.SetInputToDefaultAudioDevice();

        completed = false;
        Console.WriteLine("Starting asynchronous recognition...");
        recognizer.RecognizeAsync();

        // Wait for the operation to complete.
        while (!completed)
        {
          Thread.Sleep(333);
        }
        Console.WriteLine("Done.");
      }

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

    // Handle the SpeechDetected event.
    static void SpeechDetectedHandler(object sender, SpeechDetectedEventArgs e)
    {
      Console.WriteLine(" In SpeechDetectedHandler:");
      Console.WriteLine(" - AudioPosition = {0}", e.AudioPosition);
    }

    // Handle the SpeechHypothesized event.
    static void SpeechHypothesizedHandler(
      object sender, SpeechHypothesizedEventArgs e)
    {
      Console.WriteLine(" In SpeechHypothesizedHandler:");

      string grammarName = "<not available>";
      string resultText = "<not available>";
      if (e.Result != null)
      {
        if (e.Result.Grammar != null)
        {
          grammarName = e.Result.Grammar.Name;
        }
        resultText = e.Result.Text;
      }

      Console.WriteLine(" - Grammar Name = {0}; Result Text = {1}",
        grammarName, resultText);
    }

    // Handle the SpeechRecognitionRejected event.
    static void SpeechRecognitionRejectedHandler(
      object sender, SpeechRecognitionRejectedEventArgs e)
    {
      Console.WriteLine(" In SpeechRecognitionRejectedHandler:");

      string grammarName = "<not available>";
      string resultText = "<not available>";
      if (e.Result != null)
      {
        if (e.Result.Grammar != null)
        {
          grammarName = e.Result.Grammar.Name;
        }
        resultText = e.Result.Text;
      }

      Console.WriteLine(" - Grammar Name = {0}; Result Text = {1}",
        grammarName, resultText);
    }

    // Handle the SpeechRecognized event.
    static void SpeechRecognizedHandler(
      object sender, SpeechRecognizedEventArgs e)
    {
      Console.WriteLine(" In SpeechRecognizedHandler.");

      string grammarName = "<not available>";
      string resultText = "<not available>";
      if (e.Result != null)
      {
        if (e.Result.Grammar != null)
        {
          grammarName = e.Result.Grammar.Name;
        }
        resultText = e.Result.Text;
      }

      Console.WriteLine(" - Grammar Name = {0}; Result Text = {1}",
        grammarName, resultText);
    }

    // Handle the RecognizeCompleted event.
    static void RecognizeCompletedHandler(
      object sender, RecognizeCompletedEventArgs e)
    {
      Console.WriteLine(" In RecognizeCompletedHandler.");

      if (e.Error != null)
      {
        Console.WriteLine(
          " - Error occurred during recognition: {0}", e.Error);
        return;
      }
      if (e.InitialSilenceTimeout || e.BabbleTimeout)
      {
        Console.WriteLine(
          " - BabbleTimeout = {0}; InitialSilenceTimeout = {1}",
          e.BabbleTimeout, e.InitialSilenceTimeout);
        return;
      }
      if (e.InputStreamEnded)
      {
        Console.WriteLine(
          " - AudioPosition = {0}; InputStreamEnded = {1}",
          e.AudioPosition, e.InputStreamEnded);
      }
      if (e.Result != null)
      {
        Console.WriteLine(
          " - Grammar = {0}; Text = {1}; Confidence = {2}",
          e.Result.Grammar.Name, e.Result.Text, e.Result.Confidence);
        Console.WriteLine(" - AudioPosition = {0}", e.AudioPosition);
      }
      else
      {
        Console.WriteLine(" - No result.");
      }

      completed = true;
    }
  }
}

Hinweise

Diese Methode führt einen einzelnen asynchronen Erkennungsvorgang aus. Die Erkennung führt den Vorgang für die geladene und aktivierte Spracherkennungsgrammatik aus.

Während eines Aufrufs dieser Methode kann die Erkennung die folgenden Ereignisse auslösen:

Um das Ergebnis eines asynchronen Erkennungsvorgangs SpeechRecognized abzurufen, fügen Sie einen Ereignishandler an das Ereignis der Erkennung an. Die Erkennung löst dieses Ereignis aus, wenn es erfolgreich einen synchronen oder asynchronen Erkennungsvorgang abgeschlossen hat. Wenn die Erkennung nicht erfolgreich war, lautet die Result Eigenschaft für RecognizeCompletedEventArgs das Objekt, auf die Sie im Handler für das RecognizeCompleted Ereignis zugreifen können, .null

Verwenden Sie zum Ausführen der synchronen Erkennung eine der Recognize Methoden.

Diese Methode speichert in der Aufgabe, die alle Nicht-Verwendungs-Ausnahmen zurückgibt, die das synchrone Gegenstück der Methode auslösen kann. Wenn eine Ausnahme in der zurückgegebenen Aufgabe gespeichert wird, wird diese Ausnahme ausgelöst, wenn die Aufgabe erwartet wird. Verwendungsausnahmen, z. B. ArgumentException, werden weiterhin synchron ausgelöst. Informationen zu den gespeicherten Ausnahmen finden Sie in den von Recognize().

Weitere Informationen

Gilt für:

RecognizeAsync(RecognizeMode)

Quelle:
SpeechRecognitionEngine.cs
Quelle:
SpeechRecognitionEngine.cs
Quelle:
SpeechRecognitionEngine.cs
Quelle:
SpeechRecognitionEngine.cs

Führt einen oder mehrere asynchrone Spracherkennungsvorgänge aus.

public:
 void RecognizeAsync(System::Speech::Recognition::RecognizeMode mode);
public void RecognizeAsync(System.Speech.Recognition.RecognizeMode mode);
member this.RecognizeAsync : System.Speech.Recognition.RecognizeMode -> unit
Public Sub RecognizeAsync (mode As RecognizeMode)

Parameter

mode
RecognizeMode

Gibt an, ob ein oder mehrere Erkennungsvorgänge ausgeführt werden sollen.

Beispiele

Das folgende Beispiel zeigt einen Teil einer Konsolenanwendung, die grundlegende asynchrone Spracherkennung veranschaulicht. Das Beispiel erstellt eine DictationGrammar, lädt sie in eine prozessinterne Spracherkennung und führt mehrere asynchrone Erkennungsvorgänge aus. Die asynchronen Vorgänge werden nach 30 Sekunden abgebrochen. Ereignishandler werden eingeschlossen, um die Ereignisse zu veranschaulichen, die die Erkennung während des Vorgangs auslöst.

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

namespace AsynchronousRecognition
{
  class Program
  {
    // Indicate whether asynchronous recognition is complete.
    static bool completed;

    static void Main(string[] args)
    {
      // Create an in-process speech recognizer.
      using (SpeechRecognitionEngine recognizer =
        new SpeechRecognitionEngine(new CultureInfo("en-US")))
      {
        // Create a grammar for choosing cities for a flight.
        Choices cities = new Choices(new string[] { "Los Angeles", "New York", "Chicago", "San Francisco", "Miami", "Dallas" });

        GrammarBuilder gb = new GrammarBuilder();
        gb.Append("I want to fly from");
        gb.Append(cities);
        gb.Append("to");
        gb.Append(cities);

        // Construct a Grammar object and load it to the recognizer.
        Grammar cityChooser = new Grammar(gb);
        cityChooser.Name = ("City Chooser");
        recognizer.LoadGrammarAsync(cityChooser);

        // Attach event handlers.
        recognizer.SpeechDetected +=
          new EventHandler<SpeechDetectedEventArgs>(
            SpeechDetectedHandler);
        recognizer.SpeechHypothesized +=
          new EventHandler<SpeechHypothesizedEventArgs>(
            SpeechHypothesizedHandler);
        recognizer.SpeechRecognitionRejected +=
          new EventHandler<SpeechRecognitionRejectedEventArgs>(
            SpeechRecognitionRejectedHandler);
        recognizer.SpeechRecognized +=
          new EventHandler<SpeechRecognizedEventArgs>(
            SpeechRecognizedHandler);
        recognizer.RecognizeCompleted +=
          new EventHandler<RecognizeCompletedEventArgs>(
            RecognizeCompletedHandler);

        // Assign input to the recognizer and start asynchronous
        // recognition.
        recognizer.SetInputToDefaultAudioDevice();

        completed = false;
        Console.WriteLine("Starting asynchronous recognition...");
        recognizer.RecognizeAsync(RecognizeMode.Multiple);

        // Wait 30 seconds, and then cancel asynchronous recognition.
        Thread.Sleep(TimeSpan.FromSeconds(30));
        recognizer.RecognizeAsyncCancel();

        // Wait for the operation to complete.
        while (!completed)
        {
          Thread.Sleep(333);
        }
        Console.WriteLine("Done.");
      }

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

    // Handle the SpeechDetected event.
    static void SpeechDetectedHandler(object sender, SpeechDetectedEventArgs e)
    {
      Console.WriteLine(" In SpeechDetectedHandler:");
      Console.WriteLine(" - AudioPosition = {0}", e.AudioPosition);
    }

    // Handle the SpeechHypothesized event.
    static void SpeechHypothesizedHandler(
      object sender, SpeechHypothesizedEventArgs e)
    {
      Console.WriteLine(" In SpeechHypothesizedHandler:");

      string grammarName = "<not available>";
      string resultText = "<not available>";
      if (e.Result != null)
      {
        if (e.Result.Grammar != null)
        {
          grammarName = e.Result.Grammar.Name;
        }
        resultText = e.Result.Text;
      }

      Console.WriteLine(" - Grammar Name = {0}; Result Text = {1}",
        grammarName, resultText);
    }

    // Handle the SpeechRecognitionRejected event.
    static void SpeechRecognitionRejectedHandler(
      object sender, SpeechRecognitionRejectedEventArgs e)
    {
      Console.WriteLine(" In SpeechRecognitionRejectedHandler:");

      string grammarName = "<not available>";
      string resultText = "<not available>";
      if (e.Result != null)
      {
        if (e.Result.Grammar != null)
        {
          grammarName = e.Result.Grammar.Name;
        }
        resultText = e.Result.Text;
      }

      Console.WriteLine(" - Grammar Name = {0}; Result Text = {1}",
        grammarName, resultText);
    }

    // Handle the SpeechRecognized event.
    static void SpeechRecognizedHandler(
      object sender, SpeechRecognizedEventArgs e)
    {
      Console.WriteLine(" In SpeechRecognizedHandler.");

      string grammarName = "<not available>";
      string resultText = "<not available>";
      if (e.Result != null)
      {
        if (e.Result.Grammar != null)
        {
          grammarName = e.Result.Grammar.Name;
        }
        resultText = e.Result.Text;
      }

      Console.WriteLine(" - Grammar Name = {0}; Result Text = {1}",
        grammarName, resultText);
    }

    // Handle the RecognizeCompleted event.
    static void RecognizeCompletedHandler(
      object sender, RecognizeCompletedEventArgs e)
    {
      Console.WriteLine(" In RecognizeCompletedHandler.");

      if (e.Error != null)
      {
        Console.WriteLine(
          " - Error occurred during recognition: {0}", e.Error);
        return;
      }
      if (e.InitialSilenceTimeout || e.BabbleTimeout)
      {
        Console.WriteLine(
          " - BabbleTimeout = {0}; InitialSilenceTimeout = {1}",
          e.BabbleTimeout, e.InitialSilenceTimeout);
        return;
      }
      if (e.InputStreamEnded)
      {
        Console.WriteLine(
          " - AudioPosition = {0}; InputStreamEnded = {1}",
          e.AudioPosition, e.InputStreamEnded);
      }
      if (e.Result != null)
      {
        Console.WriteLine(
          " - Grammar = {0}; Text = {1}; Confidence = {2}",
          e.Result.Grammar.Name, e.Result.Text, e.Result.Confidence);
        Console.WriteLine(" - AudioPosition = {0}", e.AudioPosition);
      }
      else
      {
        Console.WriteLine(" - No result.");
      }

      completed = true;
    }
  }
}

Hinweise

Wenn mode ja Multiple, führt die Erkennung weiterhin asynchrone Erkennungsvorgänge aus, bis die RecognizeAsyncCancel Methode RecognizeAsyncStop aufgerufen wird.

Während eines Aufrufs dieser Methode kann die Erkennung die folgenden Ereignisse auslösen:

Um das Ergebnis eines asynchronen Erkennungsvorgangs SpeechRecognized abzurufen, fügen Sie einen Ereignishandler an das Ereignis der Erkennung an. Die Erkennung löst dieses Ereignis aus, wenn es erfolgreich einen synchronen oder asynchronen Erkennungsvorgang abgeschlossen hat. Wenn die Erkennung nicht erfolgreich war, lautet die Result Eigenschaft für RecognizeCompletedEventArgs das Objekt, auf die Sie im Handler für das RecognizeCompleted Ereignis zugreifen können, .null

Aus folgenden Gründen kann ein asynchroner Erkennungsvorgang fehlschlagen:

  • Die Spracherkennung wird nicht erkannt, bevor die Timeoutintervalle für die oder InitialSilenceTimeout die BabbleTimeout Eigenschaften ablaufen.

  • Das Erkennungsmodul erkennt die Sprache, findet jedoch keine Übereinstimmungen in einem der geladenen und aktivierten Grammar Objekte.

Verwenden Sie zum Ausführen der synchronen Erkennung eine der Recognize Methoden.

Weitere Informationen

Gilt für: