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

SpeechRecognition 3.9.x中show_all=False不生效问题求助

解决SpeechRecognition 3.9.x中show_all=False仍打印转录迭代信息的问题

show_all=False参数仅控制API返回结果的格式(是否返回完整识别结果字典),并不负责抑制库的调试日志或请求过程输出。针对你遇到的问题,可通过以下两种方案解决:

方案1:禁用SpeechRecognition库的调试日志

SpeechRecognition内部使用Python的logging模块输出调试信息,直接调整日志级别即可关闭这类打印:

import logging
import speech_recognition as sr

# 将SpeechRecognition库的日志级别设为WARNING,屏蔽DEBUG/INFO级别的输出
logging.getLogger("speech_recognition").setLevel(logging.WARNING)

r = sr.Recognizer()

with sr.AudioFile(filename) as source:
    audio_data = r.record(source)
    text = r.recognize_google(audio_data, language='ru-RU', show_all=False)

方案2:临时抑制标准输出/错误

如果打印信息来自底层请求依赖(如urllib3、requests),可以临时重定向标准输出和错误流:

import sys
import speech_recognition as sr

class SuppressOutput:
    def __enter__(self):
        self._original_stdout = sys.stdout
        self._original_stderr = sys.stderr
        # 重定向到空设备,Windows系统可替换为'NUL'
        sys.stdout = open('/dev/null', 'w')
        sys.stderr = open('/dev/null', 'w')
        return self

    def __exit__(self, exc_type, exc_val, exc_tb):
        sys.stdout.close()
        sys.stderr.close()
        sys.stdout = self._original_stdout
        sys.stderr = self._original_stderr

r = sr.Recognizer()

with sr.AudioFile(filename) as source:
    audio_data = r.record(source)
    # 在识别过程中抑制输出
    with SuppressOutput():
        text = r.recognize_google(audio_data, language='ru-RU', show_all=False)

补充说明

这类打印通常是库版本更新后新增的调试输出,和show_all参数的功能无关。优先使用方案1(日志控制),它更精准且不会影响其他代码的输出;方案2属于通用抑制手段,适合日志控制无效的场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 04:05:12