2010-09-04 44 views
1

該程序拋出異常,我該如何解決?C#程序異常

例外是「語音識別在此係統上不可用,無法找到SAPI和語音識別引擎」。

public partial class Form1 : Form 
{ 
    SpeechRecognizer rec = new SpeechRecognizer(); 
    public Form1() 
    { 
     InitializeComponent(); 
     rec.SpeechRecognized += rec_SpeechRecognized; 

    } 
    void rec_SpeechRecognized(object sender, SpeechRecognizedEventArgs e) 
    { 
     lblLetter.Text = e.Result.Text; 
    } 

    private void Form1_Load(object sender, EventArgs e) 
    { 
     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); 
     rec.LoadGrammar(g); 
     rec.Enabled = true; 

    } 
+8

任何不清楚你所得到的錯誤信息?對我來說似乎很簡單。在系統上安裝SAPI和語音識別引擎,因爲我們無法訪問您的系統。 – 2010-09-04 10:12:25

+0

它們在Windows的服務器版本上默認不安裝。 – 2010-09-04 14:35:30

回答

1

那麼它聽起來像你沒有在系統上安裝或可能你沒有在一個完整的受信任應用程序運行時所需要的組件:

對直接調用方的完全信任。該成員不能由部分信任的代碼使用。有關更多信息,請參閱使用來自部分受信任代碼的庫。

Source

雖然我還以爲你會從得到一個不同的錯誤。這個問題是出現在所有機器上還是僅出現在一兩臺機器上?如果是後者,則會指出它是未安裝所需的組件。

嘗試將SpeechRecognizer對象的初始化移動到窗體構造函數中,並將其包裝在try ... catch塊中。這將a)告訴你,這是否真的是這個問題導致的問題,並b)讓你恢復優雅。

1

你試圖運行什麼操作系統?我已經在Windows 7 Professional上成功執行了您的代碼。

我的懷疑是雖然在框架中提供了System.Speech,但SAPI /語音識別引擎並未安裝,儘管它們默認帶有Windows 7。看看你的windows\system32文件夾,看看是否有一個名爲Speech的子文件夾來確定這一點。

我剛剛有了一個快速瀏覽一下通過System.Speech.dll使用反射和System.Speech.Recognition.SpeechRecognizer構造函數調用,最終分解成,並實例化一個名爲System.Speech.Internal.SapiInterop.SapiRecognizer類,這使得它很清楚,你需要安裝的非託管組件。

嘗試下載並安裝Speech SDK 5.1