SpeechRecognitionEngine.RecognizeAsync 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
비동기 음성 인식 작업을 시작합니다.
오버로드
RecognizeAsync() |
단일 비동기 음성 인식 작업을 실행합니다. |
RecognizeAsync(RecognizeMode) |
비동기 음성 인식 작업을 실행합니다. |
설명
이러한 메서드는 단일 또는 여러 비동기 인식 작업을 수행합니다. 인식기가 로드되고 활성화된 음성 인식 문법에 대해 각 작업을 수행합니다.
이 메서드를 호출하는 동안 인식기에서 다음 이벤트를 발생할 수 있습니다.
SpeechDetected. 인식기가 음성으로 식별할 수 있는 입력을 검색할 때 발생합니다.
SpeechHypothesized. 입력이 활성 문법 중 하나와 모호한 일치를 만들 때 발생합니다.
SpeechRecognitionRejected 또는 SpeechRecognized 인식기가 인식 작업을 완료할 때 발생합니다.
RecognizeCompleted. 작업이 완료될 때 RecognizeAsync 발생합니다.
비동기 인식 작업의 결과를 검색하려면 이벤트 처리기를 인식기의 SpeechRecognized 이벤트에 연결합니다. 인식기가 동기 또는 비동기 인식 작업을 성공적으로 완료할 때마다 이 이벤트를 발생합니다. 인식에 성공 Result 하지 못한 경우 이벤트에 대한 RecognizeCompletedEventArgs 처리기에서 액세스할 수 있는 개체의 RecognizeCompleted 속성은 이 됩니다 null
.
비동기 인식 작업은 다음과 같은 이유로 실패할 수 있습니다.
또는 InitialSilenceTimeout 속성에 대한 시간 제한 간격이 만료되기 전에는 음성이 BabbleTimeout 검색되지 않습니다.
인식 엔진은 음성을 검색하지만 로드되고 활성화된 Grammar 개체에서 일치하는 항목을 찾지 못했습니다.
는 SpeechRecognitionEngine 인식을 수행하기 전에 하나 Grammar 이상의 개체를 로드해야 합니다. 음성 인식 문법을 로드하려면 또는 LoadGrammarAsync 메서드를 LoadGrammar 사용합니다.
인식기가 인식과 관련하여 음성 또는 무음의 타이밍을 처리하는 방법을 수정하려면 , , InitialSilenceTimeoutEndSilenceTimeout및 EndSilenceTimeoutAmbiguous 속성을 사용합니다BabbleTimeout.
동기 인식을 수행하려면 메서드 중 Recognize 하나를 사용합니다.
RecognizeAsync()
- Source:
- SpeechRecognitionEngine.cs
- Source:
- SpeechRecognitionEngine.cs
단일 비동기 음성 인식 작업을 실행합니다.
public:
void RecognizeAsync();
public void RecognizeAsync ();
member this.RecognizeAsync : unit -> unit
Public Sub RecognizeAsync ()
예제
다음 예제에서는 기본 비동기 음성 인식 기능을 보여 주는 콘솔 애플리케이션 부분을 보여 줍니다. 이 예제에서는 를 DictationGrammar만들고, In-Process 음성 인식기에 로드하고, 하나의 비동기 인식 작업을 수행합니다. 이벤트 처리기는 작업 중에 인식기가 발생시키는 이벤트를 보여 주는 데 포함됩니다.
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 하나를 사용합니다.
이 메서드는 메서드의 동기 대응에서 throw할 수 있는 모든 비사용 예외를 반환하는 작업에 저장됩니다. 예외가 반환된 작업에 저장되면 작업이 대기될 때 해당 예외가 throw됩니다. 와 같은 ArgumentException사용 예외는 여전히 동기적으로 throw됩니다. 저장된 예외는 에서 throw Recognize()된 예외를 참조하세요.
추가 정보
- BabbleTimeout
- InitialSilenceTimeout
- EndSilenceTimeout
- EndSilenceTimeoutAmbiguous
- SpeechDetected
- SpeechHypothesized
- SpeechRecognitionRejected
- SpeechRecognized
- RecognizeCompleted
- Recognize()
- EmulateRecognizeAsync(String)
적용 대상
RecognizeAsync(RecognizeMode)
- Source:
- SpeechRecognitionEngine.cs
- Source:
- 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만들고, In-Process 음성 인식기에 로드하고, 여러 비동기 인식 작업을 수행합니다. 비동기 작업은 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;
}
}
}
설명
가 이Multiple면 mode
또는 RecognizeAsyncStop 메서드가 호출될 때까지 RecognizeAsyncCancel 인식기가 비동기 인식 작업을 계속 수행합니다.
이 메서드를 호출하는 동안 인식기에서 다음 이벤트를 발생할 수 있습니다.
SpeechDetected. 인식기가 음성으로 식별할 수 있는 입력을 검색할 때 발생합니다.
SpeechHypothesized. 입력이 활성 문법 중 하나와 모호한 일치를 만들 때 발생합니다.
SpeechRecognitionRejected 또는 SpeechRecognized 인식기가 인식 작업을 완료할 때 발생합니다.
RecognizeCompleted. 작업이 완료될 때 RecognizeAsync 발생합니다.
비동기 인식 작업의 결과를 검색하려면 이벤트 처리기를 인식기의 SpeechRecognized 이벤트에 연결합니다. 인식기가 동기 또는 비동기 인식 작업을 성공적으로 완료할 때마다 이 이벤트를 발생합니다. 인식에 성공 Result 하지 못한 경우 이벤트에 대한 RecognizeCompletedEventArgs 처리기에서 액세스할 수 있는 개체의 RecognizeCompleted 속성은 이 됩니다 null
.
비동기 인식 작업은 다음과 같은 이유로 실패할 수 있습니다.
또는 InitialSilenceTimeout 속성에 대한 시간 제한 간격이 만료되기 전에는 음성이 BabbleTimeout 검색되지 않습니다.
인식 엔진은 음성을 검색하지만 로드되고 활성화된 Grammar 개체에서 일치하는 항목을 찾지 못했습니다.
동기 인식을 수행하려면 메서드 중 Recognize 하나를 사용합니다.
추가 정보
- BabbleTimeout
- InitialSilenceTimeout
- EndSilenceTimeout
- EndSilenceTimeoutAmbiguous
- SpeechDetected
- SpeechHypothesized
- SpeechRecognitionRejected
- SpeechRecognized
- RecognizeCompleted
- Recognize()
- EmulateRecognizeAsync(String)
적용 대상
.NET