VoiceMem:让语音助手既记住事实也记住情绪,检索只要 134 毫秒
实时语音对话,为什么至今装不上记忆?
全双工语音记忆卡在实时延迟门槛,第一个原因很直白:记忆组件生错了时代。失败体验随处可遇:你已经会对语音助手说"上周我们聊的那个项目,现在进展到哪了?"了,它多半接不住。这不是因为它笨,而是文本时代的记忆组件检索一次要 2 到 3 秒,实时语音对话留给任何额外环节的预算只有一两百毫秒。一句话:不是没人给语音助手做过记忆,而是所有记忆方案都得先挤过一道以毫秒计的窄门。
它卡在门槛上的第二层原因,是对话根本没有轮次。新一代实时语音助手大多跑在 duplex SLM(全双工语音语言模型)上:用户边听边说,模型也边听边发声,对话里没有"一个说完、另一个才开始"的明确轮次。轮次一消失,文本时代"等对方输入时顺带查库"的插入点也随之消失,任何额外环节都只能挤进实时路径的毫秒级缝隙。Moshi 是第一个把这个范式跑成可实时运行产品的系统,它的架构图里,用户音频与模型音频是并列的两条流,永远同时存在。

图注:Moshi 架构总览:文本骨干、神经音频编解码器,以及用户与模型双方音频的流式分层生成。两条音频流永远并行,对话不再有"轮到我"的等待期。Moshi
第三层原因,是时间预算容不下哪怕一次秒级操作。Moshi 论文把这道约束钉成了数字:理论延迟 160 ms、实际约 200 ms,而人类跨 10 种语言的平均应答时间是 230 ms。它试过一种 640 ms 的配置,直接判定为与实时对话要求不兼容。换句话说,从"对方话音收尾"到"你该回应",整个系统只有几百毫秒可花。Moshi
把前三层原因叠起来,这道门槛最终凝成记忆系统要过的三道坎,VoiceMem 论文把这层约束逐条转译。第一,信息与情绪必须在一个架构里长期同时建模。第二,系统必须在几乎零延迟的预算下保持高信息密度,检索要快,还得在 top-5 这种极小的输出规模下保住精度。第三,记忆方案要能跟着快速演进的语音模型随时换基底。它点破的现状是:常规管线检索要 2 到 3 秒,实时对话只许 100 到 200 毫秒的额外延迟。文本 agent 记忆惯用的 top-100 输出,又远超语音模型能消化的量。结论很清楚:记忆至今游离在实时对话路径之外。当代水位线同样印证这一点,Qwen3-Omni 这类把端到端首包延迟压到 234 ms 的语音模型,也仍然没有自带记忆层。VoiceMem Qwen3-Omni
这一章只需带走一句话:语音助手记不住你,不是没人做过记忆,而是此前所有记忆方案都进不了"几百毫秒"这道门。下一章看 VoiceMem 用什么样的结构挤进去。
双脑怎么分工,才赶得上 500 毫秒的对话间隙?
VoiceMem 的核心结构一句话能说清:把记忆拆成互不阻塞的两条通路,左脑管事实、右脑管情绪与人格。论文用三元组 $B_t = (G^L_t, G^R_t, E^{LR}_t)$ 形式化:左脑图 $G^L$ 把事实组织成不断演化的簇,右脑图 $G^R$ 维护情绪归因单元,跨脑边 $E^{LR}$ 负责把"对谁的情绪"锚定到具体的实体上。每条新话语到达时两脑各自激活新单元、增量更新,回复时则联合检索两边的结果。
这套结构落在三层管线上。

