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
相关产品推荐
相关产品推荐

