SpeechRecognitionEngine.RecognizerUpdateReached 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 eine laufende SpeechRecognitionEngine Unterbrechung angehalten wird, um Änderungen zu akzeptieren.
public:
event EventHandler<System::Speech::Recognition::RecognizerUpdateReachedEventArgs ^> ^ RecognizerUpdateReached;
public event EventHandler<System.Speech.Recognition.RecognizerUpdateReachedEventArgs>? RecognizerUpdateReached;
public event EventHandler<System.Speech.Recognition.RecognizerUpdateReachedEventArgs> RecognizerUpdateReached;
member this.RecognizerUpdateReached : EventHandler<System.Speech.Recognition.RecognizerUpdateReachedEventArgs>
Public Custom Event RecognizerUpdateReached As EventHandler(Of RecognizerUpdateReachedEventArgs)
Public Event RecognizerUpdateReached As EventHandler(Of RecognizerUpdateReachedEventArgs)
Ereignistyp
Beispiele
Das folgende Beispiel zeigt eine Konsolenanwendung, die Objekte lädt und entlädt Grammar . Die Anwendung verwendet die RequestRecognizerUpdate Methode, um das Spracherkennungsmodul anzufordern, anzuhalten, damit es eine Aktualisierung erhalten kann. Anschließend lädt oder entlädt die Anwendung ein Grammar Objekt.
Bei jedem Update schreibt ein Handler für RecognizerUpdateReached das Ereignis den Namen und den Status der aktuell geladenen Grammar Objekte in die Konsole. Da Grammatiken geladen und entladen werden, erkennt die Anwendung zunächst die Namen der Farmtiere, dann die Namen der Farmtiere und die Namen von Früchten, dann nur die Namen der Früchte.
using System;
using System.Speech.Recognition;
using System.Collections.Generic;
using System.Threading;
namespace SampleRecognition
{
class Program
{
private static SpeechRecognitionEngine recognizer;
public static void Main(string[] args)
{
// Initialize an in-process speech recognition engine and configure its input.
using (recognizer = new SpeechRecognitionEngine(new System.Globalization.CultureInfo("en-US")))
{
recognizer.SetInputToDefaultAudioDevice();
// Create the first grammar - Farm.
Choices animals = new Choices(new string[] { "cow", "pig", "goat" });
GrammarBuilder farm = new GrammarBuilder(animals);
Grammar farmAnimals = new Grammar(farm);
farmAnimals.Name = "Farm";
// Create the second grammar - Fruit.
Choices fruit = new Choices(new string[] { "apples", "peaches", "oranges" });
GrammarBuilder favorite = new GrammarBuilder(fruit);
Grammar favoriteFruit = new Grammar(favorite);
favoriteFruit.Name = "Fruit";
// Attach event handlers.
recognizer.SpeechRecognized +=
new EventHandler<SpeechRecognizedEventArgs>(recognizer_SpeechRecognized);
recognizer.RecognizerUpdateReached +=
new EventHandler<RecognizerUpdateReachedEventArgs>(recognizer_RecognizerUpdateReached);
recognizer.SpeechRecognitionRejected +=
new EventHandler<SpeechRecognitionRejectedEventArgs>(recognizer_SpeechRecognitionRejected);
// Load the Farm grammar.
recognizer.LoadGrammar(farmAnimals);
// Start asynchronous, continuous recognition.
recognizer.RecognizeAsync(RecognizeMode.Multiple);
Console.WriteLine("Starting asynchronous, continuous recognition");
Console.WriteLine(" Farm grammar is loaded and enabled.");
// Pause to recognize farm animals.
Thread.Sleep(7000);
Console.WriteLine();
// Request an update and load the Fruit grammar.
recognizer.RequestRecognizerUpdate();
recognizer.LoadGrammarAsync(favoriteFruit);
Thread.Sleep(7000);
// Request an update and unload the Farm grammar.
recognizer.RequestRecognizerUpdate();
recognizer.UnloadGrammar(farmAnimals);
Thread.Sleep(7000);
}
// Keep the console window open.
Console.WriteLine();
Console.WriteLine("Press any key to exit...");
Console.ReadKey();
}
// At the update, get the names and enabled status of the currently loaded grammars.
public static void recognizer_RecognizerUpdateReached(
object sender, RecognizerUpdateReachedEventArgs e)
{
Console.WriteLine();
Console.WriteLine("Update reached:");
Thread.Sleep(1000);
string qualifier;
List<Grammar> grammars = new List<Grammar>(recognizer.Grammars);
foreach (Grammar g in grammars)
{
qualifier = (g.Enabled) ? "enabled" : "disabled";
Console.WriteLine(" {0} grammar is loaded and {1}.",
g.Name, qualifier);
}
}
// Write the text of the recognized phrase to the console.
static void recognizer_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
{
Console.WriteLine(" Speech recognized: " + e.Result.Text);
}
// Write a message to the console when recognition fails.
static void recognizer_SpeechRecognitionRejected(object sender, SpeechRecognitionRejectedEventArgs e)
{
Console.WriteLine(" Recognition attempt failed");
}
}
}
Hinweise
Anwendungen müssen zum Anhalten einer ausgeführten Instanz vor SpeechRecognitionEngine dem Ändern der Einstellungen oder der zugehörigen Grammar Objekte verwendet RequestRecognizerUpdate werden. Das SpeechRecognitionEngine Ereignis löst dieses Ereignis aus, wenn es bereit ist, Änderungen anzunehmen.
Beispielsweise können Sie objekte SpeechRecognitionEngine laden, entladen, aktivieren und deaktivieren und Werte für die BabbleTimeoutEigenschaften und InitialSilenceTimeoutEndSilenceTimeout Eigenschaften laden, entladen und deaktivierenGrammar. Weitere Informationen finden Sie in der RequestRecognizerUpdate Methode.
Wenn Sie einen RecognizerUpdateReached Delegaten erstellen, identifizieren Sie die Methode, die das Ereignis behandelt. Um das Ereignis dem Ereignishandler zuzuordnen, fügen Sie dem Ereignis eine Instanz des Delegaten hinzu. Der Ereignishandler wird immer dann aufgerufen, wenn das Ereignis auftritt, es sei denn, Sie entfernen den Delegaten.