语音识别引擎和复选框的困难时期

时间:2014-12-17 19:51:38

标签: c# .net speech-recognition speech-to-text

我很难将此代码与复选框结合使用。

我希望代码在启用复选框时运行(true),并在复选框被禁用时停止(false)但由于某种原因我不能和我想要一些帮助。

如果有人提出解决方案或提出异议,我将不胜感激。

代码为: private void Form1_Load(object sender,EventArgs e)

        Choices cities = new Choices(new string[] { "google" });
        Grammar gr = new Grammar(new GrammarBuilder(cities));


        SpeechRecognitionEngine recognize = new SpeechRecognitionEngine();
        SpeechSynthesizer Synth = new SpeechSynthesizer();
        recognize.SetInputToDefaultAudioDevice();
        DictationGrammar Voc = new DictationGrammar();
        recognize.LoadGrammar(Voc);
        recognize.RecognizeAsync(RecognizeMode.Multiple);
        recognize.SpeechRecognized += new EventHandler<SpeechRecognizedEventArgs>(recognize_SpeechRecognized);



    }

    **private void recognize_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)**
    {
        if (e.Result.Text == "google")

            System.Diagnostics.Process.Start("http://www.google.com");
    }



        **(and possibly sth that touches the solution?)**

    private void checkBox1_CheckedChanged(object sender, EventArgs e)
    {
        if (checkBox1.Checked == true)
            recognize.RecognizeAsync(RecognizeMode.Multiple);
        else if (checkBox1.Checked == false) // turn off
            recognize.RecognizeAsyncCancel();
    }

感谢

3 个答案:

答案 0 :(得分:0)

您需要将checkBox1_CheckedChanged与前端的复选框相关联(checkBox1我假设)。 <asp:CheckBox id="checkBox1" OnCheckedChanged="checkBox1_CheckedChanged" />

答案 1 :(得分:0)

不幸的是它没有用,所以我用按钮制作这个应用程序。

private void button1_Click(object sender,EventArgs e)         {             recognize.RecognizeAsync(RecognizeMode.Multiple);             button1.Enabled = false;         }

感谢你的时间

答案 2 :(得分:0)

我猜您希望复选框代表语音识别当前是否处于活动状态,并使用其进行切换。您的代码的问题在于,复选框的初始状态与语音识别的状态不对应,语音识别的状态立即开始。

您可以通过将复选框的初始选中状态设置为true或在初始块中删除以下行来解决此问题:

recognize.RecognizeAsync(RecognizeMode.Multiple);

因为该代码将始终在复选框事件处理程序上运行。您还需要将recognize变量的定义拉到Form1_Load之外的类级别。