运行speech_recognition调用谷歌语音识别返回Bad Request报错如何解决
问题解答
环境变量修改的影响
修改Python环境变量路径通常不会直接触发该Bad Request报错。该报错本质是调用Google语音识别接口时发送的请求不符合接口要求,触发了400状态码。仅当你修改环境变量后导致系统代理配置异常、Python依赖包加载错误时,才可能间接引发该问题。
可落地的解决步骤
- 优先检查网络连通性:
recognize_google默认调用谷歌公开识别接口,需要确保当前网络可以正常访问谷歌服务,若使用代理需确认代理规则覆盖了Python的urllib请求。 - 补充音频校准与参数配置:调整代码,增加环境噪音校准逻辑,同时显式指定识别语言,避免空音频或语言不匹配导致的非法请求:
import speech_recognition as sr r = sr.Recognizer() with sr.Microphone() as source: # 新增:校准环境噪音 r.adjust_for_ambient_noise(source, duration=0.5) print('say something') audio = r.listen(source) # 新增:指定识别语言,中文用zh-CN,英文用en-US voice_data = r.recognize_google(audio, language='zh-CN') print(voice_data)
- 升级speech_recognition库:旧版本库内置的谷歌接口端点已被废弃,会直接返回400,执行命令升级即可:
pip install --upgrade speechrecognition - 验证音频有效性:在
r.listen(source)后增加日志print(len(audio.get_raw_data())),如果输出数值极小甚至为0,说明麦克风未正常收录声音,需检查麦克风权限、设备选择是否正确。 - 替换识别接口:如果上述方案都不生效,可以换用本地部署的OpenAI Whisper接口,不需要调用外部公网接口,可彻底避免该类请求错误。
内容的提问来源于stack exchange,提问作者StudentCSE
相关产品推荐
相关产品推荐

