Share via


SpeechRecognitionEngine.RecognizeAsync Yöntem

Tanım

Zaman uyumsuz bir konuşma tanıma işlemi başlatır.

Aşırı Yüklemeler

RecognizeAsync()

Tek, zaman uyumsuz bir konuşma tanıma işlemi gerçekleştirir.

RecognizeAsync(RecognizeMode)

Bir veya daha fazla zaman uyumsuz konuşma tanıma işlemi gerçekleştirir.

Açıklamalar

Bu yöntemler tek veya birden çok zaman uyumsuz tanıma işlemi gerçekleştirir. Tanıyıcı, yüklenen ve etkinleştirilen konuşma tanıma dil bilgilerinde her işlemi gerçekleştirir.

Bu yönteme yapılan bir çağrı sırasında, tanıyıcı aşağıdaki olayları tetikleyebilir:

Zaman uyumsuz bir tanıma işleminin sonucunu almak için, tanıyıcının SpeechRecognized olayına bir olay işleyicisi ekleyin. Tanıyıcı, zaman uyumlu veya zaman uyumsuz bir tanıma işlemini başarıyla tamamladığınızda bu olayı tetikler. Tanıma başarılı olmazsa, Result olay işleyicisinde erişebileceğiniz nesnesindeki RecognizeCompleted özelliği RecognizeCompletedEventArgs olurnull.

Zaman uyumsuz tanıma işlemi aşağıdaki nedenlerle başarısız olabilir:

RecognizeAsync()

Kaynak:
SpeechRecognitionEngine.cs
Kaynak:
SpeechRecognitionEngine.cs
Kaynak:
SpeechRecognitionEngine.cs

Tek, zaman uyumsuz bir konuşma tanıma işlemi gerçekleştirir.

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

Örnekler

Aşağıdaki örnekte, bir konsol uygulamasının temel zaman uyumsuz konuşma tanımayı gösteren bölümü gösterilmektedir. Örnek bir DictationGrammaroluşturur, bunu işlem içi konuşma tanıyıcısına yükler ve bir zaman uyumsuz tanıma işlemi gerçekleştirir. Olay işleyicileri, tanıyıcının işlem sırasında tetiklediğini olayları göstermek için dahil edilir.

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

Açıklamalar

Bu yöntem tek bir zaman uyumsuz tanıma işlemi gerçekleştirir. Tanıyıcı, yüklenen ve etkinleştirilen konuşma tanıma dil bilgilerine karşı işlemi gerçekleştirir.

Bu yönteme yapılan bir çağrı sırasında, tanıyıcı aşağıdaki olayları tetikleyebilir:

Zaman uyumsuz bir tanıma işleminin sonucunu almak için, tanıyıcının SpeechRecognized olayına bir olay işleyicisi ekleyin. Tanıyıcı, zaman uyumlu veya zaman uyumsuz bir tanıma işlemini başarıyla tamamladığınızda bu olayı tetikler. Tanıma başarılı olmazsa, Result olay işleyicisinde erişebileceğiniz nesnesindeki RecognizeCompleted özelliği RecognizeCompletedEventArgs olurnull.

Zaman uyumlu tanıma gerçekleştirmek için yöntemlerden birini Recognize kullanın.

Bu yöntem, yöntemin zaman uyumlu karşılık geleninin atabileceği tüm kullanım dışı özel durumları döndürdüğü görevde depolar. Döndürülen görevde bir özel durum depolanıyorsa, görev beklenirken bu özel durum oluşturulur. gibi ArgumentExceptionkullanım özel durumları yine de zaman uyumlu olarak oluşturulur. Depolanan özel durumlar için tarafından oluşan Recognize()özel durumlara bakın.

Ayrıca bkz.

Şunlara uygulanır

RecognizeAsync(RecognizeMode)

Kaynak:
SpeechRecognitionEngine.cs
Kaynak:
SpeechRecognitionEngine.cs
Kaynak:
SpeechRecognitionEngine.cs

Bir veya daha fazla zaman uyumsuz konuşma tanıma işlemi gerçekleştirir.

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)

Parametreler

mode
RecognizeMode

Bir veya birden çok tanıma işlemi gerçekleştirilip gerçekleştirilmeyeceğini gösterir.

Örnekler

Aşağıdaki örnekte, bir konsol uygulamasının temel zaman uyumsuz konuşma tanımayı gösteren bölümü gösterilmektedir. Örnek bir DictationGrammaroluşturur, bunu işlem içi konuşma tanıyıcısına yükler ve birden çok zaman uyumsuz tanıma işlemi gerçekleştirir. Zaman uyumsuz işlemler 30 saniye sonra iptal edilir. Olay işleyicileri, tanıyıcının işlem sırasında tetiklediğini olayları göstermek için dahil edilir.

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

Açıklamalar

ise modeMultiple, veya yöntemi çağrılana kadar tanıyıcı zaman uyumsuz tanıma işlemleri gerçekleştirmeye RecognizeAsyncCancelRecognizeAsyncStop devam eder.

Bu yönteme yapılan bir çağrı sırasında, tanıyıcı aşağıdaki olayları tetikleyebilir:

Zaman uyumsuz bir tanıma işleminin sonucunu almak için, tanıyıcının SpeechRecognized olayına bir olay işleyicisi ekleyin. Tanıyıcı, zaman uyumlu veya zaman uyumsuz bir tanıma işlemini başarıyla tamamladığınızda bu olayı tetikler. Tanıma başarılı olmazsa, Result olay işleyicisinde erişebileceğiniz nesnesindeki RecognizeCompleted özelliği RecognizeCompletedEventArgs olurnull.

Zaman uyumsuz tanıma işlemi aşağıdaki nedenlerle başarısız olabilir:

  • veya InitialSilenceTimeout özellikleri için BabbleTimeout zaman aşımı aralıklarının süresi dolmadan önce konuşma algılanmaz.

  • Tanıma altyapısı konuşmayı algılar ancak yüklü ve etkin Grammar nesnelerinden hiçbirinde eşleşme bulmaz.

Zaman uyumlu tanıma gerçekleştirmek için yöntemlerden birini Recognize kullanın.

Ayrıca bkz.

Şunlara uygulanır