图注:VoiceMem 三层架构:Phase I 流式预处理抽取说话人、转写、实体、schema、情绪与 embedding;Phase II 是双脑核心算法层,左右脑并行;Phase III 把记忆项交给可互换的后端引擎查询。VoiceMem
三层各自回答一个问题。Phase I 解决"记忆入口不能等":说话人身份、转写、实体、情绪这些信号全部在用户还在说话时就流式抽取,不等到对方说完。Phase II 是论文真正的贡献,左脑和右脑各有一套结构,接下来两章逐一拆开。Phase III 是工程上的退路设计:底层引擎只要暴露"按 ID 取记忆、相似度搜索、写入更新"三个接口,就能被随时换掉。
第三章到第六章会逐一兑现论文开头的三句承诺:更准、更懂人、几乎零延迟。在此之前先记住一个前提:双脑检索藏进的是"本来就在等待"的间隙。对话系统靠 VAD(语音活动检测)判断对方是否说完了,判断阈值通常设在 500 ms,这段静默里对话双方本来就什么都不做。把记忆检索塞进这段等待,等于不占用对话主路径上的任何时间。
顺带一个命名提醒:"双脑"这个词在语音模型圈已有别的用法。Mind-Paced Speaking 论文里的双脑指思考脑加发声脑,解决的是边想边说的推理与发声分工,跟 VoiceMem 的信息加情绪记忆分流完全是两个维度,别混在一起。MPS
左脑凭什么用 top-5,赢过 Mem0 的 top-200?
现在拷问左脑:结构讲得通,凭什么检索又快又准?用一个具体场景贯穿对比:用户问"上周我们聊的那个项目,进展到哪了?"答案可能分散在三天前的三条对话里,而这三条对话围绕的是同一个项目实体。
先看经典方案怎么解。Mem0 是文本侧 agent 记忆的事实标准,流程分两相。抽取相把当前消息与最近的历史交给 LLM,提炼出候选记忆。更新相再把候选与库里最相似的若干条比对,决定新增、更新还是删除。数据库就是一堆自然语言记忆条目的向量索引。

