SpeechRecognitionEngine.LoadGrammarCompleted Событие
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Вызывается после SpeechRecognitionEngine завершения асинхронной загрузки Grammar объекта.
public:
event EventHandler<System::Speech::Recognition::LoadGrammarCompletedEventArgs ^> ^ LoadGrammarCompleted;
public event EventHandler<System.Speech.Recognition.LoadGrammarCompletedEventArgs>? LoadGrammarCompleted;
public event EventHandler<System.Speech.Recognition.LoadGrammarCompletedEventArgs> LoadGrammarCompleted;
member this.LoadGrammarCompleted : EventHandler<System.Speech.Recognition.LoadGrammarCompletedEventArgs>
Public Custom Event LoadGrammarCompleted As EventHandler(Of LoadGrammarCompletedEventArgs)
Public Event LoadGrammarCompleted As EventHandler(Of LoadGrammarCompletedEventArgs)
Тип события
Примеры
В следующем примере создается распознаватель речи в процессе, а затем создается два типа грамматики для распознавания определенных слов и принятия свободного диктовки. В примере создается Grammar объект из каждой из завершенных грамматик распознавания речи, а затем асинхронно загружает Grammar объекты в SpeechRecognitionEngine экземпляр. Обработчики для распознавателя LoadGrammarCompleted и SpeechRecognized событий записи в консоль имя Grammar объекта, который использовался для выполнения распознавания и текста результата распознавания соответственно.
using System;
using System.Speech.Recognition;
namespace SampleRecognition
{
class Program
{
private static SpeechRecognitionEngine recognizer;
public static void Main(string[] args)
{
// Initialize an in-process speech recognition engine and set its input.
recognizer = new SpeechRecognitionEngine();
recognizer.SetInputToDefaultAudioDevice();
// Add a handler for the LoadGrammarCompleted event.
recognizer.LoadGrammarCompleted +=
new EventHandler<LoadGrammarCompletedEventArgs>(recognizer_LoadGrammarCompleted);
// Add a handler for the SpeechRecognized event.
recognizer.SpeechRecognized +=
new EventHandler<SpeechRecognizedEventArgs>(recognizer_SpeechRecognized);
// Create the "yesno" grammar.
Choices yesChoices = new Choices(new string[] { "yes", "yup", "yeah" });
SemanticResultValue yesValue =
new SemanticResultValue(yesChoices, (bool)true);
Choices noChoices = new Choices(new string[] { "no", "nope", "neah" });
SemanticResultValue noValue =
new SemanticResultValue(noChoices, (bool)false);
SemanticResultKey yesNoKey =
new SemanticResultKey("yesno", new Choices(new GrammarBuilder[] { yesValue, noValue }));
Grammar yesnoGrammar = new Grammar(yesNoKey);
yesnoGrammar.Name = "yesNo";
// Create the "done" grammar.
Grammar doneGrammar =
new Grammar(new Choices(new string[] { "done", "exit", "quit", "stop" }));
doneGrammar.Name = "Done";
// Create a dictation grammar.
Grammar dictation = new DictationGrammar();
dictation.Name = "Dictation";
// Load grammars to the recognizer.
recognizer.LoadGrammarAsync(yesnoGrammar);
recognizer.LoadGrammarAsync(doneGrammar);
recognizer.LoadGrammarAsync(dictation);
// Start asynchronous, continuous recognition.
recognizer.RecognizeAsync(RecognizeMode.Multiple);
// Keep the console window open.
Console.ReadLine();
}
// Handle the LoadGrammarCompleted event.
static void recognizer_LoadGrammarCompleted(object sender, LoadGrammarCompletedEventArgs e)
{
string grammarName = e.Grammar.Name;
bool grammarLoaded = e.Grammar.Loaded;
if (e.Error != null)
{
Console.WriteLine("LoadGrammar for {0} failed with a {1}.",
grammarName, e.Error.GetType().Name);
// Add exception handling code here.
}
Console.WriteLine("Grammar {0} {1} loaded.",
grammarName, (grammarLoaded) ? "is" : "is not");
}
// Handle the SpeechRecognized event.
static void recognizer_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
{
Console.WriteLine("Grammar({0}): {1}", e.Result.Grammar.Name, e.Result.Text);
// Add event handler code here.
}
}
}
Комментарии
Метод распознавателя LoadGrammarAsync инициирует асинхронную операцию. Вызывает SpeechRecognitionEngine это событие при завершении операции. Чтобы получить Grammar объект, загруженный распознавательом, используйте Grammar свойство связанного LoadGrammarCompletedEventArgsобъекта. Чтобы получить текущие Grammar объекты, загруженные распознавательом, используйте свойство распознавателя Grammars .
Если распознаватель запущен, приложения должны использовать RequestRecognizerUpdate для приостановки обработчика распознавания речи перед загрузкой, выгрузкой, включением или отключением грамматики.
При создании делегата LoadGrammarCompleted вы определите метод, который будет обрабатывать событие. Чтобы связать событие с обработчиком событий, добавьте экземпляр делегата в событие. Обработчик событий вызывается всякий раз, когда происходит событие, если вы не удалите делегат. Дополнительные сведения о делегатах обработчика событий см. в разделе "События и делегаты".