模块 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 引擎。

TTS(语音合成)