乐乐公寓的大厅,又大又吵。白天有业主进出的脚步声、孩童的嬉闹,傍晚还有大厅广播在循环播放物业通知。保安老周的新工作是“聆听”:业主隔着七八米喊一声“老周,帮开门!”他必须马上反应过来。时间一长,老周练出了一身本事——他只听“老周”这两个字,别人喊“小周”“老张”他一概不理;他能从空调嗡鸣和雨声中分辨出人声;他能听出声音是从东边还是西边传来的;更神奇的是,广播里也在喊“老周”,他却知道那不是真人在叫他。这台“人形语音设备”的每一项本事,正是智能音箱、车载语音产品里的“语音唤醒与远场识别”要解决的问题。这篇文章,我们就借老周的一天,把唤醒词检测、远场声学、麦克风阵列、噪声抑制、回声消除、硬件协同和性能指标这七件事讲透。你会发现,“听懂人话”背后,是一整套从物理到算法的系统工程。

岗位关联

对 AI 从业者来说,语音唤醒与远场识别是几乎一切语音产品的“第一道门”。掌握误触率、信噪比、阵列增益这些核心概念,你才能在指标制定、方案选型和跨团队协作中说到点子上。

目录
  1. 可视化演示
  2. 唤醒词机制
  3. 远场声学挑战
  4. 麦克风阵列
  5. 噪声抑制
  6. 回声消除
  7. 硬件协同
  8. 指标与调优
  9. AI 应用场景
  10. Python 演示
  11. 常见误区
  12. 面试题

可视化演示

展示KWS唤醒词检测波形与误触率(3-4音节最优)、6麦阵列波束成形方向增强与噪声抑制、以及AEC回声消除+INT8量化端侧推理延迟优化全流程。

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

KWS唤醒词检测 端侧小模型常驻低功耗监听,检测到唤醒词后唤醒完整识别链路 3-4音节误触率最低(约15-25%),4音节后收益递减 误触率∝1/音节数(3-4音节最优) 音节太少易误触,太多损害体验

唤醒词机制

老周不是“全天候竖起耳朵”地傻听。值班时他也看报、喝茶自娱,但耳朵始终挂着一个开关:只要捕捉到“老周”这两个音,他立刻放下报纸进入状态。别的动静——哪怕业主喊“小周”、喊“老张”,他一概不回应。这就是语音产品里的“唤醒词机制”:设备平时在低功耗待机,只有听到特定唤醒词才启动核心识别。

唤醒检测本质上是一个二分类问题:这一小段音频,像不像唤醒词?算法会对连续音频流切帧,逐帧提取声学特征(如梅尔频谱),再由轻量级唤醒模型输出一个置信度分数。分数超过阈值才触发唤醒。这里的“阈值”就是老周的“把握线”。

s(x)=P(唤醒词∣x),若  s(x)>θ,  则触发唤醒\displaystyle s(x) = P(\text{唤醒词} \mid x), \qquad 若\; s(x) > \theta, \; 则触发唤醒

1. 输入特征 x:模型看到的不是原始波形,而是切成 20~30 毫秒一帧的声音特征,相当于老周耳朵里“这段声音像不像的音色快照”。

x=[x1,x2,…,xT]x = [x_1, x_2, \dots, x_T]

2. 打分 s(x):唤醒模型输出“这一段像唤醒词”的置信度,取值在 0 到 1 之间,相当于老周心里“这声像不像在喊我”的把握。

s(x)=P(唤醒词∣x)s(x) = P(\text{唤醒词} \mid x)

3. 阈值 θ:人为设定的启动门限。θ 越低、灵敏度越高,响应快但误醒多;θ 越高越沉稳,但容易漏掉真呼唤。

θ↓⇒误触率↑,θ↑⇒漏唤醒率↑\theta \downarrow \Rightarrow \text{误触率} \uparrow, \qquad \theta \uparrow \Rightarrow \text{漏唤醒率} \uparrow

所以,老周最拿手的不是“听见”,而是“挑着听”。优秀的产品团队做的正是同一件事:把唤醒词做成一道精心校准的门,让该进来的声音快步进来,让不该进来的响动止步门外。

远场声学挑战

最让老周头疼的,是业主站在电梯厅那头的拐角喊他。大厅有二十多米长,大理石地面亮得能照人。声音传到值班室,又轻又“糊”,像隔着一层水。他得皱着眉分辨:这是真有人在喊,还是谁家收音机的动静?

当说话人与麦克风的距离超过一米,就进入了“远场”范畴。声音在空气中向四周扩散,到达麦克风时能量已大幅衰减;墙面、地面的反射又形成混响,像一层“声学雾气”盖在直达声上。再加上空调、冰箱、马路噪声,远场识别的信噪比通常远低于近场。

ΔSPL=20⋅log⁡10(dd0) dB\displaystyle \Delta SPL = 20 \cdot \log_{10}\left(\frac{d}{d_0}\right) \ \mathrm{dB}

1. SPL 差量:ΔSPL 表示距离从 d₀ 增加到 d 时,声压级下降的分贝数,对应老周感觉里“声音变小了多少”。

ΔSPL=SPL(d0)−SPL(d)\Delta SPL = SPL(d_0) - SPL(d)

2. 距离比 d/d₀:以近场参考距离 d₀(通常取 1 米)为基准,衡量说话人远了“几倍”。

dd0=2⇒ΔSPL≈6.02 dB\frac{d}{d_0} = 2 \Rightarrow \Delta SPL \approx 6.02\ \mathrm{dB}

3. 20·log₁₀ 的对数关系:自由场中声压幅度约与距离成反比、能量与距离平方成反比,取对数后正好是“每翻一倍距离,声压级下降约 6dB”。

20⋅log⁡102≈6 dB20 \cdot \log_{10}2 \approx 6\ \mathrm{dB}

除了直达声衰减,混响还会把声音的“尾巴”拖长,多个人同时说话时彼此掩蔽。这台“衰减账”让老周明白:隔得远,就得靠更好的耳朵和更聪明的听法去补——这正好引出两件利器:麦克风阵列与噪声抑制。

麦克风阵列

老周为什么能判断声音来自东边还是西边?因为他有两只耳朵,声音先到左耳、再到右耳,那微小的时差就是他的“定位系统”。智能音箱没有耳朵,但工程师给它装了一排“耳朵”——麦克风阵列。

麦克风阵列把多个麦克风按一定几何结构(线阵、环阵)排布。同一个声音到达每个麦克风的时间略有不同。波束成形先对各路信号做时延补偿,让目标方向的声音“对齐”后叠加,其他方向的声音因没有对齐而互相抵消,从而在某个方向上形成一束“听觉聚光”。

y(t)=∑i=1Nwi⋅xi(t−τi)\displaystyle y(t) = \sum_{i=1}^{N} w_i \cdot x_i(t - \tau_i)

1. 多路输入 x_i(t):第 i 个麦克风在 t 时刻拾取的信号,N 个麦就有 N 路输入;老周的两只耳朵就是 N=2 的特例。

x1(t),x2(t),…,xN(t)x_1(t), x_2(t), \dots, x_N(t)

2. 时延补偿 τ_i:根据目标方向与阵列的几何关系,给每路信号补上传播时延差,让它们“同相”。老周靠“左耳慢零点几毫秒”判断声音偏右,这里靠精确的 τ_i。

τi=声程差声速\tau_i = \frac{\text{声程差}}{\text{声速}}

3. 加权叠加 w_i:各路信号乘以权重后求和。目标方向同相增强,其他方向相位错乱被压低,这就是“波束”。

y(t)=∑i=1Nwi⋅xi(t−τi)y(t) = \sum_{i=1}^{N} w_i \cdot x_i(t - \tau_i)

阵列带来另一个量化收益——信噪比增益:

ΔSNR≈10⋅log⁡10(N) dB\displaystyle \Delta SNR \approx 10 \cdot \log_{10}(N) \ \mathrm{dB}

1. 麦克风数量 N:参与相干叠加的麦克风个数。

N=4N = 4

2. 对数增益:理想情况下信噪比随数量对数增长,N 翻倍只多约 3dB。

10⋅log⁡10(4)≈6.02 dB10 \cdot \log_{10}(4) \approx 6.02\ \mathrm{dB}

有了这排“耳朵”,老周可以把听觉聚到某个方向——就像他把手拢在耳边、侧身朝向声源,大厅另一头的呼喊立刻清晰不少。

噪声抑制

老周还有个绝活:大厅空调的嗡嗡声、窗外工地的打桩声,他都能“自动降噪”。他并不是捂住耳朵,而是心里很清楚——人声有特有的起伏和音高,那些持续均匀的嗡鸣不是人,不该占用注意力。

噪声抑制的目标是从带噪信号中分离出目标语音。常见做法分两步:先用端点检测(VAD)判断哪些时间段存在人声;再对含语音的帧做频谱增强。维纳滤波是最经典的频域降噪方法——对每个频点估计一个增益 G(f):信噪比高的频点放大保留,信噪比低的频点压低。

G(f)=ξ(f)1+ξ(f)\displaystyle G(f) = \frac{\xi(f)}{1 + \xi(f)}

1. 先验信噪比 ξ(f):频率 f 处“目标语音能量 / 噪声能量”的估计,是判断该频点是“人声”还是“噪声”的依据。ξ 大说明人声占优。

ξ(f)=Ps(f)Pn(f)\xi(f) = \frac{P_{s}(f)}{P_{n}(f)}

2. 增益 G(f):对每个频点乘的系数。ξ 很大时 G≈1,原样保留;ξ 很小时 G≈0,该频点被抑制。

ξ(f)→∞⇒G(f)→1,ξ(f)→0⇒G(f)→0\xi(f) \to \infty \Rightarrow G(f) \to 1, \qquad \xi(f) \to 0 \Rightarrow G(f) \to 0

3. 分母 1+ξ:归一化让增益永远不大于 1,保证“只减不增”,避免放大噪声。

0≤G(f)≤10 \le G(f) \le 1

老周的“心理滤波器”有时也会过分:把真人声也压得发闷。降噪算法同理——增益压得越狠,语音细节损失越多,后端识别率反而下降。所以降噪从来不是“越干净越好”,而是“该留的留住,该去的去掉”。

回声消除

大厅广播每天傍晚准时响起:“老周,请到前台取快递。”老周听了不为所动——他知道那是喇叭放出来的,不是真人在喊他。为什么?因为他“心里有数”:喇叭一响,播的什么内容他心里跟明镜似的。智能音箱面临同样的处境:自己放音乐时,声音传出去碰到墙壁又弹回麦克风,如果不处理,音箱会以为有人在喊它。

回声消除(AEC)的思路和老周一模一样:拿“自己刚播出去的内容”做参考。系统把扬声器正在播放的信号作为参考信号 x(n),用一个自适应滤波器模拟声音从扬声器到麦克风的传播路径,估计出麦克风里混入的回声 ŷ(n),再从麦克风拾取信号 d(n) 中把它减掉。

y^(n)=wT(n)⋅x(n),e(n)=d(n)−y^(n)\displaystyle \hat{y}(n) = \mathbf{w}^T(n) \cdot \mathbf{x}(n), \qquad e(n) = d(n) - \hat{y}(n)

1. 参考信号 x(n):扬声器正在播放的音频,相当于“广播里放的内容”。系统随时知道自己播了什么。

x(n)=[x(n),x(n−1),…,x(n−L+1)]T\mathbf{x}(n) = [x(n), x(n-1), \dots, x(n-L+1)]^T

2. 滤波器系数 w(n):模拟声音从扬声器到麦克风的回声路径(包含多次反射),长度 L 对应回声的时长。老周的“耳膜记忆”就是一条路径模型。

w(n)=[w0,w1,…,wL−1]T\mathbf{w}(n) = [w_0, w_1, \dots, w_{L-1}]^T

3. 估计回声 ŷ(n):把参考信号与路径系数做卷积,算出“麦克风里应当混进多少回声”。

y^(n)=∑k=0L−1wk(n)⋅x(n−k)\hat{y}(n) = \sum_{k=0}^{L-1} w_k(n) \cdot x(n-k)

4. 误差信号 e(n):麦克风拾到的 d(n) 减去估计回声,剩下的就是人声和残余噪声。e(n) 既送给识别,也反过来驱动 NLMS 更新滤波器系数。

