title: SpeechRecognition recognizes background noise as speech
body: <p>I'm using MSDN's <code>SpeechRecognitionEngine</code> in my program. The problem is that it recognizes background noise as speech.</p>
  
  <p>For example, If snap my fingers, tap the table, or move my chair, it picks that up as speech.</p>
  
  <p>Why in the world dose it recognize background noise as speech. </p>
  
  <p>Me snapping my fingers dose not sound the same as me saying "Notepad"!!!</p>
  
  <p>Here is the code</p>
  
  <pre><code>using System;
  using System.Threading;
  using System.Speech;
  using System.Speech.Synthesis;
  using System.Speech.Recognition;
  
  namespace SpeachTest
  {
      public class MainClass
      {
          static void Main()
          {
          MainClass main = new MainClass(); 
          SpeechRecognitionEngine sre = new SpeechRecognitionEngine(new System.Globalization.CultureInfo("en-US"));
              Choices choiceList = new Choices();
              choiceList.Add(new string[]{"Open", "Close", "Then", "Volume", "Up", "Firefox", "Notepad", "Steam","turn", "the", "now" } );
  
              GrammarBuilder builder = new GrammarBuilder();
              builder.Append(choiceList);
              Grammar grammar = new Grammar(new GrammarBuilder(builder,0, 10) );
  
              sre.SpeechRecognized += main.sreRecognizedEvent;
              sre.SpeechDetected += main.sreDetectEvent;
              sre.SpeechRecognitionRejected += main.sreRejectEvent;
              sre.RecognizeCompleted += main.sreCompleteEvent;
  
              sre.InitialSilenceTimeout = TimeSpan.FromSeconds(0);
              sre.BabbleTimeout = TimeSpan.FromSeconds(0);
              sre.EndSilenceTimeout = TimeSpan.FromSeconds(0);
              sre.EndSilenceTimeoutAmbiguous = TimeSpan.FromSeconds(0);
  
  
              sre.SetInputToDefaultAudioDevice();
              sre.LoadGrammar(grammar);
  
              while(true){
              sre.Recognize();
              }
          }
  
  
          void sreRecognizedEvent(Object sender, SpeechRecognizedEventArgs e){
          Console.Write("Reconized ~ " + e.Result.Text + " ~ with confidence " + e.Result.Confidence);
          Console.WriteLine();
          }
  
  
          void sreDetectEvent(Object sender, SpeechDetectedEventArgs e){
          Console.WriteLine("Detected some type of input");
          }
  
          void sreRejectEvent(Object sender,  SpeechRecognitionRejectedEventArgs e){
          Console.WriteLine("Rejected Input ~ " + e.Result.Text) ;
          }
  
          void sreCompleteEvent(Object sender, System.Speech.Recognition.RecognizeCompletedEventArgs e){
          Console.WriteLine("Completed Recongnization");
          }
  }
  
  }
  </code></pre>