Sdílet prostřednictvím


SpeechRecognitionEngine.RecognizeAsync Metoda

Definice

Spustí asynchronní operaci rozpoznávání řeči.

Přetížení

Name Description
RecognizeAsync()

Provede jednu asynchronní operaci rozpoznávání řeči.

RecognizeAsync(RecognizeMode)

Provádí jednu nebo více asynchronních operací rozpoznávání řeči.

Poznámky

Tyto metody provádějí jedno nebo více asynchronních operací rozpoznávání. Rozpoznávání provádí každou operaci s načtenými a povolenými gramatikami rozpoznávání řeči.

Během volání této metody může rozpoznávání vyvolat následující události:

Pokud chcete načíst výsledek operace asynchronního rozpoznávání, připojte obslužnou rutinu události k události rozpoznávání SpeechRecognized . Rozpoznávání vyvolá tuto událost vždy, když úspěšně dokončí synchronní nebo asynchronní operaci rozpoznávání. Pokud rozpoznávání nebylo úspěšné, Result vlastnost objektu RecognizeCompletedEventArgs , ke které můžete přistupovat v obslužné rutině RecognizeCompleted události, bude null.

Operace asynchronního rozpoznávání může selhat z následujících důvodů:

RecognizeAsync()

Zdroj:
SpeechRecognitionEngine.cs
Zdroj:
SpeechRecognitionEngine.cs
Zdroj:
SpeechRecognitionEngine.cs
Zdroj:
SpeechRecognitionEngine.cs

Provede jednu asynchronní operaci rozpoznávání řeči.

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

Příklady

Následující příklad ukazuje část konzolové aplikace, která demonstruje základní asynchronní rozpoznávání řeči. Příklad vytvoří DictationGrammar, načte ho do rozpoznávání řeči v procesu a provede jednu asynchronní operaci rozpoznávání. Obslužné rutiny událostí jsou zahrnuty k předvedení událostí, které rozpoznávání vyvolává během operace.

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

Poznámky

Tato metoda provádí jednu asynchronní operaci rozpoznávání. Rozpoznávání provede operaci s načtenými a povolenými gramatikami rozpoznávání řeči.

Během volání této metody může rozpoznávání vyvolat následující události:

Pokud chcete načíst výsledek operace asynchronního rozpoznávání, připojte obslužnou rutinu události k události rozpoznávání SpeechRecognized . Rozpoznávání vyvolá tuto událost vždy, když úspěšně dokončí synchronní nebo asynchronní operaci rozpoznávání. Pokud rozpoznávání nebylo úspěšné, Result vlastnost objektu RecognizeCompletedEventArgs , ke které můžete přistupovat v obslužné rutině RecognizeCompleted události, bude null.

Pokud chcete provést synchronní rozpoznávání, použijte jednu z Recognize metod.

Tato metoda ukládá do úlohy všechny výjimky bez použití, které může vyvolat synchronní protějšek metody. Pokud je výjimka uložena do vrácené úlohy, tato výjimka bude vyvolána, když je úkol očekáván. Výjimky použití, například ArgumentException, jsou stále vyvolány synchronně. V případě uložených výjimek se podívejte na výjimky vyvolané Recognize().

Viz také

Platí pro

RecognizeAsync(RecognizeMode)

Zdroj:
SpeechRecognitionEngine.cs
Zdroj:
SpeechRecognitionEngine.cs
Zdroj:
SpeechRecognitionEngine.cs
Zdroj:
SpeechRecognitionEngine.cs

Provádí jednu nebo více asynchronních operací rozpoznávání řeči.

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)

Parametry

mode
RecognizeMode

Určuje, jestli se má provést jedna nebo více operací rozpoznávání.

Příklady

Následující příklad ukazuje část konzolové aplikace, která demonstruje základní asynchronní rozpoznávání řeči. Příklad vytvoří DictationGrammar, načte ho do rozpoznávání řeči v procesu a provede několik asynchronních operací rozpoznávání. Asynchronní operace se zruší po 30 sekundách. Obslužné rutiny událostí jsou zahrnuty k předvedení událostí, které rozpoznávání vyvolává během operace.

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

Poznámky

Pokud mode anoMultiple, rozpoznávací nástroj pokračuje v provádění asynchronních operací rozpoznávání, dokud RecognizeAsyncCancel není volána metoda.RecognizeAsyncStop

Během volání této metody může rozpoznávání vyvolat následující události:

Pokud chcete načíst výsledek operace asynchronního rozpoznávání, připojte obslužnou rutinu události k události rozpoznávání SpeechRecognized . Rozpoznávání vyvolá tuto událost vždy, když úspěšně dokončí synchronní nebo asynchronní operaci rozpoznávání. Pokud rozpoznávání nebylo úspěšné, Result vlastnost objektu RecognizeCompletedEventArgs , ke které můžete přistupovat v obslužné rutině RecognizeCompleted události, bude null.

Operace asynchronního rozpoznávání může selhat z následujících důvodů:

  • Před vypršením intervalů časového limitu BabbleTimeout nebo InitialSilenceTimeout vlastností se rozpoznávání řeči nezjistí.

  • Modul rozpoznávání rozpozná řeč, ale nenajde žádné shody v žádném z načtených a povolených Grammar objektů.

Pokud chcete provést synchronní rozpoznávání, použijte jednu z Recognize metod.

Viz také

Platí pro