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

如何降低Python speech_recognition库语音识别的结果返回延迟?

语音识别结束到返回结果的耗时缩短方案

默认的listen方法参数和校准逻辑是导致延迟的主要原因,可通过以下方法优化:

  • 调整话音结束判定阈值
    Recognizer类的pause_threshold参数默认值为1,即检测到1秒的静音才会判定为话音结束,你可以根据自身说话习惯调整到0.3~0.8之间,避免不必要的等待。
  • 缩短环境噪声校准时长
    每次启动监听前调用的adjust_for_ambient_noise方法默认校准时长为1秒,可将duration参数调低到0.2~0.5,嘈杂环境可适当调高,既保证噪声阈值准确,也减少校准等待时间。
  • 可选配置超时和最长语音限制
    增加timeout参数设置等待用户说话的最大时长,phrase_time_limit设置单条语音最长识别时长,避免程序长时间无响应。
  • 降低网络耗时影响
    你当前使用的recognize_google是在线识别接口,网络延迟会直接影响返回速度,如果对准确率要求不高,可以替换为本地识别引擎比如CMU Sphinx,完全消除网络请求耗时。

优化后的代码示例:

import speech_recognition as sr

r = sr.Recognizer()
# 调整话音结束停顿阈值,单位为秒,这里设为0.5
r.pause_threshold = 0.5
m = sr.Microphone()

with m as source:
    # 提前做一次噪声校准,时长0.5秒
    r.adjust_for_ambient_noise(source, duration=0.5)

while True:
    with m as source:
        print('ready')
        # 增加参数:timeout是等待说话的超时秒数,phrase_time_limit是单条语音最长秒数,可按需调整
        audio = r.listen(source, timeout=5, phrase_time_limit=10)
        try:
            Text = r.recognize_google(audio, language='en')
            print(Text)
        except sr.UnknownValueError:
            print("无法识别语音")
        except sr.RequestError:
            print("接口请求失败")

如果pause_threshold设置得过小,可能会出现你还没说完就被截断识别的情况,需要根据实际使用场景调试到合适的数值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 11:27:00