如何降低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
相关产品推荐
相关产品推荐

