我正在使用 SpeechRecognition
包来尝试识别语音。当我调用 recognizer.listen(mic, timeout=5.0)
时,超时被完全忽略。有时即使我没有对着麦克风说话,它也会在一秒或更短的时间内返回。有时它会等待 30 秒或更长时间才能返回。有时它根本不返回,或者只是花费了很长时间以致于它似乎已挂起。最重要的是,它永远不会超时。
如何让语音识别器尊重我的超时?
最佳答案
尝试设置 recognizer.dynamic_energy_threshold = False
。
要了解其工作原理,打印出 recognizer.energy_threshold
以查看当 recognizer.dynamic_energy_threshold
为 True
时不同迭代的值是多少.
我发现如果允许能量阈值是动态的,有时它会把自己设置得很低。然后,即使你没有说话,识别器也会听到连续的环境噪音,并认为你在连续说话。它不会返回,直到它停止听到“语音”。它不会超时,除非它在超时时间内听到完全静音。
我将能量阈值设置为 400,并且 recognizer.dynamic_energy_threshold = False
。这样,识别器会将一定量的背景噪音(包括沉重的呼吸声)解释为完全安静,并在我不说话时按预期超时。
关于Python SpeechRecognition 在监听时忽略超时,并挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32753415/