Python SpeechRecognition在侦听时忽略超时,并挂起

时间:2015-09-24 04:33:50

标签: python speech-recognition

我正在使用SpeechRecognition包来尝试识别语音。当我调用recognizer.listen(mic, timeout=5.0)时,完全忽略超时。有时它会在一秒或更短的时间后返回,即使我没有对着麦克风讲话。有时它会在返回前等待30秒或更长时间。有时它根本不会返回,或者只是花了很长时间才显得悬挂。最重要的是,它永远不会超时。

如何让语音识别器尊重我的领带?

1 个答案:

答案 0 :(得分:2)

尝试设置recognizer.dynamic_energy_threshold = False

要了解其工作原理,请打印recognizer.energy_threshold,以便在recognizer.dynamic_energy_thresholdTrue时查看其对不同迭代的值。

我发现如果允许能量阈值是动态的,有时它会使自己设定得非常低。然后,即使您没有说话,识别器也会听到持续的环境噪音,并认为您正在连续说话。直到它停止听到“演讲”才会返回。除非在超时时间内听到完全静音,否则它不会超时。

我将能量阈值设置为400,recognizer.dynamic_energy_threshold = False。这样,识别器将一定量的背景噪声(包括沉重的呼吸)解释为完全静音,并在我不说话时按预期超时。