我试图让我的程序听我说只有当我按下shift键所谓的按键通话,我试着使用下面的代码但是当按下键的时间超过1-2秒我得到以下错误:
未处理的类型' System.InvalidOperationException'发生在System.Speech.dll中 附加信息:识别器识别时无法执行此操作。
以下是代码的一部分:
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.ShiftKey)
{
label1.BackColor = Color.Green;
label1.Text = "Speak";
RecEngine.RecognizeAsync(RecognizeMode.Multiple);
e.SuppressKeyPress = true;
}
}
private void Form1_KeyUp(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.ShiftKey)
{
label1.BackColor = Color.Yellow;
label1.Text = "Ready";
RecEngine.RecognizeAsyncStop();
e.SuppressKeyPress = true;
}
}
答案 0 :(得分:0)
按下按钮时会重复调用Form1_KeyDown
函数。
您需要检查按钮是否已被按下
private bool recognitionRunning;
private void Form1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.ShiftKey && !recognitionRunning)
{
label1.BackColor = Color.Green;
label1.Text = "Speak";
RecEngine.RecognizeAsync(RecognizeMode.Multiple);
e.SuppressKeyPress = true;
recognitionRunning = true;
}
}
private void Form1_KeyUp(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.ShiftKey)
{
label1.BackColor = Color.Yellow;
label1.Text = "Ready";
RecEngine.RecognizeAsyncStop();
e.SuppressKeyPress = true;
recognitionRunning = false;
}
}