SpeechRecognitionEngine.RecognizeCompleted Ereignis
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Wird ausgelöst, wenn das SpeechRecognitionEngine einen asynchronen Erkennungsvorgang abschließt.
public:
event EventHandler<System::Speech::Recognition::RecognizeCompletedEventArgs ^> ^ RecognizeCompleted;
public event EventHandler<System.Speech.Recognition.RecognizeCompletedEventArgs> RecognizeCompleted;
member this.RecognizeCompleted : EventHandler<System.Speech.Recognition.RecognizeCompletedEventArgs>
Public Custom Event RecognizeCompleted As EventHandler(Of RecognizeCompletedEventArgs)
Public Event RecognizeCompleted As EventHandler(Of RecognizeCompletedEventArgs)
Ereignistyp
Beispiele
Im folgenden Beispiel werden Ausdrücke wie "Anzeigen der Liste der Künstler in der Kategorie Jazz" oder "Album gospel anzeigen" erkannt. Im Beispiel wird ein Handler für das RecognizeCompleted Ereignis verwendet, um Informationen zu den Erkennungsergebnissen in der Konsole anzuzeigen.
using System;
using System.Speech.Recognition;
namespace SampleRecognition
{
class Program
{
static void Main(string[] args)
// Initialize an in-process speech recognition engine.
{
using (SpeechRecognitionEngine recognizer =
new SpeechRecognitionEngine())
{
// Create lists of alternative choices.
Choices listTypes = new Choices(new string[] { "albums", "artists" });
Choices genres = new Choices(new string[] {
"blues", "classical", "gospel", "jazz", "rock" });
// Create a GrammarBuilder object and assemble the grammar components.
GrammarBuilder mediaMenu = new GrammarBuilder("Display");
mediaMenu.Append("the list of", 0, 1);
mediaMenu.Append(listTypes);
mediaMenu.Append("in the", 0, 1);
mediaMenu.Append(genres);
mediaMenu.Append("category.", 0, 1);
// Build a Grammar object from the GrammarBuilder.
Grammar mediaMenuGrammar = new Grammar(mediaMenu);
mediaMenuGrammar.Name = "Media Chooser";
// Attach event handlers.
recognizer.RecognizeCompleted +=
new EventHandler<RecognizeCompletedEventArgs>(recognizer_RecognizeCompleted);
recognizer.LoadGrammarCompleted +=
new EventHandler<LoadGrammarCompletedEventArgs>(recognizer_LoadGrammarCompleted);
// Load the grammar object to the recognizer.
recognizer.LoadGrammarAsync(mediaMenuGrammar);
// Set the input to the recognizer.
recognizer.SetInputToDefaultAudioDevice();
// Start asynchronous, continuous recognition.
recognizer.RecognizeAsync();
// Keep the console window open.
Console.ReadLine();
}
}
// Handle the RecognizeCompleted event.
static void recognizer_RecognizeCompleted(object sender, RecognizeCompletedEventArgs e)
{
if (e.Error != null)
{
Console.WriteLine(
"RecognizeCompleted, error occurred during recognition: {0}", e.Error);
return;
}
if (e.InitialSilenceTimeout || e.BabbleTimeout)
{
Console.WriteLine(
"RecognizeCompleted: BabbleTimeout({0}), InitialSilenceTimeout({1}).",
e.BabbleTimeout, e.InitialSilenceTimeout);
return;
}
if (e.InputStreamEnded)
{
Console.WriteLine(
"RecognizeCompleted: AudioPosition({0}), InputStreamEnded({1}).",
e.AudioPosition, e.InputStreamEnded);
}
if (e.Result != null)
{
Console.WriteLine("RecognizeCompleted:");
Console.WriteLine(" Grammar: " + e.Result.Grammar.Name);
Console.WriteLine(" Recognized text: " + e.Result.Text);
Console.WriteLine(" Confidence score: " + e.Result.Confidence);
Console.WriteLine(" Audio position: " + e.AudioPosition);
}
else
{
Console.WriteLine("RecognizeCompleted: No result.");
}
Console.WriteLine();
Console.WriteLine("Press any key to exit...");
Console.ReadKey();
}
// Handle the LoadGrammarCompleted event.
static void recognizer_LoadGrammarCompleted(object sender, LoadGrammarCompletedEventArgs e)
{
Console.WriteLine("Grammar loaded: " + e.Grammar.Name);
}
}
}
Hinweise
Die SpeechRecognitionEngine -Methode des RecognizeAsync Objekts initiiert einen asynchronen Erkennungsvorgang. Wenn die Erkennung den asynchronen Vorgang abgeschlossen hat, löst sie dieses Ereignis aus.
Mithilfe des Handlers für das RecognizeCompleted -Ereignis können Sie auf die RecognitionResult im RecognizeCompletedEventArgs -Objekt zugreifen. Wenn die Erkennung nicht erfolgreich war, RecognitionResult lautet null
. Um zu bestimmen, ob ein Timeout oder eine Unterbrechung der Audioeingabe zu einem Fehler bei der Erkennung geführt hat, können Sie auf die Eigenschaften für InitialSilenceTimeout, BabbleTimeoutoder InputStreamEndedzugreifen.
Weitere Informationen finden Sie in den Ausführungen zur RecognizeCompletedEventArgs-Klasse.
Um Details zu den besten abgelehnten Anerkennungskandidaten zu erhalten, fügen Sie einen Handler für das SpeechRecognitionRejected Ereignis an.
Beim Erstellen eines RecognizeCompleted-Delegaten bestimmen Sie die Methode für die Ereignisbehandlung. Um dem Ereignishandler das Ereignis zuzuordnen, fügen Sie dem Ereignis eine Instanz des Delegaten hinzu. Der Ereignishandler wird bei jedem Eintreten des Ereignisses aufgerufen, sofern der Delegat nicht entfernt wird. Weitere Informationen zu Ereignishandlerdelegaten finden Sie unter Ereignisse und Delegaten.