You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python使用speech_recognition语音识别模块运行无输出如何解决

speech_recognition模块无输出问题解决方案

代码卡在Listening:阶段无后续输出,核心是speech_recognition的listen()方法默认未做环境噪音校准,会持续等待符合阈值的静音段才停止录制,无法触发后续识别逻辑,可按以下步骤修复:

  • 第一步:添加环境噪音校准:在创建source对象后先调用root.adjust_for_ambient_noise(source, duration=1),让识别器用1秒时间学习当前环境的噪音水平,自动设置能量阈值过滤背景音。
  • 第二步:给listen()方法添加超时和最长录制时间限制,避免无限等待:可添加timeout(最长等待用户开口的时间)、phrase_time_limit(单次录制的最长时长)两个参数,到点自动停止录制。
  • 第三步:添加异常捕获逻辑,避免识别失败时程序直接崩溃无输出。
  • 第四步:如果校准后还是无响应,可手动指定麦克风设备索引:Windows多音频设备场景下,默认调用的麦克风可能不是你正在使用的设备,可先打印所有麦克风列表,选择对应设备的索引传入sr.Microphone(device_index=xxx)。

修复后可运行代码

import speech_recognition as sr

# 取消下方两行注释可打印所有麦克风设备,确认你要用的设备索引
# for index, name in enumerate(sr.Microphone.list_microphone_names()):
#     print(f"麦克风索引{index}: {name}")

root = sr.Recognizer()
# 能量阈值:高于这个值判定为人声,可根据环境噪音大小手动调整
root.energy_threshold = 4000
# 停顿阈值:说话停多久判定为本次输入结束,单位秒
root.pause_threshold = 0.8

# 要指定设备的话改成sr.Microphone(device_index=你的设备索引)
with sr.Microphone() as source:
    # 校准环境噪音
    root.adjust_for_ambient_noise(source, duration=1)
    print('Listening:')
    # 加时间限制:5秒内没人说话就超时,最多录制10秒自动停止
    audio = root.listen(source, timeout=5, phrase_time_limit=10)

try:
    print('识别中...')
    # 要识别中文必须加language参数,默认是英文识别
    text = root.recognize_google(audio, language='zh-CN')
    print(f'识别结果:{text}')
except sr.UnknownValueError:
    print('无法识别音频内容')
except sr.RequestError as e:
    print(f'请求谷歌识别服务失败:{e}')
except sr.WaitTimeoutError:
    print('等待语音输入超时')

补充说明

谷歌在线语音识别需要网络能正常访问谷歌服务,若无法满足网络要求,可将识别引擎替换为离线的recognize_sphinx,中文识别精度会相对更低。

内容的提问来源于stack exchange,提问作者SinaSalehi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 11:48:03