2015-06-12 89 views
0

我正在製作一個語音識別軟件,其中包含一個名爲voice的類。現在在表單中有一個按鈕和一個文本框。當按下按鈕時,它將從voice類創建一個實例並調用方法Loadspeech()。我的主要問題是運行程序時,啓用語音識別和語音,系統將採用這種方法:事件句柄返回值形成

void sRE_SpeechRecognized(object sender, SpeechRecognizedEventArgs e) 

這很好。

但是,我希望每次發言時都要將語音值從班級事件處理程序sRE_SpeechRecognized傳遞到textbox

class Voice 
{ 
    public string speech =""; 
    SpeechRecognitionEngine sRE = new SpeechRecognitionEngine(); 
    public void loadSpeech() 
    { 
     sRE.SpeechRecognized += sRE_SpeechRecognized; 
     sRE.LoadGrammar(new DictationGrammar()); 
     sRE.SetInputToDefaultAudioDevice(); 
     try { sRE.RecognizeAsync(RecognizeMode.Multiple); } 
     catch (Exception ex) { MessageBox.Show(ex.Message); } 
    } 

    void sRE_SpeechRecognized(object sender, SpeechRecognizedEventArgs e) 
    { 
     speech = e.Result.Text; 
    } 

回答

0

你爲什麼要爲此創建一個類? 只需在您的MainForm中創建一個新的SpeechRecognitionEngine並使用您的代碼。

void sRE_SpeechRecognized(object sender, SpeechRecognizedEventArgs e) 
    { 
     textbox1.Text = e.Result.Text; 
    } 
+0

是的。你說得對,我已經有了。但是如果我需要從多種形式調用它,該怎麼辦?那麼我會一直重複相同的代碼。 –

+0

然後,您應該使您的SpeechRecognitonEngine公開並靜態,如下所示:'code'public static SpeechRecognitionEngine sRE = new SpeechRecognitionEngine();那麼你應該找到你的另一種形式MainWindow.sRE。 – daniel59

+0

如何在語音類中將e.Result.Text轉換爲textbox1.Text在表單中的每次發言。 –