Skip to content

VAD (Voice Activity Detection) 详细参数解释

基本配置参数

  1. MODEL_PATH:
  • Silero VAD 模型的文件路径,使用ONNX格式
  • 这是一个预训练的深度学习模型,专门用于检测音频中的人声活动
  1. SAMPLE_RATE:
  • 采样率,支持8000Hz或16000Hz
  • 决定每秒采集的音频样本数,更高的采样率可提供更精确的语音检测
  • App.java中使用16000Hz,而VadHandle.java中使用8000Hz
  1. WINDOW_SIZE_SAMPLES:
  • 每次处理的音频帧大小(2048个样本)
  • 定义每次VAD分析的音频片段长度
  • 此值需权衡实时性与准确性

灵敏度阈值

  1. START_THRESHOLD (0.6f):
  • 语音开始检测阈值
  • 当模型输出的语音概率大于此值时,认为语音已开始
  • 较高的值减少误判,但可能导致语音前部分被截断
  1. END_THRESHOLD (0.45f):
  • 语音结束检测阈值
  • 当模型输出的语音概率低于此值时,开始计算可能的语音结束
  • 低于START_THRESHOLD以避免语音波动导致的频繁状态切换

时间控制参数

  1. MIN_SILENCE_DURATION_MS (600ms):
  • 判定语音结束所需的最小静音持续时间
  • 在SlieroVadDetector中转换为样本数:samplingRate * minSilenceDurationMs / 1000f
  • 此参数也被称为"Speech-Complete-Timeout",可通过MRCP协议配置
  1. SPEECH_PAD_MS (500ms):
  • 在检测到的语音段前后添加的缓冲时间
  • 确保语音的开头和结尾不会被截断
  • 在SlieroVadDetector中转换为样本数:samplingRate * speechPadMs / 1000f

工作原理

VAD检测器通过Silero神经网络模型分析音频帧,输出语音概率值(0-1)。当检测到语音开始(概率>START_THRESHOLD)时,设置triggered=true并标记起始点。当检测到语音结束(概率<END_THRESHOLD)时,开始计时,仅当静音持续足够长(MIN_SILENCE_DURATION_MS)才确认语音真正结束。

在dictation模式下,VAD用于自动分段语音,仅在检测到语音时才发送音频到ASR服务,提高识别效率和准确率。