几天来,我一直在使用语音识别,使用各种测试程序,都运行得很好。但是,我尝试将其实现到我的OpenGL项目中,但'Recognized‘函数现在没有被调用。
在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))));
}
}有人知道为什么“识别”不会被触发吗?
谢谢你的帮助,非常感谢。
发布于 2012-07-16 17:02:02
因为OpenGL运行的是游戏循环,而不是事件侦听,所以线程完全被循环占用。要开始监听命令,需要第二个线程。
https://stackoverflow.com/questions/11485438
复制相似问题