SpeechRecognition打包安卓后无法运行,提示找不到PyAudio如何解决?
问题根因
你遇到的报错核心原因是 PyAudio库不支持安卓平台:你在桌面端使用的PyAudio是面向桌面操作系统编译的版本,而buildozer打包安卓应用依赖的python-for-android项目并没有提供PyAudio的预编译配方,就算你把PyAudio写进依赖列表,打包时也无法正常将其编译进安卓安装包,SpeechRecognition调用麦克风时依赖PyAudio,自然就会抛出找不到库的错误。
解决步骤
1. 替换音频采集逻辑
放弃使用SpeechRecognition自带的sr.Microphone()方法,该方法强依赖PyAudio,安卓端可通过两种方式替代:
- 用pyjnius直接调用安卓原生的
MediaRecorderAPI采集音频,输出WAV/FLAC等谷歌语音识别支持的格式 - 替换PyAudio为安卓支持的音频采集库,将
audiostream(python-for-android预置支持的音频库)添加到buildozer.spec的依赖项中,用audiostream实现麦克风音频采集
2. 适配安卓动态权限
你仅在配置中声明权限是不够的,安卓6.0及以上版本需要应用运行时主动申请敏感权限,在调用录音功能前先执行权限申请逻辑:
from android.permissions import request_permissions, Permission # 按需申请需要的权限 request_permissions([Permission.RECORD_AUDIO, Permission.INTERNET])
3. 调整语音识别调用逻辑
采集到音频数据后,直接将音频对象传入sr.recognize_google()即可完成识别,不需要再走PyAudio的调用路径。
额外注意点
- 谷歌在线语音识别需要安卓设备安装谷歌服务框架才能正常使用,国内无谷歌服务的设备无法直接调用,建议根据使用场景替换为国内可用的语音识别API
- 记得从buildozer.spec的依赖项中删除PyAudio,避免打包时报编译错误
内容的提问来源于stack exchange,提问作者ChezB
相关产品推荐
相关产品推荐

