繁体   English   中英

C#语音识别(System.Speech.Recognition)问题

[英]C# speech recognition (System.Speech.Recognition) issues

几天来,我一直在使用各种测试程序进行语音识别,并且一切正常。 但是我已经尝试将其实现到我的OpenGL项目中,并且现在不调用“已识别”功能。

在Windows语音识别功能中(说“尝试说'开始收听'”的内容非常糟糕),当我说这些单词时,就会出现加载的单词,因此,我假设它可以正确检测单词,这仅适用于某些不触发事件的原因。

这是我一直在使用的代码。 您真正需要知道的(除了代码中显示的内容)是在其他地方调用AddCommands,以添加我一直在测试的几句话,并且在加载表单时会调用“ Initiate” 。

public class SpeechControls
{
    public static SpeechRecognizer sRecognizer;

    private static Dictionary<string, IVoiceControlable> controllers = new Dictionary<string, IVoiceControlable>();

    public static void Initiate()
    {
        sRecognizer = new SpeechRecognizer();
        sRecognizer.Enabled = true;

        sRecognizer.SpeechRecognized += new EventHandler<SpeechRecognizedEventArgs>(Recognized);
    }

    private static void Recognized(object obj, SpeechRecognizedEventArgs args)
    {
        controllers[args.Result.Text].TriggerCommand(args.Result.Text);
    }

    public static void AddCommands(string[] commands, IVoiceControlable control)
    {
        foreach (string str in commands)
        {
            controllers.Add(str, control);
        }

        sRecognizer.LoadGrammar(new Grammar(new GrammarBuilder(new Choices(commands))));
    }
}

有谁知道为什么不会触发“已识别”?

感谢您的帮助,不胜感激。

由于OpenGL运行游戏循环而不是事件监听,因此线程完全被循环占用。 要开始侦听命令,需要第二个线程。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM