想象你是一位咖啡店老板,正手忙脚乱地做三杯拉花。店里飘着轻音乐,磨豆机轰隆隆,邻桌客人叽叽喳喳,突然门被风带上“砰”的一声——你会回头看吗?当然不会。可如果是一位顾客走到台前说“你好,我要一杯美式”,你一定会立刻抬头。这中间其实有一个隐形门卫在帮你做判断:判断“这个声音是不是有人在说话”。这个门卫在语音系统里叫做语音活动检测(VAD)。 VAD 是语音识别(ASR)和语音通信前的看门人:它不关心你说什么,只关心你有没有开口。它把连续的音频切成一小段一小段,每一帧打个标签——“有人声”或“没人声”。老派门卫靠音量大小和声音变化的快慢来分辨;现代门卫则用神经网络,像 WebRTC VAD 和 Silero VAD,哪怕在嘈杂咖啡馆里也能精准听出“有人真要开口了”。

岗位关联

掌握 VAD,你就能为语音系统装上“注意力大门”:让 ASR 只听见该听的人声,节省算力、减少误唤醒。理解它,是语音从业者的基本功。

目录
  1. 可视化演示
  2. VAD 任务定义:门卫只问你开没开口
  3. 传统检测方法:靠响度和节奏感的老门卫
  4. 深度学习VAD:见多识广的神经网络门卫
  5. 性能评价指标:怎么给门卫打分
  6. 系统集成实践:门卫不是一个人在战斗
  7. 参数调优指南:旋转门卫的灵敏度旋钮
  8. 应用前景展望:门卫也在进化
  9. AI 应用场景
  10. Python 演示
  11. 常见误区
  12. 面试题

可视化演示

展示系统处理流水线、实时性能指标曲线及多方案对比分析,包含数据流转、吞吐延迟监控与方案评估。

本节配有交互动效(进入视口后自动加载,约 3KB)。

系统可视化 处理流程:输入→处理→模型→输出 性能监控:实时指标 P=L×T

VAD 任务定义:门卫只问你开没开口

想象你是一家咖啡店老板,正同时处理三杯拉花。音乐、磨豆机和邻桌交谈交织成背景噪音。若有人碰倒杯子、门被风吹动你都抬头,一天下来什么正事也做不了。于是你请了位门卫——他只在顾客真正开口点单时提醒你。这个门卫就是 VAD(Voice Activity Detection,语音活动检测)。

VAD 不负责听懂说话的内容,它的世界只有两类:“有人声”和“没人声”。它把连续音频切成 10~30 毫秒的小帧,对每一帧打一个标签。这个标签告诉后续的 ASR 系统:这一段值得识别,那一段可以直接跳过。放在语音通信里,这个标签还能决定静音段要不要发送数据包。

在数学上,VAD 是对一帧音频做二分类。它不关心语义,只输出一个概率或类别。一个简化模型可以写成:

换句话说,门卫不会告诉你客人点了什么,但会告诉你“有人开口了”。这让 ASR 可以把算力花在真正值得听的地方,而不是对着一整天的空调声发呆。

