模块 API
VAD(语音状态检测)
ASR 跟 VAD 相关。VAD 即 Voice Activity Detection(语音活动检测),简单来讲,就是用于检测什么时候开始说话,什么时候结束说话。
很多 ASR 引擎都内置了 VAD 功能,一般都推荐使用 ASR 引擎内置的 VAD 功能。如果 ASR 引擎内置的 VAD 效果不好,也可以通过vad-mode
参数选择其他的 VAD 引擎。
vad-mode
列表(注意,根据您使用的版本不同,并不是所有版本中都支持这些模式):
-1
:默认,使用 ASR 引擎内置的 VAD。0
:系统内置 VAD,简单 VAD,基于能量检测。1
:FVAD 1。2
:FVAD 2。3
:FVAD 3。20
:Silero VAD,基于模型检测,能过滤常见噪音、键盘敲击等。
VAD 相关示意图如下:
_-_ .. 换气 ~~. thresh _-/ \_-^-_/ \_ | / \ thresh ---------/ \ | / \ ------------------ / \__/ \ ---------|--------------------------------|------------ | | | | voice_ms / |START TALKING | | |TALKING ... ... ... ..... | | |..| | / |STOP TALKING silence_ms/ silence_ms/
其中,thresh
是声音检测阈值,在voice_ms
指定的时间(毫秒数)内,如果连续检测到说话声大于thresh
,则认为说话人开始讲话,触发START TAKING
事件;如果在silence_ms
时间内连续检测到小于thresh
,则认为结束讲话,触发STOP TALKING
事件。考虑到讲话过程中可能会换气,silence_ms
不能太短,否则会在换气时误判为结束讲话(“太灵敏”)。silence_ms
推荐值为500~700
毫秒,如果过长则会表现为延迟增加,听起来好像是检测“不灵敏”。
VAD 中的 V 指 Voice,即人声(人的声音),而不是 Sound(任何声音)。因此,好的 VAD 只会对人声有反应,而狗声、自然界的声音如刮风、敲键盘、敲桌子等声音都应该视为噪音而不是人声。
如果 ASR 引擎有内置 VAD,内推荐使用内置 VAD,否则可以使用vad-mode
选择其他 VAD 引擎。