2

决定连接一个简单的语音写作应用程序作为学习语音识别 + 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.
4

1 回答 1

5

这里

您的代码似乎有两个问题:

  1. 您应该调用RecognizeAsyncCancelRecognizeAsyncStop,但不能同时调用两者。他们做同样的事情,除了RecognizeAysncCancel截断输入而RecognizeAsyncStop没有。我猜连续调用它们会导致您看到的错误。

  2. 两者RecognizeAsyncCancel都有RecognizeAsyncStop完成时的回调。在最终操作完成之前,您不应对引擎进行任何其他操作。有关如何执行此操作的示例,请参阅链接。

于 2013-07-30T05:02:09.420 回答