【问题标题】:How to press a key using voice recognition in C#如何在 C# 中使用语音识别按键
【发布时间】:2020-05-26 06:05:42
【问题描述】:

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

  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、r,它可以工作,但如果我打开其他程序,让我们说如果你按 q,你会赢得一些东西,但它不起作用。我如何使用它?我打开视觉,运行应用程序,然后打开另一个应用程序,一个游戏。并且不起作用。 我认为问题应该出在 SendKeys 但我不知道如何解决它:\ 请问有什么帮助吗?

【问题讨论】:

  • "...如果我打开其他程序..." - 还有什么其他程序?该程序是否具有支持按 q/w/e 的特定功能?你期望会发生什么?是焦点问题吗?作为修复,您能否让您的应用程序优先“关注”其他应用程序?
  • @gravity 它被称为英雄联盟一个 moba,你有一些法术,如果你按 q 激活第一个法术,我想在我施法时激活 q 法术。我对优先级一无所知,我不知道我应该如何优先考虑我的游戏:\
  • 不能,key被当前运行的程序截取了。看看您是否可以使用某些功能键或组合键。
  • 您需要将其他窗口置于前台

标签: c# speech-recognition


【解决方案1】:

绝对缺少发送键的 SendWait 属性以及字母上的大括号应该看起来像

SendKeys.SendWait("{q}"); sapi 也没有实现语音字母选择,所以你的选择必须拼写字母的发音,所以 (q) 实际上是 (cue),(w) 将被拼写为 “加倍你”或类似的东西

【讨论】:

    猜你喜欢
    • 2018-02-23
    • 2020-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多