fVAD(xframe)={语音,P(人声∣xframe)>θ非语音,其他情况f_{\text{VAD}}(x_{\text{frame}}) = \begin{cases} \text{语音}, & P(\text{人声} \mid x_{\text{frame}}) > \theta \\ \text{非语音}, & \text{其他情况} \end{cases}
  1. 音频帧\(x_{\text{frame}}\) 表示一帧原始音频样本,通常是 20ms 左右的一段声音。
    xframex_{\text{frame}}
  2. 人声概率\(P(\text{人声} \mid x_{\text{frame}})\) 是模型判断这帧“有人正在说话”的置信度。
    P(人声∣xframe)P(\text{人声} \mid x_{\text{frame}})
  3. 阈值\(\theta\) 是门卫的灵敏度旋钮,概率超过它才放行。
    θ\theta
  4. 二分类输出输出“语音”或“非语音”,只给方向,不给内容。
    语音 或 非语音\text{语音} \ \text{或} \ \text{非语音}

传统检测方法:靠响度和节奏感的老门卫

如果门卫没有受过专业训练,他只能靠两个朴素线索:声音大不大、声音“跳不跳”。人说话时通常比安静环境更响,这就是短时能量;语音波形会频繁穿越零刻度,这就是过零率。在安静的办公室里,这套方法已经够用。

短时能量把一帧内所有采样点平方后求和,再乘上滑动的窗函数,得到这一小段声音的“响度包络”。过零率统计波形符号正负交替的次数,能粗略反映声音的频率特性:人声和清音往往有较高的过零率,而低频轰鸣声过零率偏低。特征计算如下:

当环境变嘈杂,老门卫会犯迷糊:磨豆机的低频轰鸣能量很大,金属勺碰撞会产生大量过零率尖峰。固定阈值要么把噪声当成人声放进来,要么把真正的小声说话拦在门外。这就是传统方法在低信噪比环境下的天然短板。

En=∑mx2(m) w(n−m),Zn=12∑m∣sgn(x(m))−sgn(x(m−1))∣ w(n−m)E_n = \sum_m x^2(m)\, w(n-m), \qquad Z_n = \frac{1}{2}\sum_m \left|\mathrm{sgn}(x(m))-\mathrm{sgn}(x(m-1))\right|\, w(n-m)
  1. 短时能量\(E_n\) 把窗内采样点的平方加总,衡量这段音频有多响。
    En=∑mx2(m) w(n−m)E_n = \sum_m x^2(m)\, w(n-m)
  2. 窗函数\(w(n-m)\) 让能量只看“当前这一小段”,而不是从音频开始累计。
    w(n−m)w(n-m)
  3. 过零率\(Z_n\) 统计波形符号变化的次数,声音变化越频繁,值越大。
    Zn=12∑m∣sgn(x(m))−sgn(x(m−1))∣Z_n = \frac{1}{2}\sum_m \left|\mathrm{sgn}(x(m))-\mathrm{sgn}(x(m-1))\right|
  4. 符号函数\(\mathrm{sgn}(\cdot)\) 输出 \(+1\) 或 \(-1\),用来判断采样点正负。
    sgn(x(m))\mathrm{sgn}(x(m))

深度学习VAD:见多识广的神经网络门卫

既然靠响度和节奏感不够,那就换一位“实习过”的门卫。这位门卫在成千上万个嘈杂咖啡馆、地铁站、马路边听过声音,他的耳朵是一个神经网络:不需要手工设计特征,模型自己学会“这种声音起伏像人声”。

深度学习 VAD 通常把音频帧转成声学特征,例如 log-mel 频谱,再送入神经网络,最后输出一个“这是人声”的概率。WebRTC VAD 是浏览器里常见的轻量方案;Silero VAD 则是开源社区里很受欢迎的神经网络模型,模型体积小,支持流式处理,在低信噪比环境下也有不错表现。

一个典型的神经网络输出概率可以写成:

这位门卫经历过深夜酒吧、地铁报站、火锅店碰杯,所以哪怕背景噪声很大,他也能从声音的“纹理”里找到人声的痕迹。这就是深度学习方法在低信噪比下依然保持高准确率的原因。

P(语音∣X)=σ(W⋅h+b)P(\text{语音} \mid \mathbf{X}) = \sigma(\mathbf{W} \cdot \mathbf{h} + b)
  1. 输入特征\(\mathbf{X}\) 是模型看到的声音“画面”,例如一帧 log-mel 频谱。
    X\mathbf{X}
  2. 隐藏表示\(\mathbf{h}\) 是神经网络中间层提取出的声音指纹,已经压缩了“像不像人声”的信息。
    h\mathbf{h}
  3. 权重和偏置\(\mathbf{W}\) 和 \(b\) 是训练得到的参数,相当于门卫积累的经验。
    W⋅h+b\mathbf{W} \cdot \mathbf{h} + b
  4. Sigmoid 函数\(\sigma(\cdot)\) 把任意实数压到 0 到 1 之间,变成概率。
    σ(z)=11+e−z\sigma(z) = \frac{1}{1 + e^{-z}}

性能评价指标:怎么给门卫打分

怎么判断一位门卫是否称职?要看他四种情况各发生多少次:人声来了他开门(真正例 TP),没人声他安静(真负例 TN),人声来了他没开(假负例 FN),没人声他乱开门(假正例 FP)。VAD 的性能,本质上就是这四笔账怎么算。

在语音识别场景里,最怕的是漏掉人声,所以召回率很关键;同时又要保证整体判断别太离谱,所以准确率也重要。定义如下:

一位总是拍你的门卫,召回率很高,但准确率很低,因为你会被噪声反复打扰;一位从不拍你的门卫,准确率可能很高,但会漏掉真正的订单。所以调 VAD 时,先想清楚你更怕漏掉人声,还是更怕误报噪音。

Recall=TPTP+FN,Accuracy=TP+TNTP+TN+FP+FN\text{Recall} = \frac{TP}{TP + FN},\qquad \text{Accuracy} = \frac{TP + TN}{TP + TN + FP + FN}
  1. 真正例\(TP\) 是“有人说话且门卫放行”的次数,这是正确检测。
    TPTP
  2. 假负例\(FN\) 是“有人说话但门卫漏掉”的次数,最关键的错误。
    FNFN
  3. 召回率\(\frac{TP}{TP+FN}\) 表示“真正的人声里有多少被找回来”。
    Recall=TPTP+FN\text{Recall} = \frac{TP}{TP + FN}
  4. 准确率四个格子一起参与计算,衡量整体判断正确的比例。
    Accuracy=TP+TNTP+TN+FP+FN\text{Accuracy} = \frac{TP + TN}{TP + TN + FP + FN}

系统集成实践:门卫不是一个人在战斗

门卫再厉害,也要有建筑、对讲机和管理制度。VAD 在真实系统里同样不是孤立的:它通常放在 ASR 之前,或者放在语音通信的上行链路里。只有被 VAD 判定为“语音帧”的音频才会被送入识别器,静音帧则在门口被拦下。

从系统流程看,VAD 像一个闸门,把音频流切成两段。被放行的帧合起来才构成“有效语音”,再交给 ASR:

工程上还要把它和降噪、回声消除、自动增益控制放在一起:先处理干净些,VAD 判断才更稳。移动端部署时,VAD 本身要轻量,不能为省算力反而消耗更多 CPU。门卫虽然重要,但他得和保安、前台配合好,才能让整栋楼正常运转。

S=⋃t:VAD(xt)=1xt,y^=ASR(S)\mathcal{S} = \bigcup_{t: \text{VAD}(x_t)=1} x_t, \qquad \hat{y} = \text{ASR}(\mathcal{S})
  1. 语音帧集合\(\mathcal{S}\) 是被门卫放行的所有帧拼起来的声音片段。
    S=⋃t:VAD(xt)=1xt\mathcal{S} = \bigcup_{t: \text{VAD}(x_t)=1} x_t
  2. 帧索引\(t\) 是时间轴上的第几帧,\(\text{VAD}(x_t)=1\) 表示这帧被判定为人声。
    t:VAD(xt)=1t: \text{VAD}(x_t)=1
  3. 识别输出\(\hat{y}\) 是 ASR 只在有效语音上产出的文字结果。
    y^=ASR(S)\hat{y} = \text{ASR}(\mathcal{S})

参数调优指南:旋转门卫的灵敏度旋钮

同一个门卫,把灵敏度旋钮拧到不同位置,行为会完全不同。拧得太高,一阵风他都拍你,误报满天飞;拧得太低,顾客小声点单他也听不见,漏掉生意。VAD 的阈值参数就承担了这枚旋钮的作用。

调参的本质,是给“漏检”和“误检”分别定价。如果漏掉一句关键命令的代价很高,就应该让漏检的权重更大;如果误报会把服务器打爆,就要让误检的权重更大。可以形式化为一个代价函数:

在 WebRTC VAD 里,有“激进程度”一类的模式参数;Silero VAD 则可以直接调概率阈值。无论哪种,都要用一批和目标场景接近的音频做测试,而不是凭感觉拍脑袋。门卫的灵敏度,最终要由你咖啡馆的客流量和噪音水平说了算。

Cost=FN×Cmiss+FP×Cfalse\text{Cost} = FN \times C_{\text{miss}} + FP \times C_{\text{false}}
  1. 漏检数\(FN\) 是有人声但没检测到的帧数,\(C_{\text{miss}}\) 是每次漏检的代价。
    FN×CmissFN \times C_{\text{miss}}
  2. 误检数\(FP\) 是没人声却判成人声的帧数,\(C_{\text{false}}\) 是每次误报的代价。
    FP×CfalseFP \times C_{\text{false}}
  3. 总代价两者相加,调参就是找总代价最小的阈值。
    Cost=FN×Cmiss+FP×Cfalse\text{Cost} = FN \times C_{\text{miss}} + FP \times C_{\text{false}}

应用前景展望:门卫也在进化

未来这位门卫会越来越聪明。他不仅能听,还可能拥有“眼睛”——看看嘴形是否在动;他也可以认得特定人的声音,变成“个性化门卫”,只对家人的声音放行。这些都不改变核心任务:判断有没有人在说话。

在技术趋势上,VAD 正从“独立前置模块”走向“端到端模型内部的一个能力”。不过即便端到端系统流行,显式的 VAD 仍然在低功耗唤醒、会议纪要切分、通信带宽节省中不可替代。实时系统里,延迟预算依然关键:

门卫还会被塞进耳机、眼镜、智能手表这些更小的“岗亭”里。无论形态怎么变,他的使命始终如一:在吵吵嚷嚷的世界里,精准地回答那句老话——“刚才是有人在说话吗?”

Lend=LVAD+LASR,LVAD≤50 msL_{\text{end}} = L_{\text{VAD}} + L_{\text{ASR}}, \qquad L_{\text{VAD}} \le 50\ \text{ms}
  1. 总延迟\(L_{\text{end}}\) 是用户从开口到看到结果的端到端延迟。
    Lend=LVAD+LASRL_{\text{end}} = L_{\text{VAD}} + L_{\text{ASR}}
  2. VAD 延迟\(L_{\text{VAD}}\) 是门卫从听到声音到放行的时间,要求足够小。
    LVAD≤50 msL_{\text{VAD}} \le 50\ \text{ms}
  3. ASR 延迟\(L_{\text{ASR}}\) 是识别器处理这段语音的时间。
    LASRL_{\text{ASR}}

AI 应用场景

智能音箱的“有人说话吗”前置判断

阶段:前端音频处理 / 唤醒前过滤

解决的问题:智能音箱通常要 7×24 小时监听麦克风。如果每一帧音频都送去云端做识别,功耗、带宽和隐私压力都很大。传统方案是持续唤醒检测,但唤醒模型也不敢开得太猛。VAD 先在本地当门卫,只有确认“有人声”后才启动后续识别链路,空房间里的空调声、电视声都会被挡在门外。

具体案例:某智能音箱产品在端侧集成 Silero VAD,以 10ms 为步长做流式判断。白天客厅没人说话时,识别主进程几乎保持休眠,整体待机功耗明显下降;用户喊“小爱同学”时,VAD 先放行,再交给唤醒词和 ASR 模块。

视频会议里的静音包守门员

阶段:实时语音通信门控

解决的问题:会议室里有人不说话时,麦克风仍会采集空调声、键盘声和翻纸声。如果不加区分地全部上传,既浪费带宽,又让远端参会者听到一堆噪声。VAD 在上行链路做门控:只有检测到说话人声音的帧才打包发送,静音帧则本地抑制或只发送极小的舒适噪声参数。

具体案例:在一套实时音视频 SDK 中,接入 WebRTC VAD 后,单人发言场景的上行码率在静默时段降低约 60%,参会者的听感也干净了很多;当多人抢话时,VAD 能快速切换门控目标,减少声音忽大忽小的问题。

会议录音转写的“剪片师”

阶段:离线/在线转写预处理

解决的问题:会议录音里除了人声,还有投影仪风扇、茶杯碰撞和咳嗽声。直接把这些音频全量送进 ASR,会产生大量冗余计算,还可能把噪声转写成不存在的话。VAD 先把录音切成“有人说话”和“没人说话”的段落,转写引擎只处理有效段落,并为每段加上时间戳。

具体案例:自动会议纪要工具用 VAD 对整场录音分段后,再调用 ASR。实践中发现,过滤掉非语音段后,识别结果的插入错误率明显下降,同时文字稿能自动跳过“这段没人说话”的空档,方便后续摘要和回放定位。

Python 演示

python59 行
import math  class EnergyVAD:    def __init__(self, threshold=0.02, sample_rate=16000, frame_ms=20):        self.threshold = threshold        self.sample_rate = sample_rate        self.frame_size = int(sample_rate * frame_ms / 1000)     def energy(self, samples):        if not samples:            return 0.0        return sum(s * s for s in samples) / len(samples)     def analyze(self, pcm_samples):        frames = []        step = self.frame_size        for pos in range(0, max(1, len(pcm_samples) - step + 1), step):            frame = pcm_samples[pos:pos + step]            e = self.energy(frame)            frames.append({                'start': pos,                'end': pos + len(frame),                'energy': e,                'speech': e > self.threshold            })        return frames  def build_signal():    sr = 16000    total = int(sr * 2.0)    signal = []    for i in range(total):        t = i / sr        if 0.5 < t < 1.0:            voice = 0.5 * math.sin(2 * math.pi * 180 * t) + 0.2 * math.sin(2 * math.pi * 2200 * t)        else:            voice = 0.0        noise = 0.06 * math.sin(2 * math.pi * 60 * t) + 0.03 * math.sin(2 * math.pi * 350 * t)        signal.append(voice + noise)    return signal  def main():    vad = EnergyVAD(threshold=0.015)    samples = build_signal()    result = vad.analyze(samples)    speech_count = sum(f['speech'] for f in result)    print('total frames:', len(result))    print('speech frames:', speech_count)    print('speech ratio: %.2f' % (speech_count / len(result)))    for i, f in enumerate(result):        if i < 5 or f['speech']:            print(i, f['start'], f['end'], round(f['energy'], 5), f['speech'])  if __name__ == '__main__':    main()
目的:实现了一个最简单的能量型 VAD,用合成信号演示“门卫如何只放行人声帧”。
  1. frame_size = int(sample_rate * frame_ms / 1000)把时间窗换算成采样点个数,决定门卫每脚踏多宽。
  2. return sum(s * s for s in samples) / len(samples)计算这一帧的平均能量,对应“音量大小”。
  3. for pos in range(0, max(1, len(pcm_samples) - step + 1), step)以帧长步进滑窗,检查整段音频每一扇门。
  4. 'speech': e > self.threshold门卫决策:能量高于阈值就放行。
  5. voice = 0.5 * math.sin(...) + 0.2 * math.sin(...)模拟两声部人声。
  6. noise = 0.06 * math.sin(...) + 0.03 * math.sin(...)模拟低频背景噪声。
  7. speech_count = sum(f['speech'] for f in result)统计被放行的语音帧总数。

常见误区

误区我原以为 VAD 检测到人声后就能自动把音乐、空调声都去掉,是语音增强流程里的降噪模块。

正解VAD 只回答“这一帧有没有人声”,不做音频过滤;降噪靠谱减法、维纳滤波或神经网络增强等模块完成。VAD 可以给降噪提供门控信号,比如检测到人声时才更新噪声谱,但它本身不是降噪器。就像门卫只通知你“有人来了”,不会帮你扫地。

为何常见:因为 VAD 常常和降噪一起出现在语音增强流程里,位置靠前,容易让人以为它负责清除噪声。

误区我觉得阈值设得越高,判成人声的门槛就越高,错误自然越少,所以应该尽量调高阈值。

正解高阈值会减少误检,但会漏掉轻声、远场和带噪的语音。VAD 的阈值本质是“灵敏度旋钮”:调高更保守,调低更敏感。最好用测试集综合看召回率和误报率,而不是只看单个值。门卫太严格,会把小声说话的好顾客也拦在门外。

为何常见:因为“更严格=更准确”符合直觉,但分类问题里漏检和误检往往是跷跷板。

误区我以为 WebRTC VAD 和 Silero VAD 只是同一个模型在不同平台上的封装,随便选一个就行。

正解两者底层模型不同:WebRTC VAD 早期基于高斯混合模型等统计特征,模型很小;Silero VAD 是基于深度神经网络并针对真实噪声训练,在不同噪声和采样率下通常更鲁棒。选型要看场景、算力和延迟需求。WebRTC 是浏览器自带的门卫,Silero 是受过特殊训练的门卫,工作方式并不一样。

为何常见:因为两者都是开箱即用的开源 VAD,文档里都写着“检测语音活动”,容易让人觉得是同质替代品。

误区我觉得只要 VAD 判断出语音后立刻把后续音频交给 ASR,整个句子就能完整识别,不会丢开头。

正解VAD 判断需要时间,语音的第一个音节可能已经在检测窗口里被当成“非语音”或尚未被处理。工程上常用“预卷缓存”(保留检测前 100~300ms 音频)和端点回溯,把语音起始点找回来。门卫从听到声音到拍你需要反应时间,你得让他先把刚才几秒的监控录像回放一遍。

为何常见:因为直觉上“门开了才进人”是通的,但检测总有一个短暂盲区。

面试题

Q1. 语音活动检测(VAD)的核心任务是什么?

单选题 · easy

  • A.把语音转换成文字
  • B.判断音频帧是否含人声← 正确答案
  • C.消除所有背景噪声
  • D.识别说话人身份

答案:B。VAD 只判断一段音频里有没有人声,不做转写、降噪或声纹识别。它像门卫只负责“有没有人开口”,不负责听清内容。

Q2. 传统 VAD 最常用的两个特征是什么?

单选题 · easy

  • A.梅尔频率倒谱和语速
  • B.短时能量和过零率← 正确答案
  • C.基频与共振峰参数
  • D.声道长度与音高

答案:B。传统方法用短时能量衡量响度,用过零率衡量波形穿越零轴的频率,计算简单。其余选项多用于语音识别或声纹分析,不是 VAD 的经典特征。

Q3. 在低信噪比环境下,传统 VAD 容易出现什么毛病?

单选题 · mid

  • A.计算速度突然变慢
  • B.噪声能量掩盖人声,阈值难分← 正确答案
  • C.无法输出二分类结果
  • D.必须依赖 GPU 才能运行

答案:B。低信噪比指噪声比人声还大,能量和过零率都被噪声污染,固定阈值很难分开两类。问题不在算法输出或算力,而在特征可分性太差。

Q4. 下列哪些属于深度学习 VAD 的优势?

多选题 · mid

  • A.在复杂噪声下准确率更高← 正确答案
  • B.完全不需要任何音频帧
  • C.模型可在低延迟下运行← 正确答案
  • D.可以直接取代麦克风硬件

答案:AC。深度学习 VAD 用大量噪声场景训练,鲁棒性更强;Silero 等模型也适合流式低延迟部署。但它依然需要音频帧输入,也不能取代采集信号的麦克风。

Q5. 为什么 ASR 前加上 VAD 能节省计算资源?

单选题 · mid

  • A.它把音频采样率降低了一半
  • B.它过滤非语音帧,减少识别工作量← 正确答案
  • C.它直接修改了声学模型参数
  • D.它将所有静音帧转化为文本

答案:B。ASR 只需要处理含语音的帧,VAD 把大片非语音帧拦在门外,让识别器不用空转。它不是降采样、不修改声学参数,也不会把静音变成文本。

Q6. 在实时语音通信中,VAD 门控最直接的好处是什么?

单选题 · hard

  • A.提高麦克风的采样率
  • B.减小静音包传输带宽← 正确答案
  • C.增强扬声器的音量
  • D.改变编码器的比特率

答案:B。通话时大量时间没人说话,VAD 门控不为静音帧发送语音包,节省上行带宽。它不是硬件增强,也不会直接改变编码器配置。

Q7. 关于 VAD 检测结果,下列说法哪些是错误的?

多选题 · mid

  • A.检测到语音后应丢弃全部缓冲数据← 正确答案
  • B.阈值越高漏检率越低← 正确答案
  • C.VAD 可以完全替代降噪模块← 正确答案
  • D.深度学习 VAD 在低信噪比下更鲁棒

答案:ABC。A 错,缓冲数据对找回语音起点很重要;B 错,阈值越高漏检率通常越高;C 错,VAD 只做检测不降噪。D 是常见正确认知。

Q8. Silero VAD 被许多工程选用,主要原因是?

单选题 · hard

  • A.依赖大数据中心才能实时推理
  • B.模型小、易推理且支持流式处理← 正确答案
  • C.必须与专用服务器绑定
  • D.只支持英文语音识别

答案:B。Silero VAD 以轻量 ONNX 模型闻名,可跑在 CPU 和移动端,逐帧流式判断,延迟低。它不依赖数据中心,不需要专用服务器,也不受语言限制,因为 VAD 只看人声属性。

Q9. VAD 输出的两类标签通常是?

单选题 · easy

  • A.声母和韵母
  • B.语音帧和非语音帧← 正确答案
  • C.低频段和高频段
  • D.说话人和非说话人

答案:B。VAD 把每帧判成“语音帧”或“非语音帧”,这是二分类标签。声母韵母、频段、说话人身份都不是 VAD 的输出。

Q10. 设计实时 VAD 系统时,应关注哪些指标?

多选题 · hard

  • A.单帧处理延迟← 正确答案
  • B.语音帧召回率← 正确答案
  • C.CPU 和内存占用← 正确答案
  • D.背景音乐版权

答案:ABC。实时系统要求低延迟、少漏检和低资源开销,这三个直接决定能不能边聊边识别。背景音乐版权属于内容合规问题,与 VAD 性能无关。