语音识别在识别多次之后报错,不能继续工作。
语音识别报错:
[Utility] +[AFAggregator logDictationFailedWithError:] Error Domain=kAFAssistantErrorDomain Code=7 "(null)" Error Domain=kAFAssistantErrorDomain Code=7 "(null)" [Client] -[AFDictationConnection forcedOfflineDictationIsAvailableForLanguage:synchronous:]_block_invoke Offline language fetch failed: Error Domain=NSCocoaErrorDomain Code=4097 "connection to service on pid 0 named com.apple.assistant.dictation" UserInfo={NSDebugDescription=connection to service on pid 0 named com.apple.assistant.dictation} [Utility] +[AFAggregator logDictationFailedWithError:] Error Domain=kAFAssistantErrorDomain Code=203 "Retry" UserInfo={NSLocalizedDescription=Retry, NSUnderlyingError=0x280d88c30 {Error Domain=SiriSpeechErrorDomain Code=1 "(null)"}} Error Domain=kAFAssistantErrorDomain Code=203 "Retry" UserInfo={NSLocalizedDescription=Retry, NSUnderlyingError=0x280d88c30 {Error Domain=SiriSpeechErrorDomain Code=1 "(null)"}}
一旦报错,即使将语音引擎相关的对象都置空重新创建,重新发起语音识别任务,也还是会报错。
我猜测语音识别内部有的对象可能是单例,报错之后导致对象没有被释放,所以下次发起语音识别任务时还是报之前的错误。
一直找不到问题所在,后来我同事发现频繁的调用[self.recognitionTask cancel]
,就会出现问题。改成[self.recognitionTask finish];
就没问题。
// Cancel the previous task if it's running.
if (self.recognitionTask) {
//[self.recognitionTask cancel];
[self.recognitionTask finish];
}
self.recognitionTask = nil;
cancel会导致内存问题,建议recognitionTask直接调用finish。
为我这个优秀的同事点赞
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)