Expo Speech在iOS端无法运行问题求助 - React Native
Expo Speech在iOS端无法运行的排查与修复方案
针对你遇到的SDK 49下expo-speech在iOS 16.4/17.0无法运行、Android正常的问题,可从以下几个方向排查修复:
1. 补全iOS权限配置
iOS对语音相关功能有权限强制要求,即使仅用于文本朗读,也需在app.json或app.config.js中添加权限声明,否则会静默失败:
{ "expo": { "ios": { "infoPlist": { "NSSpeechRecognitionUsageDescription": "需要使用语音合成功能播放文本内容", "NSMicrophoneUsageDescription": "若需语音识别功能则添加,仅播放场景可忽略,但部分iOS版本仍需配置" } } } }
2. 添加错误回调排查问题
原代码未处理错误场景,iOS端可能因未知错误触发但无反馈,建议补充onError回调定位具体问题:
Speech.speak(text, { onDone: () => { setIsPlaying(false); }, onError: (error) => { console.error('语音播放出错:', error); setIsPlaying(false); } });
另外无需对Speech.speak使用await,该方法本身是异步触发,await不会改变其执行逻辑。
3. 修复SDK兼容问题
SDK 49的expo-speech在iOS 16+存在已知兼容bug,可尝试以下操作:
- 清除Expo缓存:执行
npx expo start --clear - 升级expo-speech至最新兼容版本:执行
npx expo install expo-speech@latest - 检查项目中是否有其他音频类依赖(如expo-av)与expo-speech产生冲突,可临时移除其他音频依赖测试
4. 检查iOS系统设置
确认设备本身无功能限制:
- 前往「设置-辅助功能-语音内容」,确保朗读相关功能处于开启状态
- 检查设备未静音、音量正常,且无其他应用占用音频通道
内容的提问来源于stack exchange,提问作者Hasret Özkan
相关产品推荐
相关产品推荐

