Skip to content
VAD (Voice Activity Detection) 详细参数解释
基本配置参数
- MODEL_PATH:
- Silero VAD 模型的文件路径,使用ONNX格式
- 这是一个预训练的深度学习模型,专门用于检测音频中的人声活动
- SAMPLE_RATE:
- 采样率,支持8000Hz或16000Hz
- 决定每秒采集的音频样本数,更高的采样率可提供更精确的语音检测
- App.java中使用16000Hz,而VadHandle.java中使用8000Hz
- WINDOW_SIZE_SAMPLES:
- 每次处理的音频帧大小(2048个样本)
- 定义每次VAD分析的音频片段长度
- 此值需权衡实时性与准确性
灵敏度阈值
- START_THRESHOLD (0.6f):
- 语音开始检测阈值
- 当模型输出的语音概率大于此值时,认为语音已开始
- 较高的值减少误判,但可能导致语音前部分被截断
- END_THRESHOLD (0.45f):
- 语音结束检测阈值
- 当模型输出的语音概率低于此值时,开始计算可能的语音结束
- 低于START_THRESHOLD以避免语音波动导致的频繁状态切换
时间控制参数
- MIN_SILENCE_DURATION_MS (600ms):
- 判定语音结束所需的最小静音持续时间
- 在SlieroVadDetector中转换为样本数:samplingRate * minSilenceDurationMs / 1000f
- 此参数也被称为"Speech-Complete-Timeout",可通过MRCP协议配置
- 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服务,提高识别效率和准确率。
