次の方法で共有


SpeechRecognitionEngine.BabbleTimeout プロパティ

定義

SpeechRecognitionEngine が認識を終了する前にバックグラウンド ノイズのみを含む入力を受け入れる時間間隔を取得または設定します。

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

プロパティ値

時間の間隔。

例外

このプロパティが 0 秒未満の値に設定されています。

次の例は、音声認識を開始する前に の プロパティと InitialSilenceTimeout プロパティを設定BabbleTimeoutする基本的な音声認識を示すコンソール アプリケーションのSpeechRecognitionEngine一部を示しています。 音声認識エンジンAudioStateChangedRecognizeCompletedイベントのハンドラーは、イベント情報をコンソールに出力して、 のSpeechRecognitionEngineプロパティがInitialSilenceTimeout認識操作にどのように影響するかを示します。

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

注釈

各音声認識エンジンには、無音と音声を区別するアルゴリズムがあります。 認識エンジンは、認識エンジンが読み込み、有効にした音声認識文法の最初のルールと一致しない非無音入力をバックグラウンド ノイズとして分類します。 認識エンジンが babble タイムアウト期間内にバックグラウンド ノイズと無音のみを受け取った場合、認識エンジンはその認識操作を終了します。

babble タイムアウト期間が 0 に設定されている場合、認識エンジンは babble タイムアウト チェックを実行しません。 タイムアウト間隔には、負以外の値を指定できます。 既定値は 0 秒です。

適用対象

こちらもご覧ください