2014-12-24 88 views
0

我試圖在C#中識別語音,但它開始不好。我曾在YouTube上看過一些教程,但每次都會出現此錯誤。所以我得到了微軟的MSDN代碼,並試圖在Google中找到一些解決方案。這是我使用的代碼:錯誤「沒有識別器安裝」與識別語音

public Form1() 
    { 
     InitializeComponent(); 
     Initialize(); 
    } 

    private void Initialize() 
    { 

     // Create a new SpeechRecognitionEngine instance. 
     SpeechRecognitionEngine sre = new SpeechRecognitionEngine(); 
     // Configure the input to the recognizer. 
     //sre.SetInputToWaveFile(@"c:\Test\Colors.wav"); 
     sre.SetInputToDefaultAudioDevice(); 

     // Create a simple grammar that recognizes "red", "green", or "blue". 
     Choices colors = new Choices(); 
     colors.Add(new string[] { "red", "green", "blue" }); 

     // Create a GrammarBuilder object and append the Choices object. 
     GrammarBuilder gb = new GrammarBuilder(); 
     gb.Append(colors); 

     // Create the Grammar instance and load it into the speech recognition engine. 
     Grammar g = new Grammar(gb); 
     sre.LoadGrammar(g); 

     // Register a handler for the SpeechRecognized event. 
     sre.SpeechRecognized += 
      new EventHandler<SpeechRecognizedEventArgs>(sre_SpeechRecognized); 

     // Start recognition. 
     sre.Recognize(); 
    } 

    // Create a simple handler for the SpeechRecognized event. 
    void sre_SpeechRecognized(object sender, SpeechRecognizedEventArgs e) 
    { 
     MessageBox.Show("Speech recognized: " + e.Result.Text); 
    } 

我已經下載了Microsoft Speech Platform SDKRuntime Languages(美國)。錯誤仍然存​​在。

我也已經用了這個代碼,因爲我在這裏一個主題中的StackOverflow的看到:

sre = new SpeechRecognitionEngine(new CultureInfo("en-GB")); 

它沒有工作,所以我試圖用這個(我在MSDN看到):

SpeechRecognitionEngine sre = new SpeechRecognitionEngine(new System.Globalization.CultureInfo("en-US")); 

當我嘗試使用這些代碼時,錯誤更改並說:「沒有找到所需ID的識別器」。 我使用Windows 7(Home Basic,x64),Microsoft Visual C#2010 Express。我的默認語言(系統語言也是)是葡萄牙語(巴西),也許這是錯誤原因?那麼,我希望我爲你寫的所有細節都明白。對不起,我的英語,我這訓練,哈哈:P

+0

@Saruman我已經切換,錯誤更改爲「沒有找到所需ID的識別器」。在CultureInfo中(當我創建sre時)。我試圖下載pt-BR文件,但也發生了。 如果我放棄它,錯誤將更改爲「語音識別在此係統上不可用,無法找到SAPI和語音識別引擎」。 –

回答

1

運行以下確定識別您已經安裝了什麼,斷點/調試和檢查,如果你需要

foreach (RecognizerInfo ri in SpeechRecognitionEngine.InstalledRecognizers()) 
{ 
    System.Diagnostics.Debug.WriteLine(ri.Culture.Name); 
} 

和使用中所列的一個在SpeechRecognitionEngine構造函數

+2

那麼,它沒有迴應單一的文化。如何進行? –