SpeechRecognitionEngine.RecognizeAsync Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Запускает асинхронную операцию распознавания речи.
Перегрузки
| Имя | Описание |
|---|---|
| RecognizeAsync() |
Выполняет одну асинхронную операцию распознавания речи. |
| RecognizeAsync(RecognizeMode) |
Выполняет одну или несколько асинхронных операций распознавания речи. |
Комментарии
Эти методы выполняют одно или несколько операций асинхронного распознавания. Распознаватель выполняет каждую операцию в отношении загруженных и включенных грамматик распознавания речи.
Во время вызова этого метода распознаватель может вызвать следующие события:
SpeechDetected. Вызывается, когда распознаватель обнаруживает входные данные, которые он может идентифицировать как речь.
SpeechHypothesized. Вызывается при создании неоднозначного совпадения с одной из активных грамматик.
SpeechRecognitionRejected или SpeechRecognized. Вызывается при завершении операции распознавания распознавателя.
RecognizeCompleted. Вызывается после RecognizeAsync завершения операции.
Чтобы получить результат асинхронной операции распознавания, подключите обработчик событий к событию распознавателя SpeechRecognized . Распознаватель вызывает это событие всякий раз, когда он успешно завершает синхронную или асинхронную операцию распознавания. Если распознавание не выполнено, Result свойство объекта RecognizeCompletedEventArgs , к которому можно получить доступ в обработчике RecognizeCompleted события, будет null.
Операция асинхронного распознавания может завершиться ошибкой по следующим причинам:
Речь не обнаруживается до истечения срока действия интервала времени ожидания для BabbleTimeout свойств или InitialSilenceTimeout свойств.
Модуль распознавания обнаруживает речь, но не находит совпадений ни в одном из загруженных и включенных Grammar объектов.
Перед SpeechRecognitionEngine выполнением распознавания должен быть загружен хотя бы один Grammar объект. Чтобы загрузить грамматику распознавания речи, используйте LoadGrammar или LoadGrammarAsync метод.
Чтобы изменить способ обработки времени распознавания речи или молчания в отношении распознавания, использования BabbleTimeoutсвойств InitialSilenceTimeoutEndSilenceTimeoutи EndSilenceTimeoutAmbiguous свойств, распознавателя.
Чтобы выполнить синхронное распознавание, используйте один из Recognize методов.
RecognizeAsync()
- Исходный код:
- SpeechRecognitionEngine.cs
- Исходный код:
- SpeechRecognitionEngine.cs
- Исходный код:
- SpeechRecognitionEngine.cs
- Исходный код:
- SpeechRecognitionEngine.cs
Выполняет одну асинхронную операцию распознавания речи.
public:
void RecognizeAsync();
public void RecognizeAsync();
member this.RecognizeAsync : unit -> unit
Public Sub RecognizeAsync ()
Примеры
В следующем примере показана часть консольного приложения, демонстрирующего базовое асинхронное распознавание речи. В этом примере создается DictationGrammarобъект, загружает его в распознаватель речи в процессе и выполняет одну асинхронную операцию распознавания. Обработчики событий включаются для демонстрации событий, которые распознаватель вызывает во время операции.
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 a grammar for choosing cities for a flight.
Choices cities = new Choices(new string[]
{ "Los Angeles", "New York", "Chicago", "San Francisco", "Miami", "Dallas" });
GrammarBuilder gb = new GrammarBuilder();
gb.Append("I want to fly from");
gb.Append(cities);
gb.Append("to");
gb.Append(cities);
// Construct a Grammar object and load it to the recognizer.
Grammar cityChooser = new Grammar(gb);
cityChooser.Name = ("City Chooser");
recognizer.LoadGrammarAsync(cityChooser);
// 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);
// Assign input to the recognizer and start an asynchronous
// recognition operation.
recognizer.SetInputToDefaultAudioDevice();
completed = false;
Console.WriteLine("Starting asynchronous recognition...");
recognizer.RecognizeAsync();
// 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.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);
Console.WriteLine(" - AudioPosition = {0}", e.AudioPosition);
}
else
{
Console.WriteLine(" - No result.");
}
completed = true;
}
}
}
Комментарии
Этот метод выполняет одну асинхронную операцию распознавания. Распознаватель выполняет операцию с загруженными и включенными грамматиками распознавания речи.
Во время вызова этого метода распознаватель может вызвать следующие события:
SpeechDetected. Вызывается, когда распознаватель обнаруживает входные данные, которые он может идентифицировать как речь.
SpeechHypothesized. Вызывается при создании неоднозначного совпадения с одной из активных грамматик.
SpeechRecognitionRejected или SpeechRecognized. Вызывается при завершении операции распознавания распознавателя.
RecognizeCompleted. Вызывается после RecognizeAsync завершения операции.
Чтобы получить результат асинхронной операции распознавания, подключите обработчик событий к событию распознавателя SpeechRecognized . Распознаватель вызывает это событие всякий раз, когда он успешно завершает синхронную или асинхронную операцию распознавания. Если распознавание не выполнено, Result свойство объекта RecognizeCompletedEventArgs , к которому можно получить доступ в обработчике RecognizeCompleted события, будет null.
Чтобы выполнить синхронное распознавание, используйте один из Recognize методов.
Этот метод сохраняет в задаче все исключения без использования, которые может вызывать синхронный аналог метода. Если исключение хранится в возвращаемой задаче, это исключение будет создано при ожидании задачи. Исключения использования, такие как ArgumentException, по-прежнему выбрасываются синхронно. Сведения о сохраненных исключениях см. в исключениях, создаваемых Recognize().
См. также раздел
- BabbleTimeout
- InitialSilenceTimeout
- EndSilenceTimeout
- EndSilenceTimeoutAmbiguous
- SpeechDetected
- SpeechHypothesized
- SpeechRecognitionRejected
- SpeechRecognized
- RecognizeCompleted
- Recognize()
- EmulateRecognizeAsync(String)
Применяется к
RecognizeAsync(RecognizeMode)
- Исходный код:
- SpeechRecognitionEngine.cs
- Исходный код:
- SpeechRecognitionEngine.cs
- Исходный код:
- SpeechRecognitionEngine.cs
- Исходный код:
- SpeechRecognitionEngine.cs
Выполняет одну или несколько асинхронных операций распознавания речи.
public:
void RecognizeAsync(System::Speech::Recognition::RecognizeMode mode);
public void RecognizeAsync(System.Speech.Recognition.RecognizeMode mode);
member this.RecognizeAsync : System.Speech.Recognition.RecognizeMode -> unit
Public Sub RecognizeAsync (mode As RecognizeMode)
Параметры
- mode
- RecognizeMode
Указывает, следует ли выполнять одну или несколько операций распознавания.
Примеры
В следующем примере показана часть консольного приложения, демонстрирующего базовое асинхронное распознавание речи. В этом примере создается DictationGrammar, загружается в распознаватель речи в процессе и выполняется несколько асинхронных операций распознавания. Асинхронные операции отменяются через 30 секунд. Обработчики событий включаются для демонстрации событий, которые распознаватель вызывает во время операции.
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 a grammar for choosing cities for a flight.
Choices cities = new Choices(new string[] { "Los Angeles", "New York", "Chicago", "San Francisco", "Miami", "Dallas" });
GrammarBuilder gb = new GrammarBuilder();
gb.Append("I want to fly from");
gb.Append(cities);
gb.Append("to");
gb.Append(cities);
// Construct a Grammar object and load it to the recognizer.
Grammar cityChooser = new Grammar(gb);
cityChooser.Name = ("City Chooser");
recognizer.LoadGrammarAsync(cityChooser);
// 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);
// Assign input to the recognizer and start asynchronous
// recognition.
recognizer.SetInputToDefaultAudioDevice();
completed = false;
Console.WriteLine("Starting asynchronous recognition...");
recognizer.RecognizeAsync(RecognizeMode.Multiple);
// Wait 30 seconds, and then cancel asynchronous recognition.
Thread.Sleep(TimeSpan.FromSeconds(30));
recognizer.RecognizeAsyncCancel();
// 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.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);
Console.WriteLine(" - AudioPosition = {0}", e.AudioPosition);
}
else
{
Console.WriteLine(" - No result.");
}
completed = true;
}
}
}
Комментарии
Если mode это Multipleтак, распознаватель продолжает выполнять асинхронные операции распознавания до вызова RecognizeAsyncCancel метода или RecognizeAsyncStop метода.
Во время вызова этого метода распознаватель может вызвать следующие события:
SpeechDetected. Вызывается, когда распознаватель обнаруживает входные данные, которые он может идентифицировать как речь.
SpeechHypothesized. Вызывается при создании неоднозначного совпадения с одной из активных грамматик.
SpeechRecognitionRejected или SpeechRecognized. Вызывается при завершении операции распознавания распознавателя.
RecognizeCompleted. Вызывается после RecognizeAsync завершения операции.
Чтобы получить результат асинхронной операции распознавания, подключите обработчик событий к событию распознавателя SpeechRecognized . Распознаватель вызывает это событие всякий раз, когда он успешно завершает синхронную или асинхронную операцию распознавания. Если распознавание не выполнено, Result свойство объекта RecognizeCompletedEventArgs , к которому можно получить доступ в обработчике RecognizeCompleted события, будет null.
Операция асинхронного распознавания может завершиться ошибкой по следующим причинам:
Речь не обнаруживается до истечения срока действия интервала времени ожидания для BabbleTimeout свойств или InitialSilenceTimeout свойств.
Модуль распознавания обнаруживает речь, но не находит совпадений ни в одном из загруженных и включенных Grammar объектов.
Чтобы выполнить синхронное распознавание, используйте один из Recognize методов.
См. также раздел
- BabbleTimeout
- InitialSilenceTimeout
- EndSilenceTimeout
- EndSilenceTimeoutAmbiguous
- SpeechDetected
- SpeechHypothesized
- SpeechRecognitionRejected
- SpeechRecognized
- RecognizeCompleted
- Recognize()
- EmulateRecognizeAsync(String)