图注:Mem0 的抽取与更新双相流程:消息与历史上下文先被提炼成候选记忆,再与相似既有记忆比对,经工具调用决定新增、更新或删除。它是为文本对话设计的 turn-based 系统。Mem0
这套流程在语音场景下有两个硬伤。一是延迟:Mem0 自报的 p95 端到端延迟约 1.44 秒,其中搜索阶段约 200 ms,这已经逼近语音模型的整份预算。二是检索方式:它日常以 top-100 的量级从全量记忆里捞"字面上最相似"的条目,一次可能灌进好几千 token,这场对比的基线场最高到 6,956 token。多条指向同一实体却与你此刻的问题无关的记忆会占满名额,却只提供极少有效信息。这里先把两把尺子拆开。top-100 是文本 agent 记忆的日常检索量级,论文正是用它论证"文本记忆输出超出语音模型的承受力"。标题里的 top-200 是评测口径:摘要那句"top-5 赢过 top-200 近 30 分"的对比,给 Mem0 放开的就是 200 条检索预算。两者不是同一个数。
VoiceMem 左脑换了个思路:在排序之前先把候选空间压密。它的索引是两级结构 $G^L=(S,V,E)$:实体 $V$ 各自归属某个 schema $S$,归属关系被直接编码而不引入显式边,因此不需要递归遍历。检索分三步走:先从用户说了一半的转写里匹配出相关 schema 与实体,做一跳扩展得到候选实体集,再把这些实体关联的后端记忆项汇总成候选池,最后只在候选池里做 top-5 搜索。结果候选池从几千 token 压到 430 token,检索耗时 134 ms。同口径的成绩摆在一起:在 LoCoMo 上,VoiceMem 用 K=5 拿到 91.2,Mem0 用 top-200 拿到 61.68,差近 30 分,摘要那句"近 30 分"说的就是这组数字。注意这是单数据集口径,11 个子类的平均另算:VoiceMem 是 76.39,比 Mem0 的 52.27 高出 24 分多。VoiceMem
"top-5 反超 top-200"靠的不是更聪明的排序,而是排序前候选空间的语义密度。这像查图书馆:经典方案把全馆的书按文字相似度翻一遍挑出 200 本再择优,左脑的做法是先用分类目录定位几排书架,只在这几排里挑 5 本。前者容易被字面相似但无关的书淹没,后者翻到的每一本都大概率在讲同一件事。
更特别的是,这个分类目录不是人拍脑袋定的。算法 1 叫 Cluster Subgraph Emergence(簇子图涌现):系统统计一个 session 内的查询流量,找出"总是被一起召回"的最大连通子图,由 LLM 按相关性、重要性、完整性把关,通过就升级为新的 cluster。论文对已存记忆做过内容分布统计:左脑 510 条里,49.8% 落在两个从未预设的槽位,比如一个"宠物与户外"槽横跨了日常、健康、关系三个预设槽。也就是说 schema 是跨预设边界重新切分的,不是预设内部的细化。同样是执行分裂,涌现比随机切分高约 2 分,而按大小硬切反而比完全不切还低近 1 分,分错位置比不分更糟。路由的作用也有消融佐证:它不抬高精度天花板,只决定到达天花板要花多少预算,没有它,想达到同样的 430-token 精度得把 K 拉到 30、烧掉 1,277 个 token。
顺带一提,记忆组织还有另一条路。A-MEM 走 Zettelkasten 流,每来一条新交互就让 LLM 当场生成关键词与链接,记忆结构在使用中自由生长。VoiceMem 是相反的一派:工程师在设计期定好固定 schema,再用真实查询流量驱动它演化。A-MEM
事实这一路解决了。但用户记得住你的项目,不一定记得住你的脾气。镜头转向右脑。
右脑怎么把「情绪」和「人格」真正记住?
"情绪进记忆"不是新想法。Emotional RAG 给每条记忆算一个情绪向量,检索时把语义相似与情绪一致加权合成一个分数。它管用,但 VoiceMem 的批评一针见血:这类方法 remain information-centric,情绪只是给旧答案加权的一个打分项,没有结构位置,也没有长期累积。Emotional RAG
右脑的升级是把情绪和人格做成独立结构:一张双节点的人格图(persona graph)$G^R=(V^I, V^C)$。独立节点 $v^I$ 记持久的东西,也就是用户的性格倾向、行为规律、有纵向证据支撑的情感模式。跨实体节点 $v^C_e$ 锚定在左脑的某个具体实体 $e$ 上,记"对特定对象的情境情绪"。
| 独立节点 $v^I$ | 跨实体节点 $v^C_e$ | |
|---|---|---|
| 记什么 | 持久的性格与行为规律 | 锚定在某个实体上的情境情绪 |
| 例子 | "小林慢热,当众发言会紧张" | "对羽毛球:越打越喜欢" |
| 为什么要分开 | 合并会把一次情境反应误当成稳定特质 | 合并会抹掉这份情绪是关乎谁的 |
论文对"为什么不能合并"的论证极硬:把两个节点合并,要么把情境性反应误当成稳定特质,要么抹掉赋予情绪意义的真实世界起因。独立节点像一份性格档案,跨实体节点像贴在具体对象上的一张张便利贴,档案和便利贴写进同一本册子,两种信息都会失真。
情绪写入也分两个时间尺度。短时程归因在每一轮对话内做:听到一句话,情绪估计器给出情感表示,连同这句话的情境目标与起因一起更新 persona 节点,让图在对话进行中持续适配。长时程归因在 session 结束时做:把整段对话的情绪证据联合分析,只把反复出现的模式固化成独立节点,而不是累积每个转瞬即逝的状态。前者保存"当时发生了什么、因为什么",后者沉淀"这个人到底是谁"。
效果数字必须绑口径。在 ES-MemEval、PersonaMem、PersonaLens 三个人格基准的并集上,VoiceMem 用 GPT-4o-mini 做回复模型得 74.16,用作者精调的 Qwen3.6 得 76.56,都超过此前最强系统 MemOS 的 72.27,分别高 1.89 分和 4.29 分。顺带一提,arXiv 摘要页写的是 4.29、TeX 源写的是 1.89,其实是同一个提升绑了不同回复模型行,论文自己没说明白,算个小瑕疵。VoiceMem
最硬的证据来自对照:把全部历史塞进上下文的 full-context 基准,在 ES-MemEval 的冲突检测上只有 12.10、用户建模只有 21.70,而 VoiceMem 是 69.10 和 74.00。证据就在 full-context 的输入里,它却做不出情绪归因。人格记忆不等于把历史塞进上下文,这是最直接的证明。当然要诚实:在冲突检测这一项上,Emotional RAG 的 77.30 仍高于 VoiceMem 的 69.10,右脑不是全面碾压。
怎么训练出会记忆的语音模型,又拿什么度量它?
左右脑的结构讲完了,还差底层两件事:语音模型本身怎么学会"用记忆",又凭什么说它好用。
先立历史坐标。长时程对话评测的标准由 LoCoMo 在 2024 年立起来:让 LLM agent 各自带着人格档案和因果事件时间线生成对话,再由人类标注者校对跨会话一致性,单个对话平均 300 轮、最长 35 个 session。当年最强的 GPT-4-turbo 整体只拿到 32.4,人类是 87.9,模型的记忆能力离人差了近两倍。LoCoMo

