Python SpeechRecognition 在收听时忽略超时并挂起
Python SpeechRecognition ignores timeout when listening, and hangs
我正在使用 SpeechRecognition
包来尝试识别语音。当我调用 recognizer.listen(mic, timeout=5.0)
时,超时被完全忽略了。有时即使我没有对着麦克风说话,它也会在一秒或更短的时间内 returns。有时它会在 returning 之前等待 30 秒或更长时间。有时它根本没有 return,或者只是花费了很长时间以致于它似乎挂起。最重要的是,它永远不会超时。
如何让语音识别器尊重我的时间?
尝试设置 recognizer.dynamic_energy_threshold = False
.
要了解其工作原理,请打印出 recognizer.energy_threshold
以查看当 recognizer.dynamic_energy_threshold
为 True
时不同迭代的值是多少。
我发现如果允许能量阈值是动态的,有时它会把自己设置得很低。然后,即使你没有说话,识别器也会听到连续的环境噪音,并认为你在连续说话。它不会 return 直到它停止听到 "speech"。它不会超时,除非它在超时时间内听到完全静音。
我将能量阈值设置为 400,并且 recognizer.dynamic_energy_threshold = False
。这样,识别器会将一些背景噪音(包括沉重的呼吸声)解释为完全安静,并在我不说话时按预期超时。
我正在使用 SpeechRecognition
包来尝试识别语音。当我调用 recognizer.listen(mic, timeout=5.0)
时,超时被完全忽略了。有时即使我没有对着麦克风说话,它也会在一秒或更短的时间内 returns。有时它会在 returning 之前等待 30 秒或更长时间。有时它根本没有 return,或者只是花费了很长时间以致于它似乎挂起。最重要的是,它永远不会超时。
如何让语音识别器尊重我的时间?
尝试设置 recognizer.dynamic_energy_threshold = False
.
要了解其工作原理,请打印出 recognizer.energy_threshold
以查看当 recognizer.dynamic_energy_threshold
为 True
时不同迭代的值是多少。
我发现如果允许能量阈值是动态的,有时它会把自己设置得很低。然后,即使你没有说话,识别器也会听到连续的环境噪音,并认为你在连续说话。它不会 return 直到它停止听到 "speech"。它不会超时,除非它在超时时间内听到完全静音。
我将能量阈值设置为 400,并且 recognizer.dynamic_energy_threshold = False
。这样,识别器会将一些背景噪音(包括沉重的呼吸声)解释为完全安静,并在我不说话时按预期超时。