跳到主要内容

语音活动检测(VAD)

VAD (Voice Activity Detection) 用于检测音频中是否有语音。

  • 当有语音输入时,会触发 Speaking 事件
  • 或一段时间没有语音输入时, 会触发 Silence 事件。

vad 在 Invite(呼叫)/Accept(接听) 的 CallOption 中的 vad 字段中配置, 格式为: VADOption

参数

type

选择 vad 的实现:

  • webrtc: 使用 WebRTC 的 VAD 实现
  • silero: 使用 Silero 的 VAD 实现
  • ten: 使用 TEN 的 VAD 实现

samplerate

采样率,默认 16000。和 ASR 相同,需要配置和 Track 采样率相同:

  • SIP 呼叫默认为 16000hz
  • WebRTC 呼叫依据编解码器决定:
    • G722 16000hz
    • Opus 48000hz
    • 其他 8000hz

voice_threshold

触发阈值,默认 0.5。设置较高的值更加严格,但可能漏报。设置较低的值更加宽松,但可能误报。

vad
vad
yes
yes
no
no
score >
voice_treshold
score >...
voice
voice
speaking
speaking
not speaking
not speaking
Text is not SVG - cannot display

speech_padding

语音开始 speechPadding 毫秒后开始检测,默认 250。

silence_padding

Silence 持续时间超过 silence_padding 毫秒后。

silence_timeout

静音检测超时,单位毫秒,默认为空。

事件

Silence 事件

speaking
speaking
not speaking
not speaking
not speaking
not speaking
t1
t1
t2
t2
Text is not SVG - cannot display
  • t1 > speech_padding 且 t2 > silence_padding
  • t2 > silence_timeout (日股票配置了 silence_timeout)

Speaking 事件

  • 第一次说话
  • 距离上一次说话超过 speech_padding + silence_padding 毫秒
  • 距离上一次说话超过 silence_timeout 毫秒 (配置了 silence_timeout 的情况下)