语音识别引擎和复选框的困难时期
Posted
技术标签:
【中文标题】语音识别引擎和复选框的困难时期【英文标题】:Difficult times with Speech Recognition Engine and checkboxes 【发布时间】:2015-02-16 11:31:28 【问题描述】:我很难将此代码与复选框结合起来。
我希望代码在启用复选框时运行(真),并在禁用复选框时停止(假),但由于某种原因我不能,我需要一些帮助。
如果有人有解决方案或不同的建议,我将不胜感激。
代码为: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();
谢谢
【问题讨论】:
【参考方案1】:我猜您希望该复选框表示语音识别当前是否处于活动状态并使用它来切换它。您的代码的问题是复选框的初始状态与您立即开始的语音识别状态不对应。
您可以通过将复选框的初始选中状态设置为true
或删除初始块中的以下行来解决它:
recognize.RecognizeAsync(RecognizeMode.Multiple);
因为这段代码无论如何都会在复选框事件处理程序上运行。您还需要将recognize
变量的定义拉到Form1_Load
之外的类级别。
【讨论】:
【参考方案2】:您需要将checkBox1_CheckedChanged
与前端的复选框相关联(我假设为checkBox1
)。 <asp:CheckBox id="checkBox1" OnCheckedChanged="checkBox1_CheckedChanged" />
【讨论】:
【参考方案3】:不幸的是它没有帮助,所以我用按钮制作了这个应用程序。
private void button1_Click(object sender, EventArgs e) 识别.RecognizeAsync(RecognizeMode.Multiple); button1.Enabled = false;
感谢您的宝贵时间
【讨论】:
以上是关于语音识别引擎和复选框的困难时期的主要内容,如果未能解决你的问题,请参考以下文章