정지

2013-05-18 2 views
1

다음 코드정지

private void button2_Click(object sender, EventArgs e) 
     { 
      SpeechRecognizer sr = new SpeechRecognizer(); 

      Choices colors = new Choices(); 
      colors.Add(new string[] { "red arrow", "green", "blue" }); 

      GrammarBuilder gb = new GrammarBuilder(); 
      gb.Append(colors); 

      Grammar g = new Grammar(gb); 

      sr.LoadGrammar(g); 

      // SpeechSynthesizer s = new SpeechSynthesizer(); 
      // s.SpeakAsync("start speaking"); 

      sr.SpeechRecognized += new EventHandler<SpeechRecognizedEventArgs>(sr_SpeechRecognized); 
     } 

     void sr_SpeechRecognized(object sender, SpeechRecognizedEventArgs e) 
     { 
      MessageBox.Show(e.Result.Text); 
     } 

는 MS의 음성 엔진을 사용하여이 정상적인 음성 인식 코드를 살펴 제발 명령. 여기에 제가 문법을 적재했는지 알 수 있습니다. 그러나 문제도 있습니다. 즉, 주어진 문법뿐만 아니라 MS 내장 음성 명령에도 응답하지 않습니다! 창문을 최소화하는 음성 명령과 마찬가지로 시작 메뉴 열기!

정말 필요하지 않습니다. 내 응용 프로그램은 MS 내장 명령이 아닌 내 문법에만 응답해야합니다. 내가이 일을 성취 할 수있는 방법이 있니?

답변

1

SpeechRecognizer 개체는 기존 Windows 음성 시스템 위에 구축됩니다. MSDN에서 :

응용 프로그램은 Windows 음성 인식에 액세스 할 공유 인식기를 사용합니다. SpeechRecognizer 개체를 사용하여 Windows 음성 사용자 환경에 추가합니다.

대신 SpeechRecognitionEngine 개체를 사용하는 것이 좋습니다.이 개체는 시스템 전체가 아니라 프로세스 내에서 실행됩니다.

+0

이것은 흥미 롭습니다. 나는 이것을 시도하고 알릴 것이다. :) –