SpeechRecognitionEngine.RecognizeAsyncStop Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Po dokončení aktuální operace rozpoznávání zastaví asynchronní rozpoznávání.
public:
void RecognizeAsyncStop();
public void RecognizeAsyncStop();
member this.RecognizeAsyncStop : unit -> unit
Public Sub RecognizeAsyncStop ()
Příklady
Následující příklad ukazuje část konzolové aplikace, která demonstruje použití RecognizeAsyncStop metody. Příklad vytvoří a načte gramatiku rozpoznávání řeči, zahájí pokračování asynchronní operace rozpoznávání a pak se pozastaví 2 sekundy před zastavením operace. Rozpoznávání přijímá vstup ze souboru c:\temp\audioinput\sample.wav. 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 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;
}
}
}
Poznámky
Tato metoda finalizuje asynchronní rozpoznávání bez zkrácení vstupu. Pokud aktuální asynchronní operace rozpoznávání přijímá vstup, rozpoznávací modul pokračuje v přijímání vstupu, dokud se nedokončí aktuální operace rozpoznávání. Rozpoznávání vyvolá RecognizeCompleted událost nebo EmulateRecognizeCompleted událost při zastavení asynchronní operace a nastaví Cancelled vlastnost RecognizeCompletedEventArgs na truehodnotu . Tato metoda zastaví asynchronní operace iniciované metodami RecognizeAsync a EmulateRecognizeAsync metodami.
Pokud chcete okamžitě zrušit asynchronní rozpoznávání pouze se stávajícím vstupem, použijte metodu RecognizeAsyncCancel .