e(n)=d(n)−y^(n)e(n) = d(n) - \hat{y}(n)

当有人一边放音乐一边说话(双讲场景),老周得格外小心:不能因为“广播里有老周”,就把真人喊的“老周”也当回声减掉。AEC 的双讲处理就在这两者之间做精细权衡,保证音乐照常播、人声也听得清。

硬件协同

老周的本事,一半靠脑子,一半靠“装备”。物业给他换了副好助听器,大厅里的声音立刻清楚一截;要是配个劣质收音机,再聪明也白搭。语音产品的道理一样:算法是脑子,麦克风和芯片是耳朵与神经,两者必须配套。

算法再好,也得跑在合适的硬件上。麦克风的灵敏度、底噪、一致性校准和腔体结构决定入口信噪比;芯片算力决定能跑多复杂的模型——唤醒要 24 小时待机,就必须低功耗,唤醒后又要快速响应,需要足够算力;模拟放大、ADC 采样的前端链路噪声更是一粒老鼠屎坏一锅粥。

Eday=P待机⋅T待机+P唤醒⋅T唤醒\displaystyle E_{day} = P_{\text{待机}} \cdot T_{\text{待机}} + P_{\text{唤醒}} \cdot T_{\text{唤醒}}

1. 待机功耗 P_待机:设备 99% 的时间都在“守听”,唤醒模型必须轻量到能在极低功耗的 DSP 或 NPU 上常驻运行。老周打瞌睡时“半只耳朵”耗的能量就是待机功耗。

P待机≪P唤醒P_{\text{待机}} \ll P_{\text{唤醒}}

2. 唤醒时长 T_唤醒:一天中真正进入全速识别的时间占比,通常只有几十分钟。总能耗由待机项主导,低功耗芯片是硬门槛。

T待机≫T唤醒T_{\text{待机}} \gg T_{\text{唤醒}}

3. 协同设计:算法团队给出“最低需要的信噪比和算力”,硬件团队据此选阵列和芯片,再在原型上一起量测调优——这就是链路级协同。

SNR入口≥SNR算法要求SNR_{\text{入口}} \ge SNR_{\text{算法要求}}

老周的助听器不是越贵越好,关键要和值班环境匹配;音箱的麦克风阵列也不是越多越好,要看结构、口径与算法的配合。硬件与算法,从来是“一根绳上的两只蚂蚱”。

指标与调优

物业给老周发工资前,要看他两个数:一是业主喊“老周”,他应了多少次——漏应一次就要被投诉;二是没人喊他时,他瞎应了多少次——对着广播点头最丢人。这两件事,正是语音唤醒产品的两大核心指标:唤醒率和误触率。

唤醒率衡量“该醒的时候醒没醒”,误触率衡量“不该醒的时候醒没醒”。二者天然此消彼长,由同一个阈值 θ 调节。产品上线的调优流程,就是不断在真实场景中收集音频、标注、评测,找到最适合的“工作点”。场景要覆盖安静、嘈杂、远场、广播、双讲等完整矩阵。

唤醒率=N正确响应N应响应,误触率=N误触发T工作时长\displaystyle 唤醒率 = \frac{N_{\text{正确响应}}}{N_{\text{应响应}}}, \qquad 误触率 = \frac{N_{\text{误触发}}}{T_{\text{工作时长}}}

1. 正确响应数 N_正确响应:在应该被唤醒的场合(有人真的喊了唤醒词)成功触发的次数。漏掉一次,用户就要再喊一遍。

N正确响应≤N应响应N_{\text{正确响应}} \le N_{\text{应响应}}

2. 应响应总数 N_应响应:测试集中所有真实唤醒次数的总数,作为唤醒率的分母。

唤醒率=成功唤醒次数真实呼唤次数唤醒率 = \frac{\text{成功唤醒次数}}{\text{真实呼唤次数}}

3. 误触发的时长归一:误触率用“每小时误唤醒次数”表示,避免测试时长不同导致不可比。电视里一声“小爱”让客厅音箱应了,就记一次误触。

误触率=误唤醒次数测试时长(小时)误触率 = \frac{\text{误唤醒次数}}{\text{测试时长(小时)}}

