📄 跨会话记住谁说了什么及其时态:PERSIST 语音记忆解读
英文题目:PERSIST: Who-What-When Memory Across Sessions for Full-Duplex Spoken Dialogue
标签:#语音对话系统 | #检索增强 | #基准测试 | #实时处理
评分:7.5/10 | 创新 1.5/2 | 技术严谨 1.2/1.5 | 实验充分 1.2/1.5 | 清晰度 0.8/1 | 影响力 1/1.5 | 开源 0/1.5 | 可复现 0.3/0.5 | 工程/实践 1.5/1.5
👥 作者与机构
- Achira Lin:机构信息未在 arXiv HTML 中可靠披露
- Siyuan Hou:机构信息未在 arXiv HTML 中可靠披露
- Wenyi Yu:机构信息未在 arXiv HTML 中可靠披露
- Xinnian Zhao:机构信息未在 arXiv HTML 中可靠披露
- Haoyu Niu:机构信息未在 arXiv HTML 中可靠披露
- Wang Geng:机构信息未在 arXiv HTML 中可靠披露
- Longshuai Xiao:机构信息未在 arXiv HTML 中可靠披露
- Shihai Xiao:机构信息未在 arXiv HTML 中可靠披露
- Mangsuo Zhao:机构信息未在 arXiv HTML 中可靠披露
- Chao Zhang:机构信息未在 arXiv HTML 中可靠披露
📌 核心摘要
多人共用语音助手需要跨会话记住谁在何时说了什么,难点是同一话题会被多人反复修订,单纯按话题相似找回文本会混淆说话人和新旧状态。PERSIST先把历史语音跨度写成带说话人和时间的可读事件记录存入长期库,对话模型在需要历史时发出<retrieve>触发检索。触发后系统不重编码查询音频,而是复用SALMONN-omni全双工骨干已算出的编码器特征和解码器隐状态,经语义-时间池化与说话人嵌入拼成查询向量。查询向量与库中记录做语义内容、声学说话人身份和时间状态的3W联合打分,取前k条记录送回对话模型的短期上下文再生成回答。与只做语义相似或只保留最新事实的方法不同,该联合打分能区分同话题下不同说话人与修订前后状态。在SpokenTrace评测的1200个查询上,PERSIST外部转写配置相对同转写BGE-large-en-v1.5基线,端到端严格准确率从58.50%提高到85.08%。检索层面所有支撑证据完全命中率EM@3从49.01%提高到82.10%。结论适用于两段历史加一段当前查询的合成对话,对真实噪声、长轮注册和开放词汇说话人尚未验证。原文报告检索延迟从波形重算的578.42 ms降到缓冲复用的7.03 ms,训练总时长与设备数量等完整开销未说明。
🔗 开源与复现资源
本次未形成可展示的已核验资源记录,开放状态尚未核实。
可达状态仅表示本次链接检查结果,不代表许可证、本文权重或运行复现已验证。
🧭 深度解读
语音助手要记住什么:输入、目标与必须保留的信息
这篇论文研究的是多人共用、跨多次会话的语音助手场景。输入是连续的语音对话历史,包括两个历史会话和一个较短的当前会话,当前会话末尾有一个语音提问。目标是让助手能正确回答提问,输出是自然语言回答。关键在于提问往往不只问内容相似的片段,例如“我当初计划哪天离开”,必须同时保留 3 类信息:谁说的,即当前说话人在历史中对应哪位参与者;说了什么,即具体的事实内容。
何时说的,即该事实是修订前还是修订后的状态。只有三者都对,回答才算对。论文把短期维持当前交互的表示称为主动上下文,把跨会话保留的可读历史称为持久存储,前者容量有限,后者需要在会话重置后仍可用。全双工指边听边说、允许打断和修正的实时交互方式,它使历史快速累积,更依赖持久记忆,同时要求检索不能打断说话节奏。理解这一点后,才能明白后文为什么既要做说话人接地,又要做时间状态建模,还要压缩检索延迟。
已有两条路线为什么不够:语义检索与只保留最新事实
论文对照了两类已有做法。第一类是语义检索,输入同样是历史文本或语音转写,目标是找出主题相关的内容,常用稠密向量或词频方法实现。它的局限是当不同说话人说过相似内容,或同一事实在不同会话被修订时,只按主题相似会取错说话人或取错新旧状态。第二类是结构化事实更新,输入是新观察到的事实,目标是维护一份最新事实表,做法是覆盖旧值。这在只需要最新状态时有效,但会丢掉回答回溯问题所需的早期状态,例如问最初计划就答不出来。
论文还讨论了全双工语音模型、流式上下文缓存、显式长期记忆和共享主干的检索等相关工作,指出滑动窗口保留注意力汇聚 token 只能维持流畅,不能恢复被逐出的语义证据,也不能跨会话存活;而自反省取回 token 等思路提供了用模型自身发出检索控制信号的参考,但解决的是外部知识检索,不是带说话人归属的自身对话历史检索。因此论文把问题定位为需要同时处理内容、说话人、时间的联合检索,而不是把说话人和时间只当作过滤元数据。
一个例子看清失败:同样的出发计划为什么会答错
论文用一个 3 会话的例子说明任务难度。第一会话中 Alice 说计划周一离开,Bob 说计划周二离开;第二会话中 Alice 把自己的计划改成周五;第 3 会话中 Alice 用语音问自己当初计划哪天离开。正确答案应是周一,需要先从当前语音认出提问者是 Alice,再在历史中找到 Alice 在第一会话的陈述,并把它与第二会话修订后的周五区分开。
如果只按语义找出发计划,可能取出 Bob 的周二,即说话人错误,也可能取出 Alice 修订后的周五,即时态错误。如果记忆只保留最新状态,则周一已被覆盖,系统只能说原始计划不可用。下面的示意图把这 3 种情况并排展示,上面是跨会话共享对话的时间线,下面是两种失败范式与论文方法的对比。
看图路径: 1. 先看上排三个会话的时间线:谁在哪个会话说了哪个出发日期;2. 再看下排三种恢复方式对错误说话人和错误时态的不同处理;3. 注意 PERSIST 分支如何同时标注说话人身份、语义内容和历史状态
论文图 1。原论文 Figure 1::“Motivation and failure modes of existing speech memory paradigms under dynamic multi-speaker dialogue.”。
图的上排显示会话 1 的初始计划、会话 2 的修订以及会话 3 的当前语音查询,声波图标表示查询是语音输入。下排左侧语义检索同时指向 Bob 的第一会话记录和 Alice 的第二会话记录,分别标注说话人错误和状态错误;中间最新状态记忆把第一会话的周一划掉,只剩第二会话的周五,因而无法回答原始计划;右侧同时标注说话人身份、出发计划内容和历史状态,选中周一并回答 Alice 的原始计划是周一。这个例子对应后文基准中的历史状态检索与第一人称查询的组合,也是理解联合打分必要性的最直接材料。
PERSIST 整体如何工作:写入、触发、检索与回答
PERSIST 的整体流程分为写入和检索两条操作。写入器持续把语音片段转成可读的记忆记录,记录带说话人归属和会话时间信息,存入持久库,超出主动上下文也不丢失。检索发生在对话模型发出特殊标记<retrieve> 时,检索器把当前查询编码成查询向量,与库中每个记忆向量打分,取前 k 个记录的标题送回模型的主动上下文,再继续生成回答。
论文实现了两种写入路径:主干原生路径复用对话模型的中间表示做转写,外接路径用说话人归属语音识别系统得到转写,但两种路径输出同一种可读事件记录格式,共享同样的说话人接地、存储和联合检索管线。检索触发被做成对话模型的原生动作,仿照全双工模型决定何时开口说话的思路,避免另加决策模型带来的额外推理步骤。下面的系统总览图展示了当前会话、对话模型、写入器、持久库和检索器之间的数据流向。
主动上下文 × 持久记忆库: 主动上下文指对话模型当前直接可见的近轮对话,负责维持正在进行的交互;持久记忆库指存放在 CPU 中的可读历史事件记录,负责跨会话保留被滑出上下文的内容。二者搭配的原因是全双工边听边说会快速耗尽有限上下文,只有把旧事件搬到库里并在需要时取回,才能既保持实时交互又不丢失历史,组合后多出跨会话调用历史的能力。
记忆写入器 × 记忆检索器: 记忆写入器指把语音片段持续转成带说话人和时间戳的可读标题并编码成记忆向量的通路;记忆检索器指在模型发出<retrieve> 后用缓存的查询表示对库中向量打分取前 k 个标题的通路。前者负责建库,后者负责用库,二者共享同一种事件记录格式和说话人接地,组合后形成写入与读取闭环,写入质量直接决定检索上限。
读图说明是:先从左侧当前会话的语音查询出发,看它如何同时进入写入器和对话模型,再看对话模型发出检索请求后如何从持久库取回历史并与近期对话拼接生成回答。
看图路径: 1. 沿左上当前会话到右上对话模型的箭头看检索触发与回答路径;2. 看左下写入器如何经可读标题加时间戳进入中间持久记忆库;3. 看右下检索器如何用缓存状态做联合打分并返回前 k 条记录
论文图 2。原论文 Figure 2::“PERSIST system overview. The memory writer continuously converts speech spans into readable memory records that persist beyond the active context and across sessions.”。
图中左上是 Alice 在第 3 会话的语音查询,中间上方是对近期对话与取回记忆的拼接,左下是原生或外接两种转写方式经可读标题加时间戳、说话人接地与记忆编码后存库,中间是保留早期与修订状态的记忆库,右侧是根据缓存状态构造查询、做联合打分、选前 k 条并返回的检索器。该图说明早期状态没有被覆盖,检索返回的是第一会话 Alice 的周一记录,这是后文能做历史状态问答的结构基础。
原生实现中语音表示如何被复用:写入路与检索路
主干原生实现实例化在 SALMONN-omni 上,目的是在苛刻的全双工实时条件下验证延迟收益,但记忆接口本身不依赖交互模式。写入路在下:对每个已完成的语音片段,先用语音识别专用适配器生成可读标题,再用检索专用适配器把标题编码成语义表示;说话人头从缓存在说话人缓存中的语音编码器中间特征提取说话人嵌入;语义时间池化器把说话人感知的语义表示与时间特征融合成 1152 维记忆向量,与标题一起存入 CPU 记忆库。
检索路在上:近期语音表示增量缓存在查询先进先出缓存中,当模型发出检索触发时,语义时间池化器把缓存表示、从说话人缓存提取的说话人嵌入和时间信息组合成 1152 维查询向量,做内积前 k 搜索,把对应标题返回对话上下文。编码器与对话主干在推理时已计算过这些中间状态,因此检索时不需要重编码查询音频。下面的结构图左侧是主干原生检索的数据流,右侧是检索头的细节展开。
读图说明是:左侧先看实时语音经语音编码器和对话主干的主路径,再看向下分出的说话人缓存与查询缓存两条支路如何汇入联合检索头;右侧先看说话人加语义拼接成 1024 维、时间线索经池化投影成 128 维,再看二者拼接成 1152 维后做点积打分取前 k 条。
看图路径: 1. 看左侧语音编码器到说话人缓存与检索适配路径的分叉位置;2. 看右侧语义分支 1024 维与时间分支 128 维如何拼接成 1152 维;3. 注意虚线触发信号与实线表示流动分别对应控制与数据
论文图 3。原论文 Figure 3::“Backbone-native implementation of PERSIST.”。
图中左侧标注了说话人头输出的说话人嵌入记为谁、查询缓存输出记为说什么、计时器输出记为合适时间,三者进入联合检索头,触发信号来自模型发出的检索标记;右侧明确画出说话人加内容拼接经语义池化得到 1024 维向量,时间线索经时间池化与投影得到 128 维向量,二者拼接为查询向量,库中存储键也是同样结构,点积后取前 k 条送入对话上下文。该图把后文公式中的分量来源具体化,理解了缓存复用才能理解延迟下降的来源。
联合打分如何算:说话人条件语义加显式时间项
为了让检索同时考虑语义内容、说话人身份和时间信息,论文把每个查询和每个记忆都表示成 1152 维向量,其中 1024 维是语义分量,128 维是时间分量。谁被融入说话人条件语义匹配,何时则贡献显式时间项。具体做法是:记查询为 q,候选记忆索引为 i,H 表示隐藏状态序列,查询用缓存的查询状态,记忆用标题编码状态,每段序列维度为状态数乘 4096。
把对应说话人嵌入作为额外一个 token 拼到内容状态前面,再经共享语义注意力池化器映射到 1024 维并做 L2 归一化,使内积反映余弦相似而非向量模长。时间部分采用非对称编码:记忆的时间键直接来自其会话与时间特征,查询侧则用时间池化器聚合查询状态以捕捉所要求的时间关系,会话索引与会话内时间被映射为固定 6 维特征,经可学习的查询与记忆映射和有界函数处理后再打分。最后把语义与时间分量拼接而不做进一步归一化,总分即两部分内积之和。
说话人嵌入 × 语义池化: 说话人嵌入指从语音编码器中间特征提取的、表示是谁在说话的向量;语义池化指把一段文字或隐藏状态序列压缩成一个语义向量的注意力池化操作。PERSIST 把说话人嵌入作为额外的一个 token 拼到内容状态前面再做语义池化,让同一个池化结果同时编码说了什么和谁说的,组合后使内容相似但说话人不同的记录可以在向量层面被分开。
语义分量 × 时间分量: 语义分量是 1024 维的说话人条件语义向量,用余弦相似度量内容加说话人是否匹配;时间分量是 128 维的时间向量,度量查询所要求的时间关系与记录发生时间的匹配。二者拼接成 1152 维向量后做内积相加得到总分,搭配的原因是只靠语义分不清修订前后的两个状态,只有显式加一项时间分才能偏好符合要求时态的记录。
检索触发标记 × 查询先进先出缓存: 检索触发标记指对话模型在需要历史信息时自己发出的特殊 token <retrieve>,作用是决定何时检索;查询先进先出缓存指增量缓存的最近 128 个解码器第 19 层隐藏状态,作用是提供构造查询向量所需的近期语音表示。二者搭配可以不引入额外决策模型、不重编码整段历史,触发时直接用缓存状态组装查询,从而满足全双工的延迟预算。
查询与记忆向量的拼接形式如下,代码将显示原始公式,符号含义见上段说明。
\[\mathbf{q}=[\mathbf{q}_{\mathrm{sem}};\mathbf{q}_{\mathrm{time}}],\qquad\mathbf{k}_{i}=[\mathbf{k}_{i,\mathrm{sem}};\mathbf{k}_{i,\mathrm{time}}].\]总检索分数为语义内积加时间内积,代码将显示原始公式,它说明时间分可以独立地推高或拉低候选排序。
\[r_{i}=\mathbf{q}^{\top}\mathbf{k}_{i}=\mathbf{q}_{\mathrm{sem}}^{\top}\mathbf{k}_{i,\mathrm{sem}}+\mathbf{q}_{\mathrm{time}}^{\top}\mathbf{k}_{i,\mathrm{time}}.\]这种加法形式的意义是内容与说话人匹配好的候选先拿到语义分,再由时间关系做修正,历史状态与最新状态因此可以在同一库中共存而不互相覆盖。
三部分如何训练:转写分支、说话人头与检索器
论文的训练分三块,冻结与更新范围写得很明确。原生记忆转写分支从对话模型第 8 个解码器层之后分叉,复制后 24 层作为专用记忆分支,只优化分支特定的适配器参数、轻量 token 适配器和分支归一化,共享语音编码器和对话主干保持冻结。训练经过 3 个阶段:在 GigaSpeech 和 CommonVoice 上做带时间戳的语音识别预训练,在由 Natural Questions 和 TriviaQA 派生的对话上做全双工会话微调,再在 SpokenTrace 训练集上用模型生成的流式历史做 GRPO 适应。
推理与训练用同一增量转写协议,每 30 秒接收至多 120 秒缓存的分层表示和近期已提交转写,只生成新完成的带时间戳话语,避免重编码早期音频。说话人头复用冻结语音编码器第 5、7、8 层隐藏状态,经可学习层混合与注意力统计池化产生 4096 维归一化说话人嵌入,在说话人不重叠的 CommonVoice 片段上训练,在线与持久说话人记忆做余弦匹配,阈值在验证集上选定。检索器训练分 2 个阶段,第一阶段用 MS MARCO、QReCC 和 TopiOCQA 准备的 196929 个样本学通用音频到文本检索,查询语音用 CosyVoice 合成、声音采自 2338 个说话人的语音库。
第二阶段用 SpokenTrace 训练集做会话记忆适应,每个查询与同 episode 全部历史记忆对比,并加入跨排序负例和显式难负例,包括内容相似或相同但说话人或时态错误的记忆。附录还给出 GRPO 的文本奖励、格式奖励、时间奖励组合与说话人损失形式,但本节抓住冻结范围、监督来源与难负例构造即可复述关键步骤。
SpokenTrace 如何构造:任务轴与说话人引用轴
SpokenTrace 是为诊断记忆而构造的基准,每个 episode 包含两个历史对话会话和一个较短的当前会话,当前会话末尾是语音查询。历史包含重复出现的说话人、重访的话题,以及可能引入、修订或重提的事实。评价沿两个正交标注轴展开。记忆任务轴规定查询需要的操作,包括直接回忆、时间定位、最新状态、历史状态、变化比较和多跳推理 6 种历史依赖任务。
说话人查询类型轴规定查询与说话人身份的关系,包括与说话人无关、当前说话人用第一人称指自己、按名字指另 1 位参与者、按事实或行为反查说话人 4 种。此外还有只用当前会话可答的当前会话控制查询,以及历史与当前都无证据的缺失证据查询,用于检验是否会无依据回忆。语音用 CosyVoice2 合成,参考音来自 LibriSpeech,每个 episode 内同一参与者在历史与当前使用同一参考说话人,不同参与者用不同说话人,保证跨会话声学一致性。
数据集划分与评测集分布如下,训练集规模远大于验证与评测,评测集从 1200 个 episode 各取一个查询,4 种说话人类型各 300 个。
下表说明数据集划分问题:在什么数据量上训练与评测,列是划分名称、episode 数与查询数,数值越大表示覆盖的会话历史越多。
| Split | Episodes | Queries |
|---|---|---|
| Training | 9,119 | 27,985 |
| Validation | 1,013 | 3,185 |
| Evaluation | 1,200 | 1,200 |
该表显示训练含 9119 个 episode 和 27985 个查询,验证含 1013 个 episode 和 3185 个查询,评测含 1200 个 episode 和 1200 个查询。它的限制是只给出数量,没有给出语音时长与说话人多样性的完整分布,复现时还需结合附录的场景覆盖与合成细节理解泛化边界。评测分证据检索与端到端回答两层:前者在 1106 个需要历史证据的查询上算 Recall@1/3/5 与全部支持证据完全命中率 EM@3/5,后者用 GPT-4.1-mini 按任务与说话人类型标准判正确、部分正确或错误,只有正确才计入严格准确率。候选池按场景均衡划分,平均每池 4331 条候选,检索时池内包含所属 episode 的全部历史记录。
端到端回答谁更好:外接转写下的方法对比
端到端比较要固定转写条件再看检索器的贡献。论文比较了 PERSIST-External 与 PERSIST-Native 两种实现,前者把原生转写分支换成 VibeVoice-ASR,后者用主干原生转写分支,二者共享说话人接地、检索器和对话模型;又在外接转写下把 PERSIST 检索器换成 BGE-large-en-v1.5 或 BM25,以隔离检索方法的影响。另设两个参考条件:Empty 只用当前会话上下文不取历史,Gold 在触发检索时直接给 3 条按时间排序的含标注证据的记录,分别衡量无历史记忆与证据正确时的上限。下表截取历史状态、最新状态、变化比较与总体,比较问题是相同转写下联合打分是否带来问答准确率提升,指标是严格回答准确率,数值越高越好。
| Memory task | Queries | External | BGE | BM25 |
|---|---|---|---|---|
| Historical state | 197 | 87.31 | 49.75 | 58.88 |
| Latest state | 200 | 82.00 | 42.00 | 47.00 |
| Change comparison | 203 | 75.86 | 30.05 | 33.50 |
| Overall | 1200 | 85.08 | 58.50 | 61.67 |
表中 PERSIST-External 总体达到 85.08%,高于 BM25 的 61.67% 与 BGE 的 58.50%,PERSIST-Native 为 71.75%。分任务看,历史状态上外部配置为 87.31%,而 BGE 仅 49.75%、BM25 为 58.88%;最新状态上外部配置为 82.00%,BGE 为 42.00%、BM25 为 47.00%;变化比较上外部配置为 75.86%,BGE 为 30.05%、BM25 为 33.50%。直接回忆上差距较小,外部配置 85.57%,BGE 也有 82.99%,说明纯内容检索在该任务已够用。
Empty 在时间定位上仍有 68.72%,因为答案空间小,但在其余 5 个历史依赖任务上平均仅 1.29%,而 Gold 达 96.87%,证明历史记忆确有必要。需要强调结论成立条件:最高准确率来自训练语料大得多的外接语音识别,转写质量差距会传导到端到端,原生配置评估的是可低延迟部署的一体化实现,二者共享同一联合打分形式,不能把外接的数字直接当作原生部署的性能承诺。
记忆检索本身强在哪里:整体命中率与时间项的贡献
检索层评价排除当前会话与缺失证据查询,只看 1106 个需要历史证据的查询,候选池与端到端相同。指标中 Recall@k 是每查询平均找回的标注支持话语比例,EM@k 是全部标注支持话语都进入前 k 的查询比例,后者更严,要求证据集完整。下表比较 BM25、BGE 与 PERSIST,并给出推理时关闭时间分的同一 PERSIST 模型,比较问题是联合打分相对纯文本检索提升多少、显式时间项又额外贡献多少,数值越高越好。
| Retriever | R@1 | R@5 | EM@3 | EM@5 |
|---|---|---|---|---|
| BM25 | 47.60 | 64.87 | 54.16 | 58.50 |
| BGE-large-en-v1.5 | 44.39 | 59.00 | 49.01 | 51.81 |
| PERSIST w/o temporal | 62.84 | 91.18 | 80.20 | 87.79 |
| PERSIST | 66.14 | 92.95 | 82.10 | 89.51 |
表中 PERSIST 的 R@1 为 66.14%、R@3 为 87.07%、R@5 为 92.95%,EM@3 为 82.10%、EM@5 为 89.51%,全面高于 BM25 的 EM@3 为 54.16% 与 BGE 的 EM@3 为 49.01%。关闭时间分后 EM@3 降到 80.20%,R@1 从 66.14% 降到 62.84%,说明显式时间分确有增益,但大部分提升来自说话人条件语义与整体训练。该结论的限制是平均指标掩盖了任务差异,时间定位等任务主要靠内容找回事件再读时间戳,时间分的帮助较小,具体需看按任务拆分。未胜出的细节是 BGE 在时间定位 R@1 上仍有 88.27%,高于 PERSIST 的 83.80%,不能说新方法在所有子任务都最优。
分任务拆开看:时间分在哪些问题上更重要
把检索按记忆任务拆分后,可以看到时间分的非均匀作用。对单证据任务用 R@1 衡量是否把支持记录排第一,对双证据任务用 R@3/5 衡量部分找回、用 EM@3/5 衡量完整找回。下表比较 BM25、BGE、无时间分与完整 PERSIST,比较问题是时间建模对新旧状态区分的增益有多大,数值越高越好。
| Task | BM25 | BGE | No temporal | PERSIST |
|---|---|---|---|---|
| Direct recall | 80.93 | 79.38 | 83.51 | 84.02 |
| Latest state | 24.50 | 23.00 | 72.50 | 74.00 |
| Historical state | 36.55 | 28.43 | 73.10 | 80.20 |
| Temporal localization | 86.03 | 88.27 | 78.77 | 83.80 |
直接回忆上无时间分已达 83.51%,完整模型为 84.02%,增益很小;历史状态上从 73.10% 提升到 80.20%,增益明显;最新状态从 72.50% 到 74.00% 也有提升。时间定位从 78.77% 到 83.80% 有所提升,但 BGE 的 88.27% 仍最高,论文解释是按内容找回事件再读其时间戳已够用。双证据任务在原文中报告变化比较 EM@3 为 64.04%、多跳为 37.59%,均高于 BM25 与 BGE,时间分对多跳的 EM@3 提升大于对变化比较的提升。
这些数字支持的判断是:当库中同时存在内容相近但时态不同的记录时,显式时间项帮助更大;当任务可化约为单次内容匹配时,帮助有限。该小节的限制是多跳绝对值仍偏低,完整证据集找回仍是难点,不能把平均 EM@3 的 82.10% 理解为所有复杂推理都已解决。
说话人身份是否真被用到:按查询类型与反事实检验
按说话人查询类型拆分后,PERSIST 在 4 种类型上 EM@3 均为最高,在第一人称自指到事实的查询上差距尤其大,原文报告该类型上 BM25 为 25.52%、BGE 为 17.24%、PERSIST 为 79.66%,说明纯文本方法处理我指谁时困难最大。为了证明声学说话人身份确实影响排序,而不只是文本名字起作用,论文构造了 397 个金标准与反事实配对,覆盖 290 个第一人称查询,每个反事实只把说话人标记换成同 episode 另 1 位说话人的标记,文本、名字与时间戳保持不变。结果是 PERSIST 在 96.47% 的配对中给正确说话人记录更高分。
把这些反事实加入候选池后,R@1 仅从 60.00% 降到 58.62%,下降 1.38 个百分点,说明对说话人替换有一定鲁棒性。结合上一节时间分消融,两部分证据互补:时间分改善历史状态检索,声学说话人身份在文本与时间线索固定时仍能改变排序。但限制也要写清:反事实检验固定了文本与时间,证明的是敏感性而非真实部署中的归属准确率,真实转写错误与在线聚类错误仍会传导,下一节写入质量评估正是为此提供条件。
写入质量是上限:转写错误与说话人归属错误的影响
记忆写入质量决定了库中记录是否可读、时间是否对齐、说话人是否挂对。论文在单说话人与多说话人语音上报告词错误率、时间交并比,多说话人下还报告连接最小排列词错误率与说话人词准确率、聚类与新说话人指标。原生写入器经预训练、会话微调、GRPO 3 阶段后,单说话人词错误率从 38.4% 降到 6.8%,多说话人从 51.9% 降到 17.4%;GRPO 之后多说话人连接错误率从 63.7% 降到 41.6%,时间交并比从 71.8% 升到 79.4%。但原生多说话人连接错误率 41.6% 仍远高于其词错误率 17.4%,说明内容转对了但挂错说话人的情况仍多。
外接 VibeVoice-ASR 在多说话人上连接错误率为 6.8%、时间交并比 98.5%、说话人词准确率 99.7%,明显更好,这与端到端中外接配置高于原生配置一致。因此端到端结论的成立条件包括写入质量:当转写与归属接近外接水平时才能达到 85.08%,原生一体化实现当前为 71.75%。论文未报告在更嘈杂、重叠语音或未注册说话人占比较高时的写入衰减,复现时不应把干净合成语音上的数字直接推广到真实会议或家庭环境。
延迟数字怎么测:复用表示省掉了什么开销
全双工要求检索不打断实时交互,论文在 Ascend 910B3 NPU 加 32 个 CPU 线程上分析 1200 个查询,取中间 1000 个请求的平均,计时到返回前 3 条为止,不含实时对话本身,较大记忆库用重复标题向量模拟。比较问题是在 4331 条候选规模下,复用语音表示相对重算波形省多少延迟,数值越小越好。下表同时给出文本就绪的 BM25 与 BGE 作为参照,理解时要注意它们省掉了语音转文字时间,不能与端到端语音延迟直接对比。
| Method | Latency (ms) |
|---|---|
| BM25 (text-ready) | 15.26 |
| BGE-large (text-ready) | 27.94 |
| Recompute from WAV | 578.42 |
| PERSIST (native, buffered) | 7.03 |
表中从波形重算为 578.42 ms,文本就绪的 BM25 为 15.26 ms、BGE 为 27.94 ms,原生缓存复用为 7.03 ms,相对重算下降 98.8%。支持的判断是:检索时不重处理对话历史、不重编码查询音频,主要用缓存隐藏状态组装查询并做内积搜索,可以满足紧延迟预算。限制是该数字依赖特定硬件与缓存命中假设,且排除了实时对话解码本身的开销,也没有测量写入分支持续转写的并发开销与内存占用随库增大的完整曲线,不能理解为整个系统端到端延迟只有 7.03 ms。未评测的范围还包括更大库、跨设备与流式打断频繁时的尾延迟,部署前需要补测。
复现第一步做什么:数据、代码状态与关键超参数
复现应先从评测条件对齐做起,而不是先调模型。数据方面,SpokenTrace 训练、验证、评测的 episode 与查询数如前,评测用 1200 个查询,候选池按场景均衡划分、平均每池 4331 条,检索只算需要历史证据的 1106 个查询,端到端算全部 1200 个并用自动判分。按本次收到的来源信息,没有发现完成 HTTPS 状态验证且归属明确的作者代码、模型或数据资源,因此不能写作者资源当前可用或已公开,第三方链接也只证明论文提到该链接,不证明已开源。
实现方面,需区分原生与外接两条写入路径,外接路径依赖外部语音识别,复现原生低延迟需要 SALMONN-omni 主干与附录指定的流式调度、层索引、参数冻结范围、难负例挖掘、触发标签与评测提示,论文称最终版将给出这些细节与服务硬件配置。检索器训练的关键条件是 2 个阶段:通用检索阶段每秩 8 个查询、全局 64 个查询、10 个轮次,记忆适应阶段每秩 4 个 episode、全局 32 个 episode、5 个轮次,对比温度 0.05,检查点分别按验证 R@3 与验证 EM@5 选择。
先跑通外接转写加联合检索的端到端,再切到原生分支测延迟,才能分清准确率增益与延迟增益各自的来源。
什么时候值得尝试:结论、适用条件与待补验证
综合来看,值得尝试的场景是多人共用语音助手、计划与承诺会被多人修订、且需要回溯早期状态的任务,例如家庭安排、小组协作与群组规划。当查询多为直接回忆且说话人单一时,普通语义检索已接近够用,引入联合打分的边际收益小;当查询涉及我指谁、最新与历史状态区分、变化比较与多跳组合时,论文报告的提升更大,但多跳完整找回仍偏低,需要预留人工核对或多轮澄清。
复现第一步是固定转写器与候选池复刻检索指标,再接入端到端判分,避免把转写改进误算成检索改进。还需要补的验证包括真实噪声与重叠语音下的写入与归属衰减、更大记忆库与长时间运行下的延迟尾部分布、自动判分与人工评价的一致性,以及缺失证据时拒答的误判率。论文还提醒持久记忆带来隐私与同意风险,发布或部署应让记忆收集可见、限制记录归属与应用范围、支持查看与删除,避免把声音嵌入当作现实身份。
总体上,证据支持在给定合成数据、给定转写质量与给定硬件下联合打分与表示复用的有效性,不支持把它直接推广为所有真实全双工部署的性能承诺。
📎 论文与评分元数据
排名:前25% | 文档类型:系统技术报告 | arXiv 原文
⚖️ 评分明细
评分属于系统判断,不是论文实验结果;八维数值与总分见页首,原始审计记录保留在后端。
评分规则:type-aware-v1
评分模型:muse-spark-1.3-contributor
评分请求协议:openai_responses


