为什么VSCode中基于sr库的语音识别代码无法接收指令
问题排查方案
检查依赖完整性
特别注意:SpeechRecognition库的Microphone类强依赖PyAudio库,80%以上的麦克风调用失败问题都是因为该依赖未正确安装- Windows系统:先执行
pip install pipwin,再执行pipwin install pyaudio,不要直接用pip install pyaudio安装,大概率会出现编译报错 - macOS系统:先执行
brew install portaudio安装底层依赖,再执行pip install pyaudio - Linux系统:先执行
sudo apt install portaudio19-dev python3-pyaudio安装系统依赖,再执行pip install pyaudio
- Windows系统:先执行
检查麦克风权限
确认VSCode及对应的代码运行终端已获得麦克风访问权限:- Windows:进入「设置-隐私和安全性-麦克风」,打开「允许桌面应用访问麦克风」开关
- macOS:进入「系统设置-隐私与安全性-麦克风」,勾选VSCode/对应终端的权限选项
- Linux:执行
arecord -l命令,确认麦克风设备被系统正常识别,当前用户有音频设备访问权限
修复代码逻辑缺陷
你当前的代码缺少环境噪音校准步骤,会导致识别器把背景噪音判定为持续语音,一直无法结束监听,修改后的参考代码如下:
import speech_recognition as sr r = sr.Recognizer() with sr.Microphone() as source: # 新增环境噪音校准,duration为校准时长,单位秒 r.adjust_for_ambient_noise(source, duration=0.5) print("Listening...") # 可根据自身说话习惯调整停顿阈值,单位秒,停顿超过该值则判定语音结束 r.pause_threshold = 1.5 audio = r.listen(source) # 新增异常捕获,方便定位具体问题 try: print("Recognizing...") # 若要识别英文,把language参数改成'en-us'即可 query = r.recognize_google(audio, language='zh-cn') print(f"识别结果: {query}\n") except sr.UnknownValueError: print("无法识别语音内容,请重新说话") except sr.RequestError as e: print(f"识别服务请求失败,请检查网络连接: {e}") except Exception as e: print(f"未知错误: {e}")
- 其他排查方向
- 检查麦克风是否被其他应用占用,关闭所有占用麦克风的软件后重试
- 确认系统默认录音设备是你正在使用的麦克风,可在系统声音设置中调整默认输入设备
内容的提问来源于stack exchange,提问作者kailash Choudhary
相关产品推荐
相关产品推荐

