2014-11-21 3 views
-1

기본 음성 인식 응용 프로그램을 만들려고했지만 오류가 있습니다. Enable 버튼을 클릭하면 다음 오류가 발생합니다. 인식을 수행하기 전에 적어도 하나의 문법을로드해야합니다. 설치하고로드 했더라도인식을 시작할 수 없음 : 인식을하기 전에 하나 이상의 문법을로드해야합니다.

. 아무도 나를 도울 수 있습니까?

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Windows.Forms; 
using System.Speech.Recognition; 

namespace Voice_Recognition 
{ 
    public partial class Form1 : Form 
    { 
     SpeechRecognitionEngine recEngine = new SpeechRecognitionEngine(); 
     public Form1() 
     { 
      InitializeComponent(); 
     } 

     private void button2_Click(object sender, EventArgs e) 
     { 
      recEngine.RecognizeAsyncStop(); 
      btnDisable.Enabled = false; 
     } 

     private void richTextBox1_TextChanged(object sender, EventArgs e) 
     { 
      Choices commands = new Choices(); 
      commands.Add(new String[] { "Say Hello", "Print my name" }); 
      GrammarBuilder gBuilder = new GrammarBuilder(); 
      gBuilder.Append(commands); 
      Grammar grammar = new Grammar(gBuilder); 

      recEngine.LoadGrammar(grammar); 
      recEngine.SetInputToDefaultAudioDevice(); 
      recEngine.SpeechRecognized +=new EventHandler<SpeechRecognizedEventArgs>(recEngine_SpeechRecognized); 

     } 

     private void button1_Click(object sender, EventArgs e) 
     { 
      recEngine.RecognizeAsync(RecognizeMode.Multiple); 
      btnDisable.Enabled = true; 
     } 
     void recEngine_SpeechRecognized(object sender, SpeechRecognizedEventArgs e) 
     { 
      switch (e.Result.Text) 
      { 
       case "Say Hello": 
        MessageBox.Show("Hello Andrea"); 
        break; 
       case "Print my name": 
        richTextBox1.Text += "\nAndrea"; 
        break; 
      } 
     } 
    } 
} 
+0

나는 코드를 단계별로 실행해야하고이 오류가 실제로 어디에서 발생하는지 확인해야한다고 생각한다. Object Null은 여전히 ​​디버거를 사용하고 코드를 통해 단계를 진행한다. – MethodMan

+0

'richTextBox1_TextChanged '의 모든 내용이'Form1 대신'생성자. –

+0

@Andrew 그게 다야! 믿을 수 없어 나는 그것을 스스로 깨닫지 못했다 .... 어쨌든 남자 감사합니다 :) – user2258223

답변

1

장소 대신 Form1 생성자에서 richTextBox1_TextChanged 방법의 코드 :

내 코드입니다. 그 문법은 텍스트가 변경 될 때마다 다시로드되지만 프로그램이 시작될 때로드되지 않습니다. 그리고 아무 이유없이 메소드 연결 코드가 여러 번 호출됩니다. 따라서 상자에 아무 것도 입력하기 전에 버튼을 클릭하면 아직 인스턴스화 된 문법이 없습니다.

관련 문제