4. 联合选点:单独看任何一项都会骗人,要把两个数放进同一坐标系,选一个既不太灵敏也不太迟钝的工作点,再灰度上线、数据回流、迭代重训。

选点=arg⁡min⁡θ(α⋅漏唤醒率+β⋅误触率)\text{选点} = \arg\min_{\theta} \left( \alpha \cdot \text{漏唤醒率} + \beta \cdot \text{误触率} \right)

老周后来练到“百呼百应、不呼不应”,靠的不是某一招,而是把每个环节的细节抠到极致。语音产品做唤醒与远场优化,同样是一场永不停歇的“听功修行”——物理、算法、硬件、指标,环环相扣。

AI 应用场景

智能音箱误唤醒治理

阶段:语音唤醒链路(模型阈值与声学前端的联合调优)

解决的问题:用户家里电视一播剧,音箱就被剧中的“小爱同学”频繁喊醒,插话、误购让投诉率飙升。单纯调低灵敏度会牺牲正常唤醒率,传统“一刀切”方案两头不讨好。

具体案例:某智能音箱团队引入“设备参考信号”做回声消除,同时利用多麦波束成形把“听觉焦点”对准用户常坐的沙发方向,再按时间段动态调整阈值(白天吵、夜间静),误触率从每小时 2.1 次降到 0.4 次,唤醒率维持在 97% 以上。

车载语音的远场与回声挑战

阶段:信号前端处理(麦克风阵列 + AEC)

解决的问题:高速开窗时风噪超过 80dB,车内音乐还在播,后排乘客隔着一米多远喊“你好小迪”。传统单麦方案在车速超过 100km/h 时唤醒率断崖式下跌。

具体案例:车厂采用 4 麦环形阵列,波束指向主驾座椅,加入音乐参考信号的 AEC 模块,配合车速自适应降噪,实测 120km/h 开窗场景下唤醒率提升了 15 个百分点。

会议全向麦的说话人跟踪

阶段:麦克风阵列声源定位与波束跟踪

解决的问题:6 米长会议桌,远端参会人说话又远又混响,普通吊麦听不清;摄像头转向也跟不上发言节奏。

具体案例:全向麦用 8 麦环形阵列实时估计声源方位,波束动态跟随发言者,有效拾音距离从 1.5 米延伸到约 5 米,远场转写错误率下降近一半。

Python 演示

python38 行
import math SAMPLE_RATE = 16000   # 采样率 16kHzN_SAMPLES = 1600      # 模拟唤醒词片段长度THETA = 0.6           # 唤醒置信度阈值 def make_wake(freq=440.0, n=N_SAMPLES):    """生成一段模拟唤醒词的周期信号"""    return [math.sin(2 * math.pi * freq * i / SAMPLE_RATE) for i in range(n)] def energy(sig):    """计算信号能量(平均功率)"""    return sum(s * s for s in sig) / len(sig) def distance_gain(d, d0=1.0):    """自由场距离衰减:幅度近似与距离成反比"""    return d0 / d def score_from_energies(sig_e, noise_e):    """用信号能量与噪声能量计算唤醒置信度"""    return sig_e / (sig_e + noise_e) def main():    wake = make_wake()    ref_e = energy(wake)    room_noise_e = 0.04 * ref_e   # 恒定房间噪声能量    array_gain = 4                 # 4 麦克风阵列的信噪比增益    print("距离(m)  单麦SNR(dB)  阵列SNR(dB)  阵列置信度  判决")    for d in (1, 2, 3, 5, 7, 9):        clean_e = ref_e * distance_gain(d) ** 2        snr_1 = 10 * math.log10(clean_e / room_noise_e)        snr_4 = 10 * math.log10(clean_e * array_gain / room_noise_e)        s = score_from_energies(clean_e, room_noise_e / array_gain)        verdict = "唤醒" if s > THETA else "待机"        print("%6d %11.1f %11.1f %11.3f %s" % (d, snr_1, snr_4, s, verdict)) if __name__ == "__main__":    main()
目的:模拟“唤醒词在远场的能量衰减 + 四麦克风阵列增益”对唤醒判决的影响,直观演示为什么远场识别必须靠阵列来补救信噪比。
  1. return [math.sin(2 * math.pi * freq * i / SAMPLE_RATE) for i in range(n)]合成一段 440Hz 的模拟唤醒词信号。
  2. room_noise_e = 0.04 * ref_e房间底噪设为唤醒词能量的 4%,相当于恒定噪声地板。
  3. clean_e = ref_e * distance_gain(d) ** 2能量随距离平方衰减,体现正文的“每翻倍约降 6dB”规律。
  4. snr_4 = 10 * math.log10(clean_e * array_gain / room_noise_e)阵列把信噪比抬升 10·log₁₀(4)≈6dB。
  5. score_from_energies(clean_e, room_noise_e / array_gain)用“信号/(信号+噪声)”的形式计算唤醒置信度。
  6. verdict = "唤醒" if s > THETA else "待机"阈值判决:超过 0.6 才唤醒,对应“该醒才醒、不该醒别醒”。

