SpeechRecognitionEngine.InitialSilenceTimeout 属性

定义

获取或设置时间间隔,在此时间间隔内,SpeechRecognitionEngine 将在终结识别之前接受仅包含无声段的输入。Gets or sets the time interval during which a SpeechRecognitionEngine accepts input containing only silence before finalizing recognition.

public:
 property TimeSpan InitialSilenceTimeout { TimeSpan get(); void set(TimeSpan value); };
public TimeSpan InitialSilenceTimeout { get; set; }
member this.InitialSilenceTimeout : TimeSpan with get, set
Public Property InitialSilenceTimeout As TimeSpan

属性值

安静间隔的持续时间。The duration of the interval of silence.

异常

该属性已设置为小于 0 秒。This property is set to less than 0 seconds.

示例

下面的示例演示了演示基本语音识别的控制台应用程序的一部分。The following example shows part of a console application that demonstrates basic speech recognition. 该示例在启动BabbleTimeout语音InitialSilenceTimeout识别SpeechRecognitionEngine之前设置的和属性。The example sets the BabbleTimeout and InitialSilenceTimeout properties of a SpeechRecognitionEngine before initiating speech recognition. 语音识别器AudioStateChanged的和RecognizeCompleted事件的处理程序将事件信息输出到InitialSilenceTimeout控制台,以演示SpeechRecognitionEngine属性属性如何影响识别操作。Handlers for the speech recognizer's AudioStateChanged and RecognizeCompleted events output event information to the console to demonstrate how the InitialSilenceTimeout properties of a SpeechRecognitionEngine properties affect recognition operations.

  
using System;  
using System.Speech.Recognition;  
  
namespace SpeechRecognitionApp  
{  
  class Program  
  {  
    static void Main(string[] args)  
    {  
  
      // Initialize an in-process speech recognizer.  
      using (SpeechRecognitionEngine recognizer =  
        new SpeechRecognitionEngine(  
          new System.Globalization.CultureInfo("en-US")))  
      {  
        // Load a Grammar object.  
        recognizer.LoadGrammar(CreateServicesGrammar("FindServices"));  
  
        // Add event handlers.  
        recognizer.AudioStateChanged +=  
          new EventHandler<AudioStateChangedEventArgs>(  
            AudioStateChangedHandler);  
        recognizer.RecognizeCompleted +=  
          new EventHandler<RecognizeCompletedEventArgs>(  
            RecognizeCompletedHandler);  
  
        // Configure input to the speech recognizer.  
        recognizer.SetInputToDefaultAudioDevice();  
  
        recognizer.InitialSilenceTimeout = TimeSpan.FromSeconds(3);  
        recognizer.BabbleTimeout = TimeSpan.FromSeconds(2);  
        recognizer.EndSilenceTimeout = TimeSpan.FromSeconds(1);  
        recognizer.EndSilenceTimeoutAmbiguous = TimeSpan.FromSeconds(1.5);  
  
        Console.WriteLine("BabbleTimeout: {0}", recognizer.BabbleTimeout);  
        Console.WriteLine("InitialSilenceTimeout: {0}", recognizer.InitialSilenceTimeout);  
        Console.WriteLine("EndSilenceTimeout: {0}", recognizer.EndSilenceTimeout);  
        Console.WriteLine("EndSilenceTimeoutAmbiguous: {0}", recognizer.EndSilenceTimeoutAmbiguous);  
        Console.WriteLine();  
  
        // Start asynchronous speech recognition.  
        recognizer.RecognizeAsync(RecognizeMode.Single);  
  
        // Keep the console window open.  
        while (true)  
        {  
          Console.ReadLine();  
        }  
      }  
    }  
  
    // Create a grammar and build it into a Grammar object.   
    static Grammar CreateServicesGrammar(string grammarName)  
    {  
  
      // Create a grammar for finding services in different cities.  
      Choices services = new Choices(new string[] { "restaurants", "hotels", "gas stations" });  
      Choices cities = new Choices(new string[] { "Seattle", "Boston", "Dallas" });  
  
      GrammarBuilder findServices = new GrammarBuilder("Find");  
      findServices.Append(services);  
      findServices.Append("near");  
      findServices.Append(cities);  
  
      // Create a Grammar object from the GrammarBuilder. 
      Grammar servicesGrammar = new Grammar(findServices);  
      servicesGrammar.Name = ("FindServices");  
      return servicesGrammar;  
    }  
  
    // Handle the AudioStateChanged event.  
    static void AudioStateChangedHandler(  
      object sender, AudioStateChangedEventArgs e)  
    {  
      Console.WriteLine("AudioStateChanged ({0}): {1}",  
        DateTime.Now.ToString("mm:ss.f"), e.AudioState);  
    }  
  
    // Handle the RecognizeCompleted event.  
    static void RecognizeCompletedHandler(  
      object sender, RecognizeCompletedEventArgs e)  
    {  
      Console.WriteLine("RecognizeCompleted ({0}):",  
        DateTime.Now.ToString("mm:ss.f"));  
  
      string resultText;  
      if (e.Result != null) { resultText = e.Result.Text; }  
      else { resultText = "<null>"; }  
  
      Console.WriteLine(  
        " BabbleTimeout: {0}; InitialSilenceTimeout: {1}; Result text: {2}",  
        e.BabbleTimeout, e.InitialSilenceTimeout, resultText);  
      if (e.Error != null)  
      {  
        Console.WriteLine(" Exception message: ", e.Error.Message);  
      }  
  
      // Start the next asynchronous recognition operation.  
      ((SpeechRecognitionEngine)sender).RecognizeAsync(RecognizeMode.Single);  
    }  
  }  
}  
  

注解

每个语音识别器都有一种算法来区分无声和语音。Each speech recognizer has an algorithm to distinguish between silence and speech. 如果在初始无声超时期限内识别器输入不能完成,识别器将终结识别操作。If the recognizer input is silence during the initial silence timeout period, then the recognizer finalizes that recognition operation.

如果初始无声超时间隔设置为0,则识别器不会执行初始无声超时检查。If the initial silence timeout interval is set to 0, the recognizer does not perform an initial silence timeout check. 超时间隔可以是任何非负值。The timeout interval can be any non-negative value. 默认值为0秒。The default is 0 seconds.

适用于

另请参阅