我一直在ContinuousRecognitionSession.StartAsync方法上得到这个异常:“由于对象的当前状态,操作无效。”即使当SpeechRecognizer对象处于“空闲”状态时也是如此。下面是代码片段
if (SpeechRecognizer.State == SpeechRecognizerState.Idle)
{
await SpeechRecognizer.ContinuousRecognitionSession.StartAsync();
}
在这里,https://msdn.microsoft.com/en-us/windows/uwp/input-and-devices/enable-continuous-dictation提到语音识别器必须处于“空闲”状态才能调用StartAsync()。这里怎么了?
发布于 2016-07-21 05:15:38
虽然您在尝试调用StartAsync
方法时得到了此异常,但问题可能不在这里。正如您所看到的,在官方示例中,它也使用了这段代码,并且运行良好。
由于我没有您的代码的其他部分,所以很难说是什么导致了这个异常。我建议您遵循连续听写中的步骤,并参考语音识别与合成样本来实现您自己的步骤。
这里的一些要点是:
导致问题的一个可能原因是初始化中缺少编译约束。在开始语音识别之前,我们需要打电话给SpeechRecognizer.CompileConstraintsAsync法。
参考文件:
CompileConstraintsAsync必须始终在RecognizeAsync或RecognizeWithUIAsync之前调用,即使约束条件属性中没有指定约束。
如果初始化时遗漏了await speechRecognizer.CompileConstraintsAsync();
,则在启动识别会话时将得到Operation is not valid due to the current state of the object.
异常。
https://stackoverflow.com/questions/38473129
复制相似问题