常见误区

误区“音箱听不清?那我把它音量调大,声音大点它总该听见了吧?”初学者常把播放音量和麦克风拾音混为一谈。

正解播放音量属于“扬声器→人耳”链路,而唤醒识别关心的是“人嘴→麦克风”链路,两者毫不相干。远场衰减是物理规律,调大音量只会让音箱播出的声音更大,反而制造更多回声,加重 AEC 的负担。真正有效的做法是缩短物理距离、用麦克风阵列做波束成形、或降低环境噪声。

为何常见:日常直觉是“声音大了就听得见”,但音箱的两条声音通路在物理上独立,初学者很难想到“自播自听”的回声问题。

误区“4 个麦不够就上 8 个、16 个,数量堆上去,远场肯定能听清。”

正解阵列增益按 10·log₁₀(N) 增长,数量翻倍只多 3dB,边际收益快速递减。远场识别还受混响、噪声、硬件一致性制约;真正起作用的是阵列口径(几何尺寸)、排布方式和算法质量。8 个做工差的麦,不如 4 个校准好的麦。

为何常见:“数大即强”的直觉加上厂商常把麦克风数量当卖点,导致只看数量不看质量。

误区“音箱放音乐时老误唤醒,那把音乐声调小一点、或者干脆静音,回声不就没了?”

正解AEC 的原理是拿参考信号(正在播的音频)做自适应滤波,估计出回声路径,再在麦克风信号里做减法。它不影响扬声器实际音量,减的是“麦克风拾到的回声”。调小音量只是掩耳盗铃,还破坏了听歌体验。

为何常见:AEC 对小白不可见、不可感知,大家只能用“减少回声来源”这种直觉方案去理解。

误区“误唤醒太烦人了,干脆把灵敏度阈值调到最高,让音箱别那么容易醒。”

正解阈值与误触率、唤醒率是一对跷跷板。阈值过高,电视里的“小爱”不会唤醒它了,但用户真喊“小爱”时它也充耳不闻——“叫不醒”比“乱答应”更让用户崩溃。正确做法是收集真实场景数据,用唤醒率-误触率曲线选工作点,而不是一味调高。

为何常见:用户只看到误唤醒的打扰,看不到漏唤醒导致的更糟体验;工程师也容易在投诉压力下过度反应。

面试题

Q1. 语音唤醒的核心任务是什么?

单选题 · easy

  • A.识别全部语音内容
  • B.识别特定唤醒词语← 正确答案
  • C.把语音实时转成文字
  • D.持续录制环境声音

答案:B。唤醒词检测只回答“是不是唤醒词”这个判断题,不关心其余内容,相当于保安老周只对“老周”二字有反应。A、C 是语音识别/转写任务,D 是录音功能,都不是唤醒的核心目标。

Q2. 自由场中距离每增加一倍,直达声声压级约下降多少?

单选题 · easy

  • A.约下降 3 分贝
  • B.约下降 6 分贝← 正确答案
  • C.约下降 10 分贝
  • D.约下降 20 分贝

答案:B。根据 ΔSPL = 20·log₁₀(d/d₀),距离翻倍时声压级下降约 6dB。3dB 对应能量折半的刻度,10dB、20dB 是过大估计。这正是远场“听不清”的物理根源之一。

