SpeechRecognitionEngine.Recognize 方法

定义

启动同步语音识别操作。

重载

Recognize()

执行同步语音识别操作。

Recognize(TimeSpan)

使用指定初始静音超时执行同步语音识别操作。

注解

这些方法执行单个同步识别操作。 识别器对其加载和启用的语音识别语法执行此操作。

在调用此方法期间,识别器可能会引发以下事件:

使用方法之Recognize一时,RecognizeCompleted识别器不会引发 事件。

如果操作不成功或null未启用识别器,则Recognize方法返回 RecognitionResult 对象。

同步识别操作可能由于以下原因而失败:

  • 在 或 InitialSilenceTimeout 属性或 initialSilenceTimeout 方法的 参数Recognize的超时间隔到期BabbleTimeout之前,不会检测到语音。

  • 识别引擎检测语音,但在其任何已加载和启用 Grammar 的对象中都找不到匹配项。

若要修改识别器处理与识别相关的语音或静音计时的方式,请使用 BabbleTimeoutInitialSilenceTimeoutEndSilenceTimeoutEndSilenceTimeoutAmbiguous 属性。

在执行识别之前, SpeechRecognitionEngine 必须至少加载一个 Grammar 对象。 若要加载语音识别语法,请使用 LoadGrammarLoadGrammarAsync 方法。

若要执行异步识别,请使用 方法之 RecognizeAsync 一。

Recognize()

Source:
SpeechRecognitionEngine.cs
Source:
SpeechRecognitionEngine.cs

执行同步语音识别操作。

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();  
    }  
  }  
}  

注解

此方法执行单个识别操作。 识别器对其加载和启用的语音识别语法执行此操作。

在调用此方法期间,识别器可能会引发以下事件:

使用此方法时, RecognizeCompleted 识别器不会引发 事件。

方法 Recognize() 返回 对象 RecognitionResult ;如果操作不成功, null 则返回 。

同步识别操作可能由于以下原因而失败:

  • 在 或 InitialSilenceTimeout 属性的超时间隔到期BabbleTimeout之前,不会检测到语音。

  • 识别引擎检测语音,但在其任何已加载和启用 Grammar 的对象中都找不到匹配项。

若要执行异步识别,请使用 方法之 RecognizeAsync 一。

另请参阅

适用于

Recognize(TimeSpan)

Source:
SpeechRecognitionEngine.cs
Source:
SpeechRecognitionEngine.cs

使用指定初始静音超时执行同步语音识别操作。

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

在调用此方法期间,识别器可能会引发以下事件:

使用此方法时, RecognizeCompleted 识别器不会引发 事件。

方法 Recognize() 返回 对象 RecognitionResult ;如果操作不成功, null 则返回 。

同步识别操作可能由于以下原因而失败:

  • 在 或 initialSilenceTimeout 参数的超时间隔到期BabbleTimeout之前,不会检测到语音。

  • 识别引擎检测语音,但在其任何已加载和启用 Grammar 的对象中都找不到匹配项。

若要执行异步识别,请使用 方法之 RecognizeAsync 一。

另请参阅

适用于