SpeechRecognizer 类 
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
提供对在 Windows 桌面上可用的共享语言识别服务的访问。
public ref class SpeechRecognizer : IDisposablepublic class SpeechRecognizer : IDisposabletype SpeechRecognizer = class
    interface IDisposablePublic Class SpeechRecognizer
Implements IDisposable- 继承
- 
				SpeechRecognizer
- 实现
示例
以下示例是控制台应用程序的一部分,该应用程序加载语音识别语法并演示异步仿真输入、关联的识别结果以及语音识别器引发的关联事件。 如果 Windows 语音识别未运行,则启动此应用程序也会启动 Windows 语音识别。 如果 Windows 语音识别处于 睡眠 状态,则 EmulateRecognizeAsync 始终返回 null。
using System;  
using System.Speech.Recognition;  
using System.Threading;  
namespace SharedRecognizer  
{  
  class Program  
  {  
    // Indicate whether the asynchronous emulate recognition  
    // operation has completed.  
    static bool completed;  
    static void Main(string[] args)  
    {  
      // Initialize an instance of the shared recognizer.  
      using (SpeechRecognizer recognizer = new SpeechRecognizer())  
      {  
        // Create and load a sample grammar.  
        Grammar testGrammar =  
          new Grammar(new GrammarBuilder("testing testing"));  
        testGrammar.Name = "Test Grammar";  
        recognizer.LoadGrammar(testGrammar);  
        // Attach event handlers for recognition events.  
        recognizer.SpeechRecognized +=  
          new EventHandler<SpeechRecognizedEventArgs>(  
            SpeechRecognizedHandler);  
        recognizer.EmulateRecognizeCompleted +=  
          new EventHandler<EmulateRecognizeCompletedEventArgs>(  
            EmulateRecognizeCompletedHandler);  
        completed = false;  
        // Start asynchronous emulated recognition.   
        // This matches the grammar and generates a SpeechRecognized event.  
        recognizer.EmulateRecognizeAsync("testing testing");  
        // Wait for the asynchronous operation to complete.  
        while (!completed)  
        {  
          Thread.Sleep(333);  
        }  
        completed = false;  
        // Start asynchronous emulated recognition.  
        // This does not match the grammar or generate a SpeechRecognized event.  
        recognizer.EmulateRecognizeAsync("testing one two three");  
        // Wait for the asynchronous operation to complete.  
        while (!completed)  
        {  
          Thread.Sleep(333);  
        }  
      }  
      Console.WriteLine();  
      Console.WriteLine("Press any key to exit...");  
      Console.ReadKey();  
    }  
    // Handle the SpeechRecognized event.  
    static void SpeechRecognizedHandler(  
      object sender, SpeechRecognizedEventArgs e)  
    {  
      if (e.Result != null)  
      {  
        Console.WriteLine("Recognition result = {0}",  
          e.Result.Text ?? "<no text>");  
      }  
      else  
      {  
        Console.WriteLine("No recognition result");  
      }  
    }  
    // Handle the SpeechRecognizeCompleted event.  
    static void EmulateRecognizeCompletedHandler(  
      object sender, EmulateRecognizeCompletedEventArgs e)  
    {  
      if (e.Result == null)  
      {  
        Console.WriteLine("No result generated.");  
      }  
      // Indicate the asynchronous operation is complete.  
      completed = true;  
    }  
  }  
}  
注解
应用程序使用共享识别器访问 Windows 语音识别。 SpeechRecognizer使用 对象添加到 Windows 语音用户体验。
此类提供对语音识别过程的各个方面的控制:
- 若要管理语音识别语法,请使用 LoadGrammar、、LoadGrammarAsyncUnloadGrammar、 UnloadAllGrammars和 Grammars。 
- 若要获取有关当前语音识别操作的信息,请 SpeechRecognizer订阅 的 SpeechDetected、 SpeechHypothesized、 SpeechRecognitionRejected和 SpeechRecognized 事件。 
- 若要查看或修改识别器返回的备用结果数,请使用 MaxAlternates 属性。 识别器在 对象中 RecognitionResult 返回识别结果。 
- 若要访问或监视共享识别器的状态,请使用 AudioLevel、、AudioPosition、 RecognizerAudioPositionEnabledAudioStatePauseRecognizerOnRecognition和 State 属性以及 AudioLevelUpdated、AudioSignalProblemOccurred、 AudioStateChanged和 StateChanged 事件。 
- 若要同步对识别器所做的更改,请使用 RequestRecognizerUpdate 方法。 共享识别器使用多个线程来执行任务。 
- 若要模拟共享识别器输入,请使用 EmulateRecognize 和 EmulateRecognizeAsync 方法。 
Windows 语音识别的配置通过使用控制面板中的“语音属性”对话框进行管理。 此接口用于选择默认桌面语音识别引擎和语言、音频输入设备以及语音识别的睡眠行为。 如果在应用程序运行时更改了 Windows 语音识别的配置, (例如,如果语音识别被禁用或输入语言) 更改,则更改会影响所有 SpeechRecognizer 对象。
若要创建独立于 Windows 语音识别的进程内语音识别器,请使用 SpeechRecognitionEngine 类。
注意
始终在释放对语音识别器的最后一次引用之前调用 Dispose 。 否则,在垃圾回收器调用识别器对象的 Finalize 方法之前,不会释放它使用的资源。
构造函数
| SpeechRecognizer() | 初始化 SpeechRecognizer 类的新实例。 | 
属性
| AudioFormat | 获取语音识别器接收的音频格式。 | 
| AudioLevel | 获取语音识别器接收的音频级别。 | 
| AudioPosition | 获取音频流中的当前位置,此音频流由向语音识别器提供输入的设备产生。 | 
| AudioState | 获取语音识别器接收的状态音频。 | 
| Enabled | 获取或设置一个值,该值指示此 SpeechRecognizer 对象是否准备好处理语音。 | 
| Grammars | 获取在此 Grammar 实例中加载的 SpeechRecognizer 对象的集合。 | 
| MaxAlternates | 获取或设置共享识别器为每个识别操作返回的备用识别结果的最大数量。 | 
| PauseRecognizerOnRecognition | 获取或设置一个值,此值指示共享识别器是否在应用程序处理 SpeechRecognized 事件时暂停识别操作。 | 
| RecognizerAudioPosition | 获取在处理的音频输入中的识别器当前位置。 | 
| RecognizerInfo | 获取共享语音识别器的相关信息。 | 
| State | 获取 SpeechRecognizer 对象的状态。 | 
方法
| Dispose() | 处置此 SpeechRecognizer 对象。 | 
| Dispose(Boolean) | 处置 SpeechRecognizer 对象并释放会话期间使用的资源。 | 
| EmulateRecognize(RecognizedWordUnit[], CompareOptions) | 使用文本代替同步语音识别的音频来模拟特定字输入到共享语音识别器,并指定识别器如何处理单词和加载的语音识别语法间的 Unicode 比较。 | 
| EmulateRecognize(String) | 使用文本而不是异步语音识别的音频来模拟输入短语到共享语音识别器。 | 
| EmulateRecognize(String, CompareOptions) | 使用文本代替异步语音识别的音频来模拟短语输入到共享语音识别器,并指定识别器如何处理短语和加载的语音识别语法间的 Unicode 比较。 | 
| EmulateRecognizeAsync(RecognizedWordUnit[], CompareOptions) | 使用文本代替异步语音识别的音频来模拟特定字输入到共享语音识别器,并指定识别器如何处理单词和加载的语音识别语法间的 Unicode 比较。 | 
| EmulateRecognizeAsync(String) | 使用文本而不是异步语音识别的音频来模拟输入短语到共享语音识别器。 | 
| EmulateRecognizeAsync(String, CompareOptions) | 使用文本代替异步语音识别的音频来模拟短语输入到共享语音识别器,并指定识别器如何处理短语和加载的语音识别语法间的 Unicode 比较。 | 
| Equals(Object) | 确定指定对象是否等于当前对象。(继承自 Object) | 
| GetHashCode() | 作为默认哈希函数。(继承自 Object) | 
| GetType() | 获取当前实例的 Type。(继承自 Object) | 
| LoadGrammar(Grammar) | 加载语音识别语法。 | 
| LoadGrammarAsync(Grammar) | 异步加载语音识别语法。 | 
| MemberwiseClone() | 创建当前 Object 的浅表副本。(继承自 Object) | 
| RequestRecognizerUpdate() | 请求共享识别器暂停和更新其状态。 | 
| RequestRecognizerUpdate(Object) | 请求共享识别器暂停和更新其状态并为关联的事件提供用户标记。 | 
| RequestRecognizerUpdate(Object, TimeSpan) | 请求共享识别器暂停和更新其状态并为关联的事件提供偏移量和用户标记。 | 
| ToString() | 返回表示当前对象的字符串。(继承自 Object) | 
| UnloadAllGrammars() | 从共享识别器卸载所有语音识别语法。 | 
| UnloadGrammar(Grammar) | 从共享识别器卸载指定语音识别语法。 | 
事件
| AudioLevelUpdated | 当共享识别器报告其音频输入的级别时发生。 | 
| AudioSignalProblemOccurred | 当识别器在音频信号中遇到问题时发生。 | 
| AudioStateChanged | 当音频中的状态更改正被识别器接收时发生。 | 
| EmulateRecognizeCompleted | 当共享的识别器终结模拟输入的异步识别操作时发生。 | 
| LoadGrammarCompleted | 当识别器完成语音识别语法的异步加载时发生。 | 
| RecognizerUpdateReached | 当识别器暂停以同步识别和其他操作时发生。 | 
| SpeechDetected | 当识别器删除它可以标识为语音的输入时发生。 | 
| SpeechHypothesized | 当识别器已识别可以为语法中多个完整的短语的组件的一个字或多个字时发生。 | 
| SpeechRecognitionRejected | 当识别器接收不与它已加载的任何语音识别语法匹配的输入时发生。 | 
| SpeechRecognized | 当识别器接收与其语音识别语法匹配的输入时发生。 | 
| StateChanged | 当 Windows“桌面语音技术”识别引擎的运行状态更改时发生。 |