Python语音识别程序显示Listening但麦克风无法拾音问题求助
问题排查与解决方案
核心错误原因
- 识别方法传参错误:
takeCommand函数中调用recognize_google时第一个参数传入了Recognizer实例r,实际应该传入录音得到的audio对象,这是导致代码无法正常识别语音的直接原因。 - 缺少环境噪音校准:代码直接调用
listen方法接收语音,未提前校准环境噪音,会导致识别器将背景音判定为无效输入,长时间等待不会进入识别环节。
修复后的可运行代码
import pyttsx3 import speech_recognition as sr import datetime engine = pyttsx3.init('sapi5') voices = engine.getProperty('voices') engine.setProperty('voice', voices[0].id) def speak(audio): engine.say(audio) engine.runAndWait() def wishMe(): hour = int(datetime.datetime.now().hour) if hour>=0 and hour<12: speak("Good Morning!") elif hour>=12 and hour<18: speak("Good Afternoon!") else: speak("Good Evening!") speak("Hey Sir.") def takeCommand(): r = sr.Recognizer() with sr.Microphone() as source: # 新增环境噪音校准 r.adjust_for_ambient_noise(source, duration=0.5) print("Listening...") r.pause_threshold = 1 audio = r.listen(source) try: print("Recognizing...") # 修正传参错误,第一个参数改为audio query = r.recognize_google(audio, language='en-in') print(f"User said: {query}\n") except Exception as e: print("Say that again please...") return "None" return query if __name__ == "__main__": wishMe() takeCommand()
其他潜在问题排查
- 依赖缺失检查:需要同时安装
SpeechRecognition和PyAudio两个依赖,Windows下如果直接pip install pyaudio安装失败,可以先执行pip install pipwin,再执行pipwin install pyaudio完成安装。 - 系统权限检查:确认当前运行代码的终端/IDE拥有麦克风访问权限,可在系统隐私设置中查看修改。
- 网络检查:
recognize_google依赖谷歌识别接口,需要网络可以正常访问谷歌服务,否则会识别失败,可替换为国内可用的语音识别接口适配。
内容的提问来源于stack exchange,提问作者user16857772
相关产品推荐
相关产品推荐