图注:LoCoMo 的生成管线:左侧 LLM agent 携带人格档案与因果事件时间线生成对话,右侧人类标注者做跨会话一致性校对。机器生成加人在回路,自此成为长时程对话数据的事实标准。LoCoMo
问题在于,这帮既有基准要么只测文本信息(LoCoMo / LongMemEval / Memora),要么只测文本人格(ES-MemEval / PersonaMem / PersonaLens),连 2026 年初 text-only 的 SOTA 记忆系统 EverMemOS 也明说自己是 text-only。没有一家覆盖"音频加长时加记忆"的组合,所以 VoiceMem 必须自己造一把尺子。EverMemOS
训练这关是四阶段管线,论文称这是据其所知首批具备显式记忆访问的语音语言模型。第一步构造记忆世界:为每个合成用户生成连贯的长期背景,链条是人格、背景、事件、消息、记忆,保证产出的历史在时间上自洽。第二步是在线蒸馏:反复采样任务目标、构建场景、注入要求回忆与指代消解与矛盾处理的挑战,把"用了记忆"和"没用记忆"的候选回复做对比蒸馏,再按必要性、忠实度、质量过滤,循环产出 ChatMem-400K 语料。被改造的学生是 Qwen2.5-Omni、Qwen3-Omni、Step-Audio2-Mini 这类本来只会听不会记的语音模型。教师是更强的专有模型 Qwen3.5-Omni 与 Step-Audio2,这一配置据论文训练管线描述,在线蒸馏的目的正是缓解灾难性遗忘。第三步人工精修,第四步用下面的基准验收。Qwen3-Omni
这把新尺子叫 ChatMem-Bench:316 道题,来自 15,314 轮对话、53 小时音频,覆盖信息、人格、情绪归因、副语言与环境四个维度的 14 个子类,VoiceMem 领先其中 11 个。最能说明"为什么必须造新尺子"的是副语言维度:三个声学子类上,所有文本系统只有 3.23 到 26.92,VoiceMem 是 45.16 到 53.84。转写文本根本不携带声音证据,旧基准永远量不到这一层。论文给出的整体口径是相对提升:信息记忆比 Mem0 高 46.1%,人格比 Mem0 高 16.8%,长时程音频比 Mem0 高 41.3%,其中人格一项用的是精调模型那行。VoiceMem
134 毫秒装得下什么?部署、验证与没被证明的事
最后算总账。"把检索藏在等待间隙里"说得漂亮,到底藏得住吗?论文把流程切成 listening、speech tail、anticipation、searching 四个阶段,后三段落在静默窗里:话音收尾 0 到 200 ms、预判回复 200 到 400 ms、后端搜索 400 到 500 ms。密集双脑检索本身只花 134 ms,而且这个耗时对 K 几乎不敏感,K 从 3 到 100 都稳定在 134 ms 附近,因为 schema 路由在排序前就界定了候选池,最终返回几条并不改变搜索范围。加 K 的边际收益也极低:K=10 只加 1.3 分,K=100 加 2.3 分却要 8 倍的 token,所以 K=5 是个近乎白赚的运行点。VoiceMem