Q3. 波束成形提高远场识别效果的核心手段是什么?

单选题 · easy

  • A.时延补偿后加权叠加← 正确答案
  • B.抬高麦克风硬件增益
  • C.将多声道复制给后端
  • D.压缩回声参考信号

答案:A。波束成形对多路麦克风信号做时延补偿让目标方向同相,再加权叠加增强该方向、抑制其他方向。抬高增益会连噪声一起放大,复制声道没有增益,压缩参考信号属于 AEC 的范畴。

Q4. 调低唤醒阈值(灵敏度变高)最可能导致什么?

单选题 · mid

  • A.唤醒成功率随之降低
  • B.误唤醒次数明显变多← 正确答案
  • C.设备功耗随之下降
  • D.远场混响明显减少

答案:B。阈值越低越容易跨越,误唤醒增多;唤醒率通常随之升高而非降低。功耗与阈值无直接关系,混响是物理声场问题。阈值就像老周的“把握线”:线定低了,谁喊都像在喊自己。

Q5. 回声消除中的“参考信号”通常指什么?

单选题 · mid

  • A.人声训练标注结果
  • B.扬声器正在播放的信号← 正确答案
  • C.麦克风拾取的全部信号
  • D.环境中的底噪信号

答案:B。AEC 必须知道自己刚播了什么,才能估出混进麦克风的回声,所以参考信号就是扬声器播放的音频流。人声标注是训练数据,麦克风信号是 d(n),底噪是噪声项,都不是参考信号。

Q6. 设 d(n) 为麦克风拾取信号,ŷ(n) 为估计回声,则误差信号如何计算?

单选题 · mid

  • A.d(n) 加上 ŷ(n)
  • B.d(n) 减去 ŷ(n)← 正确答案
  • C.ŷ(n) 减去 d(n)
  • D.d(n) 乘以 ŷ(n)

答案:B。误差 e(n) = d(n) − ŷ(n),即“拾到的声音减去估计的回声”,剩下的就是人声。这个误差还会驱动 NLMS 滤波器系数更新,是 AEC 闭环的关键。

Q7. 四个麦克风理想相干叠加,比单麦克风最多可提升信噪比约多少?

单选题 · hard

  • A.3 分贝左右
  • B.6 分贝左右← 正确答案
  • C.9 分贝左右
  • D.12 分贝左右

答案:B。阵列增益约等于 10·log₁₀(N),N=4 时约为 6dB。3dB 对应 2 个麦,12dB 对应 16 个麦。这也是“数量翻倍只多 3dB”误区说法的来源。

Q8. 降低远场误唤醒的常用手段包括哪些?

多选题 · mid

  • A.适当调高唤醒阈值← 正确答案
  • B.波束成形聚焦用户方向← 正确答案
  • C.参考信号回声消除← 正确答案
  • D.完全关闭降噪算法

答案:ABC。调高阈值、波束聚焦、回声消除都能减少“不该响时响”。完全关闭降噪会让噪声串入判定,误触反而变多。三者对应老周的“挑着听、侧耳听、心里有数”。

Q9. 关于噪声抑制,下列说法正确的有哪些?

多选题 · hard

  • A.维纳滤波依赖先验信噪比← 正确答案
  • B.过度降噪会损伤目标语音← 正确答案
  • C.端点检测判断人声的有无← 正确答案
  • D.噪声抑制可彻底消除噪声

答案:ABC。维纳增益 G=ξ/(1+ξ) 由先验信噪比决定;增益压太狠会伤语音;VAD 先判断哪段有人声。彻底消除噪声是理想极限,现实中总伴随语音失真。

Q10. 关于语音唤醒与远场优化链路,下列说法正确的有哪些?

多选题 · extreme

  • A.阵列增益可提升入口信噪比← 正确答案
  • B.AEC 需要扬声器参考信号← 正确答案
  • C.阈值需权衡唤醒率与误触率← 正确答案
  • D.麦克风数量增加收益无上限

答案:ABC。A 对应 10·log₁₀(N) 的阵列增益;B 是 AEC 的原理前提;C 是阈值调优的核心矛盾。D 错误——阵列增益随数量对数增长,边际收益递减,且受阵列口径与硬件一致性限制。