2011-06-27 82 views
2

演講,我加入grmmar只檢測這樣識別system.speech中的數字的問題?

  SpeechRecognitionEngine RecognitionEngine = new SpeechRecognitionEngine(new CultureInfo("en-US", true)); 

      // Created Grammar For only Numbers 1 to 10 
      var NumberChoice = new Choices(); 
      for (var i = 0; i <= 10; i++) 
      { 
       NumberChoice.Add(i.ToString()); 
      } 
      var NumGrammarBuilder = new GrammarBuilder(NumberChoice); 
      var NumGrammar = new Grammar(NumGrammarBuilder); 
      RecognitionEngine.LoadGrammar(NumGrammar); 

      RecognitionEngine.SetInputToDefaultAudioDevice(); 
      RecognitionResult Result = RecognitionEngine.Recognize(); 

      txt_vtc.Text = Result.Text; 

數字。但我發言的產出越來越不同了一些時候,當我說兩句它得到八的最糟糕的事情是,當我開機我的風扇和說話,它甚至不承認小聲音。所以這對於普通客戶端是有用的嗎?當客戶說引腳,它捕捉pin碼,並將其保存在文本文件..是,這是有用的我..

其綽綽有餘,如果從1到10正確認識我?在這種情況下,任何人都可以幫助我。 當用戶說話時,我可以顯示進度條或任何儀表嗎? 我可以用英語 - 英國文化對我的語音識別? 我們有任何第三方DLL嗎?

問候 Bhuvan

+0

語音識別在嘈雜的環境中失敗。減少噪音或失敗。 – spender

+0

確定..我認爲我吵減少......這將corretly顯示數字?用戶說話時的進度條如何?這是可能實現進度條嗎? – Bhuvan

+0

你有什麼樣的進度條? – BrokenGlass

回答

2

你可以爲了試試這個代碼示例克服自己的問題

SpeechRecognitionEngine rec = new SpeechRecognitionEngine(); 
    var c = new Choices(); 
    for (var i = 0; i <= 100; i++) 
     c.Add(i.ToString()); 
    var gb = new GrammarBuilder(c); 
    var g = new Grammar(gb); 
    g.Priority = 127; 
    rec.SetInputToDefaultAudioDevice(); 

    rec.LoadGrammar(g); 
    rec.RecognizeAsync(RecognizeMode.Multiple); 
+2

尼斯和簡單的看到需要一個音頻表。你爲什麼要在語法上設置優先級?如果你只有一個語法加載到引擎中,它會做任何事情嗎? –

+0

請使用此功能發揮,讓我們都知道,在另一個comment.I寫了這個解決方案很長一段時間去,我真的不記得...... –