图注:VoiceMem 的四阶段流式检索流程(听、话音收尾、预判、搜索),论文称它是把检索延迟压下来的最后一道保障。各阶段的毫秒窗口出自正文,图中未标注。VoiceMem
这里要立一道口径边界:134 ms 是记忆检索本身的耗时,不是"听到声音到说出首字"的端到端延迟。Moshi 的 200 ms 是模型端到端延迟,VAD 的 500 ms 是静默窗口,三把尺量的是不同对象,不能拿来直接相减。论文也没有单独拆解 Phase I 预处理和 ASR 的开销,这是它欠着的一笔账。反过来,当代 duplex 模型 Qwen3-Omni 冷启动首包约 234 ms,与 134 ms 检索相加仍落在 500 ms 预算内,两者是流水线组合而非竞争。Qwen3-Omni
部署这关,论文用 graph-on-graph 解耦回答"底层引擎换代怎么办":上层只做管理、路由和流式,下层记忆引擎整体平替。实测把同一套上层路由分别包在三个真实引擎外面:
| 底层引擎 | 裸引擎 | 加 VoiceMem 上层 | 增益 |
|---|---|---|---|
| Mem0 | 61.68 | 91.20 | +29.52 |
| LangMem | 56.18 | 71.94 | +15.76 |
| Zep | 62.93 | 85.85 | +22.92 |
| 平均 | 60.26 | 83.00 | +22.73 |
三个引擎平均涨 22.73 分,增益不绑定特定后端,Zep 与 LangMem 也确实是可以平替的真实产品。注意摘要里"top-5 赢过 top-200 近 30 分"说的正是 Mem0 这一行:裸引擎 61.68,加上层后 91.20,差约 30 分。诚实的一面是:LangMem 与 Mem0 起点只差 5.50 分,终点却差 19.26 分,说明上层路由救不了弱后端,后端质量仍是可恢复上限。Zep
组件消融先确认了双脑缺一不可:拿掉上层索引,LoCoMo 上掉 9.9 分。拿掉右脑,掉 6.3 分,情绪与人格确实承载着事实存储没有的信息。剩下的都是边界。联合检索这一步,也就是双脑结果怎么合并,它的消融只掉了 2.6 到 0.4 分,论文自己承认"取两个独立排序列表的并集"是可行退路,双脑联合检索的机制价值还没有强证据。涌现式聚类和双时程更新在短 session 上几乎无效,增益依赖长对话。ChatMem-Bench 的构造细节被推迟到后续技术报告,评测规模只有 53 小时音频,没有多语言、没有真实用户 A/B。综合下来:信息与音频两个维度的结论很结实,情绪维度的结构性优势与评测完备性,还得等后续报告来补。
一整条主线收拢起来:记忆要装进实时语音对话,必须同时满足三件事,事实与情绪分开存、检索藏进本来就在等待的间隙、底层引擎随时可换。第一件事由双脑结构与人格成绩兑现:左右脑分储事实与情绪,在人格基准并集上超过此前最强系统,分开存有数据撑腰。第二件事由 134 毫秒与流式时序兑现:检索落在 VAD 静默窗里,没占用对话主路径的时间。第三件事由平均 +22.73 兑现:三个引擎分别包上同一套上层路由都有稳定增益,后端可换有实测可依。它的价值不在刷了一个榜,而在于论文所展示的:把记忆从文本世界的秒级延迟,搬进了语音世界的毫秒级间隙里。
想深入可以读原文:VoiceMem: Streaming Dual-Brain Memory for Real-Time Interaction — arXiv:2608.26005
参考文献
- VoiceMem: Streaming Dual-Brain Memory for Real-Time Interaction(arXiv:2608.26005):https://arxiv.org/abs/2608.26005
- Moshi: a speech-text foundation model for real-time dialogue(arXiv:2410.00037):https://arxiv.org/abs/2410.00037
- Mem0: Building Production-Ready AI Agents with Scalable Long-Term Memory(arXiv:2504.19413):https://arxiv.org/abs/2504.19413
- A-MEM: Agentic Memory for LLM Agents(arXiv:2502.12110):https://arxiv.org/abs/2502.12110
- Emotional RAG: Enhancing Role-Playing Agents through Emotional Retrieval(arXiv:2410.23041):https://arxiv.org/abs/2410.23041
- Mind-Paced Speaking: A Dual-Brain Approach to Real-Time Reasoning in Spoken Language Models(arXiv:2510.09592):https://arxiv.org/abs/2510.09592
- Evaluating Very Long-Term Conversational Memory of LLM Agents(LoCoMo,arXiv:2402.17753):https://arxiv.org/abs/2402.17753
- Qwen3-Omni Technical Report(arXiv:2509.17765):https://arxiv.org/abs/2509.17765
- EverMemOS: A Self-Organizing Memory Operating System for Structured Long-Horizon Reasoning(arXiv:2601.02163):https://arxiv.org/abs/2601.02163
- Zep 官方 research 页:https://www.getzep.com/research/
- LangMem 官方文档:https://langchain-ai.github.io/langmem/