几天来,我一直在使用各种测试程序进行一些语音识别,一切都很好。但是我已经尝试将它实现到我的 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))));
}
}
有谁知道为什么不会触发“已识别”?
感谢您的帮助,非常感谢。