开场白:之前好久不更新了,下次更新要好久。

正题:最近几年一直在负责公司的语音识别模块,这其中我们更改了很多次语音逻辑,但是不能更改的逻辑有以下几点:

1. 创建语音引擎

2. 创建语音识别Task

3. 传递Buffer

4. 进行识别

 

而为什么更改很多次语音识别逻辑,第一是不断的学习中意识到了不足,第二是因为苹果在语音识别方面做的也不是很完善经常进行更改和升级.

第一点不说了,第二点我来吐个槽,在iOS 13.1 -> iOS 13.3 这个过程中语音识别引擎进行了多次更改导致我们很多用户使用的时候很迷茫 一会好一会坏的,最后我们更改了整体的逻辑,避免了BUG的出现。(改完以后在iOS 13.3 之后的版本苹果修复了BUG,旧代码没事了,Em....... 至少我那一阵是骂骂咧咧的)

言归正传:Error Domain=kAFAssistantErrorDomain Code=7, 这个BUG我们来说一下,这个错误会出现在iOS 14的系统当中,我是用14.2 设备做的测试。

当我们频繁调用 [SFSpeechRecognitionTask cancel]  来结束Task 时会出现这个错误,这会导致语音识别引擎不能使用,即使我清除了语音识别引擎对象依然没有作用,只有重启APP.

结束Task 之前我们用两种方式来结束这个Task, 说下我的理解 :

//结束Task  语音内容 全都不要了,爱谁谁.

[SFSpeechRecognitionTask cancel];



//结束Task 现有语音内容保存,之后的就不要了.

[SFSpeechRecognitionTask finish];

一般如果我们需要手动关闭Task 之前的内容肯定已经获取到进行了处理,是不需要的 所以会调用[SFSpeechRecognitionTask cancel];

那么问题来了,之前版本的iOS系统 还算讲道理,不要就不要呗,我不管。 

更14后你会发现,多次不要的话,我就不让你用了,着实有点小家子气,会提示你 Error Domain=kAFAssistantErrorDomain Code=7。

这个时候只要你改成 [SFSpeechRecognitionTask finish]; 就可以正常使用。

不过会提示一个 Code = 209 的错误,这个错误不会影响你使用语音识别引擎,我认为只是一个错误操作的提示。( iOS 13的系统中 不提示 209 , 提示的是 code=2, 效果一样)

我没有其他系统的设备了 所以没有测试其他系统版本。

 

以上,

xxxxxxxx , 学以致用更感谢。

 

 

 

 

 

 

 

Logo

CSDN联合极客时间,共同打造面向开发者的精品内容学习社区,助力成长!

更多推荐