设置SFSpeechAudioBufferRecognitionRequest端上识别属性时遇1101错误求助
解决SFSpeechAudioBufferRecognitionRequest requiresOnDeviceRecognition=true时的1101错误
错误原因分析
Error Code 1101属于kAFAssistantErrorDomain,核心原因是设备未正确安装或加载离线语音识别模型——即便SFSpeechRecognizer.supportsOnDeviceRecognition返回true,也可能存在模型未下载、损坏或加载异常的情况。
解决方案
1. 检查并重新下载离线语音模型
- 打开iPhone「设置」→「通用」→「键盘」→「语音」→「下载语音」
- 找到当前App使用的语言(如简体中文、英文),确认对应离线模型已完成下载
- 若已下载,可尝试删除后重新下载,排除模型损坏问题
2. 调整音频会话模式
你的代码中使用了.measurement音频会话模式,该模式对资源调用有严格限制,不适合离线语音识别场景,建议修改为.spokenAudio模式:
try audioSession.setCategory(.record, mode: .spokenAudio, options: .duckOthers)
.spokenAudio是专门针对语音交互优化的模式,能更好适配离线识别需求。
3. 延迟启动音频引擎(适配iOS 16小版本bug)
iOS 16.0.2存在离线模型加载延迟的问题,可在设置requiresOnDeviceRecognition后短暂延迟再启动音频引擎:
request.requiresOnDeviceRecognition = true // 添加0.5秒延迟,确保模型加载完成 DispatchQueue.main.asyncAfter(deadline: .now() + 0.5) { do { try audioEngine.start() } catch { // 处理引擎启动错误 } }
注意调整代码结构,将audioEngine.start()移至延迟闭包中,避免同步启动导致模型未就绪。
4. 确认App权限配置
确保Info.plist中已正确添加以下权限:
NSMicrophoneUsageDescription:说明麦克风使用场景NSSpeechRecognitionUsageDescription:说明语音识别使用场景
权限缺失可能间接导致离线识别初始化失败。
5. 升级系统版本
iPhone X的iOS 16.0.2存在离线识别的小版本bug,建议升级至iOS 16.x系列的最新正式版,苹果通常会在后续版本修复这类模型加载问题。
内容的提问来源于stack exchange,提问作者Laur Stefan
相关产品推荐
相关产品推荐

