Condividi tramite


SpeechRecognitionEngine.RecognizeAsyncStop Metodo

Definizione

Arresta il riconoscimento asincrono al termine dell'operazione di riconoscimento corrente.

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

Esempio

L'esempio seguente mostra parte di un'applicazione console che illustra l'uso del RecognizeAsyncStop metodo . L'esempio crea e carica una grammatica di riconoscimento vocale, avvia un'operazione di riconoscimento asincrona continua e quindi sospende 2 secondi prima di arrestare l'operazione. Il riconoscitore riceve l'input dal file, c:\temp\audioinput\sample.wav. I gestori eventi sono inclusi per dimostrare gli eventi generati dal riconoscitore durante l'operazione.

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 and load a dictation grammar.
        Grammar dictation = new DictationGrammar();
        dictation.Name = "Dictation Grammar";

        recognizer.LoadGrammar(dictation);

        // 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);

        // Begin asynchronous recognition from pre-recorded input.
        recognizer.SetInputToWaveFile(@"c:\temp\audioinput\sample.wav");

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

        // Wait 2 seconds and then stop the recognition operation.
        Thread.Sleep(TimeSpan.FromSeconds(2));
        recognizer.RecognizeAsyncStop();

        // 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.Cancelled)
      {
        Console.WriteLine(" - asynchronous operation canceled.");
      }
      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);
      }
      else
      {
        Console.WriteLine(" - No result.");
      }

      completed = true;
    }
  }
}

Commenti

Questo metodo finalizza il riconoscimento asincrono senza troncare l'input. Se l'operazione di riconoscimento asincrono corrente riceve input, il riconoscitore continua ad accettare l'input fino al completamento dell'operazione di riconoscimento corrente. Il riconoscitore genera l'evento RecognizeCompleted o EmulateRecognizeCompleted quando un'operazione asincrona viene arrestata e imposta la Cancelled proprietà di RecognizeCompletedEventArgs su true. Questo metodo arresta le operazioni asincrone avviate dai RecognizeAsync metodi e EmulateRecognizeAsync .

Per annullare immediatamente il riconoscimento asincrono con solo l'input esistente, usare il RecognizeAsyncCancel metodo .

Si applica a

Vedi anche