如何在C#中使用语音识别按键

时间:2016-11-22 19:38:18

标签: c# speech-recognition

当我说出来时,我想制作一个按键盘字母的程序

  namespace LOL
  {
public partial class Form1 : Form
{
    Choices list = new Choices();
    SpeechSynthesizer ss = new SpeechSynthesizer();
    PromptBuilder pb = new PromptBuilder();
    SpeechRecognitionEngine sre = new SpeechRecognitionEngine();

    public Form1()
    {
        InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {

    }

    private void button1_Click(object sender, EventArgs e)
    {
        list.Add(new string[] { "q", "w", "e" });
        Grammar gr = new Grammar(new GrammarBuilder(list));
        try
        {
            sre.RequestRecognizerUpdate();
            sre.LoadGrammar(gr);
            sre.SpeechRecognized += Sre_SpeechRecognized;
            sre.SetInputToDefaultAudioDevice();
            sre.RecognizeAsync(RecognizeMode.Multiple);
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message, "Error");
        }
        button1.Enabled = false;
    }

    private void Sre_SpeechRecognized(object sender, SpeechRecognizedEventArgs e)
    {
        switch (e.Result.Text.ToString())
        {

            case "q":
                SendKeys.Send("q");
            break;

            case "w":
                SendKeys.Send("w");
                break;

            case "e":
                SendKeys.Send("e");
                break;


            default:
                break;
        }
    }
}

如果我打开记事本并说q,w,它可以工作,但如果我打开其他程序时,如果按q说你赢了一些它不起作用。我怎么用它?我打开视觉,运行应用程序,然后打开另一个应用程序,一个游戏。并且不起作用。 我认为问题应该在SendKeys,但我不知道如何解决它:\ 请问有什么帮助吗?

1 个答案:

答案 0 :(得分:0)

绝对缺少发送键的SendWait属性以及字母上的大括号应该类似于

SendKeys.SendWait(“ {q}”); sapi也没有实现语音字母选择,因此您必须选择拼写字母的发音方式,以便(q)实际上是(cue),(w)被拼写为 “加倍您”或其他类似方式

相关问题