什么是 VAD , VAD 切分是怎么切分的

发布时间:2026/7/15 9:10:35

什么是 VAD , VAD 切分是怎么切分的 VAD 是 Voice Activity Detection中文一般叫• 语音活动检测• 或 端点检测它的作用很简单从一段连续音频里判断哪些地方是“人在说话”哪些地方是“静音 / 背景噪声 / 音乐 / 呼吸 / 环境音”。一、VAD 是干什么的比如一通电话原始音频是这样的• 前 2 秒没人说话• 第 36 秒用户说话• 第 7 秒停顿• 第 810 秒继续说话• 后面还有一些环境噪声VAD 做的事情就是把里面真正有语音的部分找出来。它不是识别内容也不是识别说话人它只回答一个问题这一小段时间里有没有人在说话所以它通常是语音系统最前面的一层。常见链路是原始音频 → VAD → ASR / 声纹 / 情绪识别 / 说话人分离二、为什么一定要先做 VAD因为原始电话流里有很多“无效音频”• 静音• 呼吸声• 键盘声• 背景噪音• 音乐等待音• 电流声• 回声如果不先切掉这些内容会带来很多问题1浪费算力ASR、声纹、情绪识别都去处理整段音频成本很高。2识别效果变差静音和噪声会干扰后面的识别。3响应变慢实时通话里系统需要尽快知道“用户是不是说完了”不然机器人会抢话或者反应慢。三、VAD 切分到底是怎么切的VAD 一般不是一整段一下子判断而是把连续音频按很小的时间窗口切成一帧一帧再逐帧判断。比如• 每 10ms 一帧• 或每 20ms / 30ms 一帧假设一段 3 秒音频用 20ms 一帧来切• 3 秒 3000ms• 3000 / 20 150 帧系统会对这 150 帧逐个判断• 第 1 帧没人说话• 第 2 帧没人说话• …• 第 25 帧开始有人声• 第 26 帧有人声• …• 第 80 帧没人声然后把连续为“有声”的帧合并成一个语音段。这就叫 VAD 切分。四、VAD 通常依据什么来判断“有声”传统方法和深度学习方法不太一样但常见依据包括1短时能量人说话时能量通常比静音高。2过零率语音和某些噪声在波形变化上不同。3频谱特征看频率分布是不是像人声。4周期性浊音有明显的基频特征。5模型概率现在很多 VAD 用神经网络直接输出• 当前帧是语音的概率• 当前帧是非语音的概率比如• 帧 101speech_prob 0.92• 帧 102speech_prob 0.89• 帧 103speech_prob 0.18系统再根据阈值判断• 大于 0.5 认为有语音• 小于 0.5 认为无语音五、VAD 切分不是“看到静音就立刻切断”实际工程里不会这么生硬否则会切得很碎。因为真实说话里有很多自然停顿• “你好那个……我想问一下……”• “这个订单嗯什么时候发货”这些停顿很短如果一检测到一点静音就切断就会变成很多碎片。所以 VAD 一般会加几个机制。1最小语音段长度比如小于 200ms 的语音段直接丢弃避免把咳嗽、杂音当成一句话。2最小静音时长比如连续静音超过 500ms才认为这句话结束。这就意味着• 停顿 100ms不切• 停顿 200ms不切• 停顿 600ms切一句3前后补边为了避免把一句话开头或结尾切掉通常会前后各补一点时间。比如检测到用户从 3.20s 开始说话系统可能实际切成• 起点3.00s• 终点6.35s这样能保住起止辅音不容易丢字。4hangover 机制这在电话场景很常见。意思是即使当前几帧突然变安静系统也不马上判定“说完了”而是再等几十到几百毫秒看看是不是只是短暂停顿。这能减少“切半句”的问题。六、一个具体例子假设我们按 20ms 一帧切音频规则是• speech_prob 0.6 视为语音• 连续静音超过 400ms 才结束一段• 语音段前补 100ms后补 200ms某段电话帧判断结果像这样• 0.00s - 1.20s静音• 1.20s - 2.80s语音• 2.80s - 3.00s短暂停顿• 3.00s - 4.10s语音• 4.10s - 4.70s静音因为 2.80s 到 3.00s 只有 200ms 静音没有超过 400ms所以不切开。最终会合并成一整段• 原始检测1.20s - 4.10s• 加补边后1.10s - 4.30s这就是一条送给 ASR 的语音片段。七、VAD 在实时通话里是怎么工作的在 AI 电话客服里VAD 一般是流式工作的不是等整段音频结束再切。它会边接收音频边判断• 当前有没有人在说话• 什么时候开始说• 什么时候疑似说完• 是继续等还是把这一段送去 ASR典型状态机像这样1静音状态等待用户开口。2检测到起讲连续几帧概率很高进入“说话中”。3说话中状态持续缓存音频。4检测到尾静音如果静音持续达到阈值比如 500ms判定一句结束。5输出片段把这一段音频送到• ASR 转写• 声纹识别• 情绪识别• 打断检测 / turn-taking八、在电话客服里VAD 切分常见有两种用途1离线切分一整段录音拿来后处理切出若干语音段。适合• 通话质检• 录音分析• 情绪分析• 会话复盘2实时切分边说边检测尽快找到一句话边界。适合• 智能客服• 智能外呼• 实时机器人对话• 语音助手实时场景更关注• 延迟低• 不要误切• 不要漏掉开头结尾• 能准确判断用户说完没九、VAD 常见问题1为什么会把噪声当成人声因为有些噪声和语音很像比如• 电视声• 回声• 强背景人声• 敲桌子• 呼吸声所以电话系统常常要配合• 降噪• AEC 回声消除• AGC 自动增益• 热词/业务上下文一起使用。2为什么一句话被切成很多段通常是• 静音阈值设得太短• 网络抖动• 用户本来停顿就多• 噪声导致概率忽高忽低3为什么总是晚一点才识别结束因为系统故意会“多等一下”避免半句切断。这就是刚才说的 hangover。十、你可以这样理解VAD 本质上就是给音频“划重点”• 哪些部分值得送去识别• 哪些部分可以忽略• 一句话从哪开始到哪结束一句话总结VAD先从连续声音里找出“人真正开口说话的片段”再把这些片段交给后面的 ASR、声纹、情绪识别和 LLM。如果放到 AI 电话客服里一个完整顺序通常是SIP/PSTN 来电 → 实时音频流 → AEC/降噪 → VAD 切分 → ASR → 语义理解 → TTS 回复

相关新闻