C#语音识别(系统、语音、识别)问题
几天来,我一直在用各种测试程序进行一些语音识别,一切都很好。但是,我已经尝试将其实现到我的OpenGL项目中,现在没有调用函数“Recognized” 在Windows语音识别系统中(有很多“试着说‘开始听’”),当我说的时候会出现加载的单词,所以我假设它正确地检测到单词,只是出于某种原因没有触发事件 这是我一直在使用的代码。您真正需要知道的是(除了代码中显示的内容之外),AddCommands在其他地方被调用,以添加我一直在测试的几个单词,并且在加载表单时调用“Initiate”C#语音识别(系统、语音、识别)问题,c#,speech-recognition,C#,Speech Recognition,几天来,我一直在用各种测试程序进行一些语音识别,一切都很好。但是,我已经尝试将其实现到我的OpenGL项目中,现在没有调用函数“Recognized” 在Windows语音识别系统中(有很多“试着说‘开始听’”),当我说的时候会出现加载的单词,所以我假设它正确地检测到单词,只是出于某种原因没有触发事件 这是我一直在使用的代码。您真正需要知道的是(除了代码中显示的内容之外),AddCommands在其他地方被调用,以添加我一直在测试的几个单词,并且在加载表单时调用“Initiate” public
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))));
}
}
公共类SpeechControls
{
公共静态语音识别器;
私有静态字典控制器=新字典();
公共静态无效初始化()
{
sRecognizer=newspeechrecognizer();
sRecognizer.Enabled=true;
sRecognizer.SpeechRecognized+=新事件处理程序(已识别);
}
已识别私有静态无效(对象对象对象、SpeechRecognitizedEventArgs)
{
控制器[args.Result.Text].TriggerCommand(args.Result.Text);
}
公共静态void AddCommands(字符串[]命令,IVoiceControlable控件)
{
foreach(命令中的字符串str)
{
添加(str,control);
}
LoadGrammar(新语法(新语法构建器(新选项(命令)));
}
}
有人知道为什么不会触发“已识别”吗
感谢您的帮助,非常感谢。因为OpenGL运行的是游戏循环而不是事件监听,所以线程完全被循环占用。要开始侦听命令,需要另一个线程。调用
Initiate
的位置在哪里?哦,是的,很抱歉,在加载主窗体时也调用了该线程。您忘记为SpeechRecognitionRejected和AudioSignalProblemOccessed事件编写处理程序。没有触发任何事件。。。我已经处理了所有的事情,但没有任何事情发生。