SpeechRecognitionEngine.RecognizeAsync Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Запускает асинхронную операцию распознавания речи.
Перегрузки
RecognizeAsync() |
Выполняет одиночную, асинхронную операцию распознавания речи. |
RecognizeAsync(RecognizeMode) |
Выполняет одну или несколько асинхронных операций распознавания речи. |
Комментарии
Эти методы выполняют одну или несколько асинхронных операций распознавания. Распознаватель выполняет каждую операцию с загруженными и включенными грамматиками распознавания речи.
Во время вызова этого метода распознаватель может вызвать следующие события:
SpeechDetected. Возникает, когда распознаватель обнаруживает входные данные, которые он может идентифицировать как речь.
SpeechHypothesized. Возникает, когда входные данные создают неоднозначное совпадение с одной из активных грамматик.
SpeechRecognitionRejected или SpeechRecognized. Возникает, когда распознаватель завершает операцию распознавания.
RecognizeCompleted. Вызывается по RecognizeAsync завершении операции.
Чтобы получить результат операции асинхронного распознавания, подключите обработчик событий к событию распознавателя SpeechRecognized . Распознаватель вызывает это событие всякий раз, когда успешно завершает синхронную или асинхронную операцию распознавания. Если распознавание не было успешным, Result свойство RecognizeCompletedEventArgs объекта , доступ к которому можно получить в обработчике RecognizeCompleted события, будет иметь значение null
.
Операция асинхронного распознавания может завершиться ошибкой по следующим причинам:
Речь не обнаруживается до истечения времени ожидания для BabbleTimeout свойств или InitialSilenceTimeout .
Модуль распознавания обнаруживает речь, но не находит совпадений в загруженных и включенных Grammar объектах.
Перед выполнением SpeechRecognitionEngine распознавания должен быть загружен по крайней мере один Grammar объект . Чтобы загрузить грамматику распознавания речи, используйте LoadGrammar метод или LoadGrammarAsync .
Чтобы изменить способ обработки времени распознавания речи или молчания в отношении распознавания, используйте BabbleTimeoutсвойства , InitialSilenceTimeout, EndSilenceTimeoutи EndSilenceTimeoutAmbiguous .
Чтобы выполнить синхронное распознавание, используйте один из Recognize методов .
RecognizeAsync()
- Исходный код:
- 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
Выполняет одну или несколько асинхронных операций распознавания речи.
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)