想象你跟一个全双工语音助手聊了十分钟:它一边听你说话一边出声回复,前五分钟自然流畅,然后开始重复自己的词,接着突然安静,再然后吐出一串没人能听懂的音节。这不是个别模型的 bug,而是一整类模型在长对话里的共同命运。
KAIST 集成视觉与语言实验室与庆熙大学(Kyung Hee University)的研究团队在 arXiv 公开了 Full-Duplex Long-Horizon Benchmark(FD-LHB),专门用来把这个问题逼出来(arXiv:2610.32349,HuggingFace 论文页)。基准分两条轨道:一条是 FD-LHB-CANDOR,从 CANDOR 真人长对话语料里去掉开头三轮、按时长排序取最长 40 段,用同一段录音回放给每个模型,最多跑到 60 分钟;另一条是 FD-LHB-LLM,让 Gemini-2.5-Flash 担任对话搭档,本地 mms-tts-eng 把它的回复合成为 16 kHz 语音,每个模型跑 40 场、每场 20 分钟,话题覆盖兴趣、旅行、家庭、工作等十类日常场景。回放轨保证可控,交互轨保证真实,两条互相补位。
五款模型,两种死法
被测的五款模型是 Moshi、PersonaPlex、Raon-SpeechChat、BayLing-Duplex 和 Lychee-FD。前两款用滑窗缓存,3000 帧窗口在 12.5 Hz 下大约四分钟就填满;后三款是增长式上下文,跑满上下文分别需要约 5、17.5 和 10.9 分钟。
论文口径的数据是:没有任何一款模型撑住了几十分钟的对话。CANDOR 回放轨上,Moshi 和 PersonaPlex 在 60 分钟内的重复、长时静默、胡言乱语出现比例分别是 65%/100%/100% 和 90%/85%/100%;BayLing-Duplex 在 17.5 分钟内三项分别是 55%、100%、90%;Lychee-FD 在 10.9 分钟内出现重复和胡言的比例是 37.5% 和 30%;Raon-SpeechChat 则在约五分钟时上下文耗尽。在有来有回的 FD-LHB-LLM 上,基线模型最常见的死法是胡言乱语,命中 97.5%–100% 的场次,长时静默命中 70%–87.5%。
值得注意的是"上下文耗尽"被单独算作运行结束,不计入塌缩。也就是说滑窗模型属于"内存永远够用,但对话照样崩"。
病根一:滑窗把首个 KV 条目挤走了
论文给了一个相当反直觉的诊断。训练时样本被切成块,每块都从空缓存开始,于是每一块开头都有一个"初始化锚点"——首个在无任何历史缓存下算出来的 KV 条目。但推理时缓存从不清空,窗口一满就淘汰最旧的条目,锚点迟早被挤掉,模型就进入了训练时从未见过的状态。
证据链很硬:改变注意力窗口长度 W,静默出现时间按 (1.63±0.49)W 增长,胡言乱语按 (2.70±0.20)W 增长;而在纯静音输入下胡言仍按 (2.54±0.19)W 出现,说明这跟对话内容无关、只跟缓存周转有关。更直接的实验是只保留一个早期条目——第 1、2、3、4、5、9、17 个,或者 L/4、L/2、3L/4 这些位置——结果只有首个条目能在所有轮次里挡住胡言,其余每一个选择都至少在一次运行中失败;保留前 P 个条目时,P=0 全部崩溃,P≥1 的曲线完全重合。
病根二:模型在复读自己
重复是另一套机制。论文观察到重复期最高频的词是 of、then、you 这类短高频词,以及 yeah、okay 这类应答语;每轮运行里占主导的那个词,在重复真正开始之前就已经在爬升,之后继续涨。作者还往上下文里插入一个原本不存在的词 purple,统计接下来 20 秒它被重复的次数——插入越多,复发越多。
不用重训的两个补丁
顺着诊断,论文给出两个纯推理期的干预:Initialization-Anchor Pinning 把锚点钉住,只更新它自己那一个条目的位置索引;Duplex Repetition Penalty 对最近 512 个词元内出现过的词做惩罚,同时把 PAD/EPAD 排除在外,并在长时间静默时逐渐压低 PAD 的 logit,让模型还能继续开口。
效果是:回放轨上 Moshi 三项塌缩降到 0%、7.5%、0%,PersonaPlex 降到 2.5%、47.5%、0%;交互轨上每种失败都不超过 10% 的场次。代价是论文实测的实时因子——基线 0.5957,补丁方案 0.7525,而 StreamingLLM 式方案 1.0323 已经跟不上实时对话。消融实验显示两者互补:IAP 单独就把 Moshi 的胡言清零,DRP 单独不管用,而静默这一项能从 0% 提到 67.5%、再加 DRP 到 92.5%。
这个结论的边界
论文自己写得很清楚:诊断只覆盖两款滑窗模型,增长式上下文模型同样会塌,但原因不明,IAP 也不适用;FD-LHB-LLM 每个模型只跑 40 场,胡言判定依赖 Gemini-2.5-Flash 评委,8 人盲听验证显示评委不会误判正常语音、但会漏掉一部分真胡言,所以真实比例可能被低估;补丁也未能消灭全部问题,PersonaPlex 上仍有 19/40 场出现两分钟静默;15 人的听感实验显示对话早期听众其实更偏好不加 DRP 的版本(0.31–0.43),中后期才反过来。
所以呢:如果你的产品里有全双工语音客服,最该做的不是换一个更大的模型,而是拿一段二十分钟的真实录音回放一遍,看看它从第几分钟开始重复、开始沉默、开始胡说。塌缩是可以在上线前测出来的,而且大多不需要重训就能修掉大半。