2015-06-12 49 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在表单中的每次发言。 –