打断检测受回声消除能力限制
别名: 回声消除限制打断 · 自己的声音盖住用户 · double-talk
概念解释
厨房音箱正大声念菜谱,用户说「下一页」。麦克风里同时有喇叭漏回来的合成音和近端的人声。回声消不干净,人声被当成残留回声扔掉,打断没发生;消得过狠,合成音自己的残响被当成近端语音,系统把自己打断。打断检测受限于回声消除(AEC-limited barge-in detection)说的是:状态机里允不允许插话,和麦克风在播放期间能不能把用户跟扬声器分开,是两件事。前者可以做成永远允许,后者由 AEC(acoustic echo cancellation)的残余和双讲检测封顶。
机制
全双工里,播放信号是已知的,AEC 要从麦克风里减掉这条已知路径。房间反射、音量、喇叭与麦的相对位置一变,路径估计就滞后。残余回声抬高能量检测,假打断出现:系统在没人说话时停播。为了压假打断而把阈值抬高,真打断的近端语音——尤其是被扬声器掩蔽的短命令——过不了门限,漏打断出现。双讲(double-talk)期间自适应滤波器必须冻结,否则会把用户语音也学进回声模型里,之后更听不到人。
所以「可以打断」写在对话管理里并不等于播放期间听得见。音量越大、房间越空、设备越远场,AEC 余量越小,检测越不可用。半双工(播放时关掉识别)是在用策略承认这个物理上限,代价是用户必须等播完。
怎么研究
在可控房间里做 播放声压 × AEC 开关/品质 的打断检测:播放一段固定 TTS,被试在指定字上插入短命令。因变量:命中、虚警(无插入时的自停)、检测延迟、以及残余回声能量。自变量包括扬声器音量、麦距、混响。把对话管理设成「一律允许打断」,这样测到的失败全是声学层的。
现网日志要对齐「用户开口时间」和「系统实际停播时间」。开口后仍继续播超过几百毫秒、且当时播放声压高,优先查 AEC 而不是意图模型。实验室用耳机回放 TTS、麦克风听不到扬声器,会把 AEC 问题测没。
边界
耳机听筒把播放从房间里拿走,AEC 负担骤降,打断检测不再是这条瓶颈——瓶颈回到端点和意图。播放音量被用户自己拧得很低时,近端相对变响,弱 AEC 也能过。极短的重叠(一个「嗯」)即使用户听见了自己在插,能量也可能达不到任何可靠门限。把漏打断理解成「用户不够大声」会把声学失败推给人,并诱发越说越大声的循环。
怎么落地
- 把打断验收分成两层:对话层是否允许,声学层在目标音量和房间里命中率是否过线。只测安静近场的允许打断,不够。
- 高音量、远场技能(厨房、车载外放)单独测漏打断和自停;自停高就不要靠再抬能量阈值去「修」,会把真打断一起杀掉。
- 播放期间把已知 TTS 作为 AEC 参考;双讲时冻结自适应。识别到疑似近端时先停播,再决定那句话是不是有效输入。
- 验证:目标场景把音量开到产品默认偏高档,在播报中段插「停 / 下一页」。记下从开口到停播的时间和虚警。漏检随音量上升、虚警随混响上升,就是 AEC 在封顶,不是话术问题。