SpeechRecognitionEngine.Recognize 方法
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
啟動同步語音辨識作業。
多載
Recognize() |
執行同步語音辨識作業。 |
Recognize(TimeSpan) |
使用指定的初始靜音逾時期限,執行同步語音辨識作業。 |
備註
這些方法會執行單一同步辨識作業。 辨識器會針對其已載入和啟用的語音辨識文法執行這項作業。
在呼叫此方法期間,辨識器可以引發下列事件:
SpeechDetected. 當辨識器偵測到可識別為語音的輸入時引發。
SpeechHypothesized. 當輸入與其中一個使用中的文法建立模棱兩可的相符專案時引發。
SpeechRecognitionRejected 或 SpeechRecognized。 辨識器完成辨識作業時引發。
使用其中 Recognize 一種方法時,辨識器不會引發 RecognizeCompleted 事件。
方法 Recognize 會傳 RecognitionResult 回 物件, null
如果作業不成功或未啟用辨識器,則為 。
同步辨識作業可能會因為下列原因而失敗:
在逾時間隔到期 BabbleTimeoutInitialSilenceTimeout 或 屬性或
initialSilenceTimeout
方法的 Recognize 參數之前,不會偵測語音。辨識引擎會偵測語音,但在其任何已載入和啟用 Grammar 的物件中找不到相符專案。
若要修改辨識器如何處理與辨識相關的語音或無聲時間,請使用 BabbleTimeout 、 InitialSilenceTimeout 、 EndSilenceTimeout 和 EndSilenceTimeoutAmbiguous 屬性。
SpeechRecognitionEngine在執行辨識之前,至少必須載入一個 Grammar 物件。 若要載入語音辨識文法,請使用 LoadGrammar 或 LoadGrammarAsync 方法。
若要執行非同步辨識,請使用其中 RecognizeAsync 一種方法。
Recognize()
執行同步語音辨識作業。
public:
System::Speech::Recognition::RecognitionResult ^ Recognize();
public System.Speech.Recognition.RecognitionResult Recognize ();
member this.Recognize : unit -> System.Speech.Recognition.RecognitionResult
Public Function Recognize () As RecognitionResult
傳回
輸入的辨識結果,如果作業未成功或辨識器未啟用則為 null
。
範例
下列範例示範示範基本語音辨識的主控台應用程式的一部分。 此範例會 DictationGrammar 建立 ,並將它載入至進程語音辨識器,並執行一個辨識作業。
using System;
using System.Speech.Recognition;
namespace SynchronousRecognition
{
class Program
{
static void Main(string[] args)
{
// Create an in-process speech recognizer for the en-US locale.
using (SpeechRecognitionEngine recognizer =
new SpeechRecognitionEngine(
new System.Globalization.CultureInfo("en-US")))
{
// Create and load a dictation grammar.
recognizer.LoadGrammar(new DictationGrammar());
// Configure input to the speech recognizer.
recognizer.SetInputToDefaultAudioDevice();
// Modify the initial silence time-out value.
recognizer.InitialSilenceTimeout = TimeSpan.FromSeconds(5);
// Start synchronous speech recognition.
RecognitionResult result = recognizer.Recognize();
if (result != null)
{
Console.WriteLine("Recognized text = {0}", result.Text);
}
else
{
Console.WriteLine("No recognition result available.");
}
}
Console.WriteLine();
Console.WriteLine("Press any key to continue...");
Console.ReadKey();
}
}
}
備註
這個方法會執行單一辨識作業。 辨識器會針對其已載入和啟用的語音辨識文法執行這項作業。
在呼叫此方法期間,辨識器可以引發下列事件:
SpeechDetected. 當辨識器偵測到可識別為語音的輸入時引發。
SpeechHypothesized. 當輸入與其中一個使用中的文法建立模棱兩可的相符專案時引發。
SpeechRecognitionRejected 或 SpeechRecognized。 辨識器完成辨識作業時引發。
使用此方法時,辨識器不會引發 RecognizeCompleted 事件。
方法 Recognize() 會傳 RecognitionResult 回 物件,如果 null
作業不成功,則為 。
同步辨識作業可能會因為下列原因而失敗:
在 或 InitialSilenceTimeout 屬性的 BabbleTimeout 逾時間隔到期之前,不會偵測到語音。
辨識引擎會偵測語音,但在其任何已載入和啟用 Grammar 的物件中找不到相符專案。
若要執行非同步辨識,請使用其中 RecognizeAsync 一種方法。
另請參閱
- BabbleTimeout
- InitialSilenceTimeout
- EndSilenceTimeout
- EndSilenceTimeoutAmbiguous
- SpeechDetected
- SpeechHypothesized
- SpeechRecognitionRejected
- SpeechRecognized
- RecognizeAsync()
- EmulateRecognize(String)
適用於
Recognize(TimeSpan)
使用指定的初始靜音逾時期限,執行同步語音辨識作業。
public:
System::Speech::Recognition::RecognitionResult ^ Recognize(TimeSpan initialSilenceTimeout);
public System.Speech.Recognition.RecognitionResult Recognize (TimeSpan initialSilenceTimeout);
member this.Recognize : TimeSpan -> System.Speech.Recognition.RecognitionResult
Public Function Recognize (initialSilenceTimeout As TimeSpan) As RecognitionResult
參數
- initialSilenceTimeout
- TimeSpan
語音辨識器在完成辨識前接受僅含靜默無聲之輸入的時間間隔。
傳回
輸入的辨識結果,如果作業未成功或辨識器未啟用則為 null
。
範例
下列範例示範示範基本語音辨識的主控台應用程式的一部分。 此範例會 DictationGrammar 建立 ,並將它載入至進程語音辨識器,並執行一個辨識作業。
using System;
using System.Speech.Recognition;
namespace SynchronousRecognition
{
class Program
{
static void Main(string[] args)
{
// Create an in-process speech recognizer for the en-US locale.
using (SpeechRecognitionEngine recognizer =
new SpeechRecognitionEngine(
new System.Globalization.CultureInfo("en-US")))
{
// Create and load a dictation grammar.
recognizer.LoadGrammar(new DictationGrammar());
// Configure input to the speech recognizer.
recognizer.SetInputToDefaultAudioDevice();
// Start synchronous speech recognition.
RecognitionResult result = recognizer.Recognize(TimeSpan.FromSeconds(5));
if (result != null)
{
Console.WriteLine("Recognized text = {0}", result.Text);
}
else
{
Console.WriteLine("No recognition result available.");
}
}
Console.WriteLine();
Console.WriteLine("Press any key to continue...");
Console.ReadKey();
}
}
}
備註
如果語音辨識引擎在引數指定的 initialSilenceTimeout
時間間隔內偵測到語音, Recognize(TimeSpan) 請執行單一辨識作業,然後終止。 參數 initialSilenceTimeout
會取代辨識器的 InitialSilenceTimeout 屬性。
在呼叫此方法期間,辨識器可以引發下列事件:
SpeechDetected. 當辨識器偵測到可識別為語音的輸入時引發。
SpeechHypothesized. 當輸入與其中一個使用中的文法建立模棱兩可的相符專案時引發。
SpeechRecognitionRejected 或 SpeechRecognized。 辨識器完成辨識作業時引發。
使用此方法時,辨識器不會引發 RecognizeCompleted 事件。
方法 Recognize() 會傳 RecognitionResult 回 物件,如果 null
作業不成功,則為 。
同步辨識作業可能會因為下列原因而失敗:
在 逾時間隔到期 BabbleTimeout
initialSilenceTimeout
或 參數之前,不會偵測到語音。辨識引擎會偵測語音,但在其任何已載入和啟用 Grammar 的物件中找不到相符專案。
若要執行非同步辨識,請使用其中 RecognizeAsync 一種方法。
另請參閱
- BabbleTimeout
- InitialSilenceTimeout
- EndSilenceTimeout
- EndSilenceTimeoutAmbiguous
- SpeechDetected
- SpeechHypothesized
- SpeechRecognitionRejected
- SpeechRecognized
- RecognizeAsync()
- EmulateRecognize(String)