决定连接一个简单的语音编写应用程序作为学习语音识别 + F# 的测试平台。为了允许启动或停止语音识别,我连接了以下方法:
let Activate () =
sp.RecognizeAsync(RecognizeMode.Multiple)
let Deactivate () =
sp.RecognizeAsyncCancel()
sp.RecognizeAsyncStop()
我可以使用默认语法词典很好地启动引擎。当我调用 deactivate 方法时,问题就出现了。我经常遇到以下异常:
An unhandled exception of type 'System.InvalidOperationException' occurred in System.Speech.dll
Additional information: Cannot perform this operation while the recognizer is doing recognition.
最佳答案
参见here .
您的代码似乎存在两个问题:
您应该调用
RecognizeAsyncCancel
或RecognizeAsyncStop
,但不能同时调用两者。它们执行相同的操作,只是RecognizeAysncCancel
会截断输入,而RecognizeAsyncStop
则不会。我猜测连续调用它们会导致您看到的错误。RecognizeAsyncCancel
和RecognizeAsyncStop
都有完成时的回调。在最终操作完成之前,您不应该对引擎执行任何其他操作。请参阅链接以了解如何执行此操作的示例。
关于asynchronous - 语音识别引擎未关闭 - 无效操作异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17937305/