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

标签 python speech-recognition

我正在使用 SpeechRecognition包来尝试识别语音。当我调用 recognizer.listen(mic, timeout=5.0) 时,超时被完全忽略。有时即使我没有对着麦克风说话,它也会在一秒或更短的时间内返回。有时它会等待 30 秒或更长时间才能返回。有时它根本不返回,或者只是花费了很长时间以致于它似乎已挂起。最重要的是,它永远不会超时。

如何让语音识别器尊重我的超时?

最佳答案

尝试设置 recognizer.dynamic_energy_threshold = False

要了解其工作原理,打印出 recognizer.energy_threshold 以查看当 recognizer.dynamic_energy_thresholdTrue 时不同迭代的值是多少.

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

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

关于Python SpeechRecognition 在监听时忽略超时,并挂起,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32753415/

相关文章:

python - Django REST Framework Web 登录不起作用

global-variables - 在 config.py 中提供全局配置变量的大多数 Pythonic 方式?

python - 分割数据集

speech-recognition - 发出实现能量阈值算法以进行语音事件检测的问题

android - 更改离线语音识别的语言

c# - Microsoft 语音识别 - 我必须添加什么引用?

python - 将函数分配为python中有限状态机的变量

Python 进程不会在 GTK 循环退出时退出

ffmpeg - 将 WAV 转换为 TETRA 格式

java - android语音api