把一场会录下来,做成文字,看起来像是 ASR 的老本行。可真正把转写交给参会者,他们马上会追问三件事:
谁,在什么时候,说了什么?
传统 ASR 只回答最后一问;说话人日志(speaker diarization)回答第一问;强制对齐或时间戳模型负责第二问。工程上通常把三套系统串起来,再用规则把结果缝成会议纪要。问题是,每条流水线都可能独自犯错,而且后面的模块只能在前面的错误上继续工作。
OpenMOSS(MOSI.AI)的《MOSS Transcribe Diarize Technical Report》把这个任务重新包装成一句更像大语言模型的问题:既然最终答案本来就是一串带结构的文本,为什么不让一个模型直接把整串答案生成出来?
这串答案长这样:
[0.11][S01]Good morning![1.03]
[1.11][S02]Morning, guys![1.34]
[1.20][S03]Hi, everyone![1.44]
开始时间、匿名说话人、正文、结束时间,全在同一条 token 流里。论文把它称为 SATS(Speaker-Attributed, Time-Stamped Transcription,带说话人归属与时间戳的转写)。MOSS Transcribe Diarize 用 128k 上下文一次处理最长 90 分钟音频,不在会话级切块,也不在 ASR 与说话人聚类之间来回倒手。
本文以 2026 年 7 月 17 日修订的 v7 论文为主,并用官方开源仓库与 0.9B 模型配置补上论文没有展开的结构细节。哪里是论文明确写出的,哪里来自发布代码,后文会分清。
一、它真正要解决的,不只是 ASR
先看传统方案为什么麻烦。典型的会议转写流水线至少有四步:
- ASR 先把声音识别成文字;
- 对齐器给词或句子补时间边界;
- diarization 系统提取声纹、聚类,得到「这段声音属于谁」;
- 合并器把两条时间线拼成
[说话人] 文本。
其中任何一步都可能让下一步无从挽救。ASR 把重叠语音漏掉,聚类器便没有词可分;说话人边界偏了 300 毫秒,合并时一个词就可能被安到隔壁人头上;同一个人在第 3 分钟与第 53 分钟的声学条件不同,局部聚类还会把他拆成两个人。
这几年已有几种折中:DiarizationLM 用 LLM 对 ASR 与 diarization 的独立输出做全局修补;Sortformer 联合建模词与说话人,但先训 diarization、冻结后再训 ASR;SpeakerLM 更接近统一 MLLM,不过论文所引设置仍局限在约 50–90 秒、最多 4 人,也不原生输出片段时间戳;JEDIS-LLM 用说话人提示缓存把短片训练推广到长音频流式推理,但仍需维护分块与缓存。
MOSS 的立意不是再做一个更强的后处理器,而是删除模块之间的接口:
音频 → [开始时间][说话人]正文[结束时间] → 下一段……
识别错字、认错人、切错边界不再由三套目标分别优化,而是在同一个自回归目标里共同承担损失。这里的「一次」「单遍」应理解为一次端到端生成流程,不是说长答案只需一次 decoder forward——自回归模型依然逐 token 解码。
二、一条输出序列,装下三种任务
这个看似朴素的输出格式,其实是全文最关键的设计。
[start][speaker] text [end]
text是普通 ASR;[S01]、[S02]是说话人归属;- 两个数字字段是片段的开始与结束时间;
- 相邻片段首尾相接,整场会就是一条长序列。
从语言模型视角看,三项任务被统一成同一个 next-token prediction:
P(答案 | 音频, 指令)
= Π P(当前 token | 音频, 指令, 已生成的所有 token)
好处不只在接口少。模型生成第 40 分钟的 [S03] 时,能同时参考这个人之前说过什么、与谁轮流发言、用了哪些专有名词,而不是只看眼前几秒的声纹。语义上下文也能反过来帮 diarization:如果一段话明显是对上一位提问者的回答,谁在接话就不再是纯声学猜测。
说话人编号本身没有真实姓名含义。预测把甲叫 [S01]、乙叫 [S02],参考答案反过来编号,两份结果在语义上仍完全一致。后文的 cpCER 指标会专门处理这种标签置换。
时间不是位置编号,而是一把明写出来的尺子
长音频还有一个难题:第 60,000 个音频 token 到底对应第几分钟?如果只依赖 Transformer 的 position id,模型要自己把离散位置换算成物理时间,而且音频压缩率一变,换算关系也变。
论文的办法是把时间信息写成文本时间标记,插进音频表示之间。公开的 0.9B processor 更具体:音频最终是 12.5 token/s,配置每隔约 5 秒插入一次十进制数字 token,相当于在长长的声学 embedding 上铺一把刻度尺。
于是模型既可以用局部声学特征找边界,也可以借最近的时间锚点输出 [1234.56] 这样的秒数。时间不再被绑死在稀疏的绝对位置上,而变成 LLM 熟悉的数字文本。
这个思路有点像在没有刻度的卷尺上直接印数字:位置编码仍告诉模型 token 之间相隔多远,文本锚点则告诉它「这里大约是第几秒」。两者分工,不让 RoPE 独自承担物理计时。
三、0.9B 开源模型:Whisper 的耳朵,Qwen3 的脑子
论文正文对架构写得很克制:音频编码器提取多说话人声学表示,投影模块把它映射到预训练文本 LLM 的特征空间,LLM 再统一完成长上下文建模与结构化生成。所幸 2026 年 7 月发布的 0.9B 权重与代码把每个部件都摊开了。
按公开配置,从左到右是:
| 部件 | 公开实现规格 | 作用 |
|---|---|---|
| 音频前端 | 16kHz,80 维 log-mel,30 秒窗口 | 把波形变成 Whisper 输入特征 |
| 音频编码器 | Whisper-Medium encoder 配置:24 层、d=1024、16 头 | 提取声学、内容与说话人线索 |
| 时间合并 | 连续 4 帧拼接,4096 维 | 从 50Hz 压到 12.5Hz |
| 适配器 | Linear(4096→1024) → SiLU → Linear(1024→1024) → LayerNorm | 映射到文本模型 embedding 空间 |
| 文本主干 | Qwen3-0.6B 风格 causal decoder:28 层、d=1024、16 个查询头 / 8 个 KV 头 | 在统一上下文里生成结构化转写 |
| 上下文 | 131,072 token,full attention,RoPE θ=1,000,000 | 容纳长音频与长输出 |
Whisper 的 mel 特征是 100 帧/秒,encoder 前端再做 2 倍降采样,得到约 50 帧/秒;随后 time_merge 每 4 帧拼成一个向量,最终正好 12.5 个音频 token/秒,也就是一个 token 约管 80 毫秒。
这笔账解释了 90 分钟为什么塞得进 128k:
90 × 60 × 12.5 = 67,500 个音频 token
再加周期性时间锚点、提示词与输出文本,才有机会留在 131,072 token 的总预算内。长上下文不是一句装饰性的参数,而是由音频压缩率、最长时长与输出预算共同倒推出来的系统设计。
融合方式也非常直接。processor 先把 <|audio_pad|> 展开成与音频 token 数相同的占位符;音频特征过适配器后,用 masked_scatter 替换这些位置的文本 embedding。对 Qwen3 主干来说,音频与普通文本从此就是同一条序列里的不同 embedding。
「不切块」到底是什么意思?
公开实现确实会把原始波形按 30 秒送进 Whisper 前端,这是 Whisper 特征提取器的固定窗口;各段 encoder 特征随后会按原顺序重新拼接、统一做时间合并,再整体送进 128k LLM。
所以论文所谓「90 分钟不切块」,更准确地说是:不会把整场会议拆成彼此独立的 SATS 推理任务。声学前端仍做工程分块,但说话人记忆、全局语境与最终输出共享一条长上下文,不会每 30 秒重置一次 [S01]。
四、真实世界不够乱,就在模拟器里把它弄乱
端到端 SATS 最缺的不是单人录音,而是高质量的「多人 + 逐字稿 + 说话人 + 时间边界」联合标注。论文用两类数据补齐。
第一类是真实数据。作者从互联网与公开语料中收集多语种、多人录音;AISHELL-4 同时有会议室远场与每位说话人的近场通道,训练和评测取远场信号的平均通道。Podcast 与影视片段则补充长访谈、快节奏轮换、重叠说话、方言和多语言场景。
第二类是可控模拟数据。它不是简单把几条语音从头叠到尾,而是专门模拟「一场对话如何发生」。
完整配方如下:
- 从内部单人语料池随机抽 2–12 位不同说话人,每人取一条话语;
- 按采样的片段数与对数正态权重,把每条话语切成连续词组;
- 把词组放到同一时间轴上,用高斯分布采样段间空隙,强制说话人轮换;
- 允许重叠,但重叠长度最多是较短片段的 80%;
- 切点吸附到附近的低能量位置,并做 50ms cross-fade,避免硬切爆音;
- 加入真实噪声与混响,SNR 从 0–15dB均匀采样。
这套模拟器控制的其实是对话的「属性分布」:多少人、谁接谁、空多久、重叠多深、环境多吵。模型不只见过干净的轮流念稿,也见过插话、抢话、远场混响和低信噪比。
不过要留意论文没有报告训练数据总时长、真实与模拟数据占比、语种分布、训练步数、优化器或损失细节。「大规模真实野外数据」是一个方向描述,还不是可复现配方。开源权重能用,不等于训练过程已经完整复现。
五、实验先学会看三把尺子
论文使用四个测试集,但数据统计表只列了前三个:
| 数据集 | 时长 | 平均时长 | 说话人数 | 主要难点 |
|---|---|---|---|---|
| AISHELL-4 Test | 36.6–39.9 分钟 | 38.2 分钟 | 5–7 | 真实会议、远场、重叠 |
| Podcast | 25.5–60.6 分钟 | 44.3 分钟 | 2–11 | 长访谈、说话人反复回归 |
| Movies | 0.4–29.9 秒 | 11.5 秒 | 1–6 | 快速轮换、密集重叠、多语种/方言 |
| Alimeeting | 论文未给统计 | — | — | 另一组会议域外测试 |
AISHELL-4 是公开语料;Podcast 与 Movies 是作者内部整理的测试集。Movies 以中英文为主,也含韩语、日语、粤语等,由专业标注员给真值;论文写明计划公开这两套数据。
CER:只管说了什么
CER(Character Error Rate,字符错误率)把说话人信息拿掉,只比较全文需要多少次插入、删除、替换才能变成参考文本:
CER = 编辑距离(预测全文, 参考全文) / 参考字符数
它衡量 ASR,却看不出一句完全正确的话是否安错了人。
cpCER:先给匿名说话人对号入座,再算错字
cpCER(concatenated minimum-permutation CER)先把每位说话人的所有话按顺序拼起来,再尝试预测标签与参考标签的所有匹配方式,取总编辑距离最小的一种。
用最优置换是必要的:[S01] 只是匿名编号,不该因为系统把两位说话人的号码整体互换就判错。cpCER 同时受转写与归属影响,因此通常比 CER 更接近「会议纪要到底能不能直接用」。
Δcp:一个好用但不能过度解读的差值
论文再定义:
Δcp = cpCER − CER
作者把它解释为说话人归属额外造成的退化。直觉上,CER 很低而 cpCER 很高,说明字都听对了,却分错了人。
但它不是严格的「纯 diarization 错误率」。CER 与 cpCER 使用不同的拼接和最优匹配问题,二者不是嵌套目标,并不保证 cpCER ≥ CER。论文自己的 Alimeeting 结果就是 CER 24.86、cpCER 22.17、Δcp = -2.69。负数不可能代表「分说话人让错误减少了 -2.69%」这种物理量,只能说明两种对齐口径产生了反常差值。
所以 Δcp 适合当诊断信号,不宜当成可精确分离出来的说话人错误质量。
六、结果:联合转写确实强,但时间戳还没参加考试
论文把 MOSS 与 Doubao、ElevenLabs Scribe v1、GPT-4o Transcribe Diarize、Gemini 2.5 Pro、Gemini 3 Pro、VibeVoice ASR 对比。下面先抓最重要的 cpCER:每个数据集都拿 MOSS 对比该列最强的其他系统。
| 数据集 | MOSS CER ↓ | MOSS cpCER ↓ | MOSS Δcp ↓ | cpCER 最强的其他基线 |
|---|---|---|---|---|
| AISHELL-4 | 14.84 | 15.83 | 0.99 | VibeVoice 24.99 |
| Podcast | 5.97 | 7.37 | 1.40 | Gemini 2.5 Pro 10.23 |
| Movies | 6.36 | 12.76 | 6.40 | Gemini 3 Pro 14.73(其 Δcp 为 6.11) |
| Alimeeting | 24.86 | 22.17 | -2.69 | VibeVoice 29.33 |
四组结果可以分开读。
AISHELL-4:长会议优势最明显。 这些录音平均约 38 分钟、5–7 人。MOSS 的 cpCER 从最佳基线的 24.99 降到 15.83,相对下降约 36.7%;CER 也从最佳基线的 18.18 降到 14.84。更关键的是 Δcp 只有 0.99,说明在这套口径下,加入说话人归属后几乎没有额外恶化。
Podcast:长距离说话人回归也稳。 音频最长超过一小时、最多 11 人。MOSS 的 CER/cpCER 为 5.97/7.37,最佳其他系统为 7.38/10.23;cpCER 相对下降约 28.0%。这正是 128k 全局上下文最想拿下的场景:嘉宾隔了几十轮再次开口,标签仍要接回原来那个人。
Movies:不是靠「长」才赢。 影视片段平均只有 11.5 秒,却有快速轮换和重叠。MOSS 的 cpCER 仍以 12.76 最低,说明收益不只来自长上下文,也可能来自端到端训练与重叠模拟。不过论文正文说它在 Movies 的 Δcp 也优于所有基线,这与表格不完全一致:MOSS 是 6.40,Gemini 3 Pro 是更低的 6.11。准确说法应是 MOSS 赢 CER 与 cpCER,Δcp 排第二。
Alimeeting:总体 cpCER 领先,但负 Δcp 暴露了指标边界。 MOSS 的 cpCER 22.17,比最佳其他系统 29.33 低约 24.4%;与此同时 cpCER 竟低于 CER,正好提醒我们别把 Δcp 当作严格可加减的错误分解。
还有一个现实层面的结果:GPT-4o 因音频输入长度限制,只在 Movies 上得到结果;Gemini 3 Pro 在 Podcast 等长音频上经常不能稳定遵守指定的说话人输出格式,因此被排除。对生产系统来说,「能否完整处理并稳定吐出机器可解析格式」本来就是能力的一部分;但从纯模型质量比较看,这也意味着各列并非所有系统在完全相同条件下的齐整对决。
最大的证据缺口:时间戳被评测脚本删掉了
论文的卖点写着 Time-Stamped,但三项指标都不评时间。
附录的归一化流程会:
- 删除圆括号内容;
- 删除
<emotion>、<ovl>、<ins>等尖括号标签; - 删除所有不是
[S数字]的方括号内容。
第三步会把 [0.11]、[1.03] 这些时间戳全部删掉,再计算 CER/cpCER/Δcp。Movies 提示词要求的事件、情感、重叠与插入标签也同样不计分。
因此实验扎实证明的是:MOSS 的文字识别和说话人归属很强,并且能稳定生成规定格式。 它没有证明时间边界比 WhisperX、强制对齐器或商业系统更准,也没有量化起止时间偏差。论文在未来工作中写「更细粒度的时间戳评估」,等于作者自己也承认这块尚未完成闭环。
七、论文证明了什么,又还没有证明什么
先给正面结论。MOSS Transcribe Diarize 最有价值的贡献,不是发明了一个陌生的神经网络模块,而是把任务、数据和上下文对齐到同一个目标:
- 任务统一:文字、说话人、时间戳序列化成 LLM 能直接生成的文本;
- 上下文统一:最长 90 分钟共享一段 128k 记忆,说话人不会在应用层分块时被迫重置;
- 数据统一:真实长录音负责分布真实性,属性可控模拟负责覆盖重叠、轮换、噪声与多人组合;
- 指标结果强:四个集合上的 CER 与 cpCER 都优于表中基线,尤其长会议上的 cpCER 优势明显;
- 落地完整:0.9B 权重、推理代码、解析器与字幕导出工具已经公开,不只停留在概念图。
但如果把它当一篇研究论文来审视,证据链仍有四个洞。
第一,没有时间戳指标。 这是标题级能力,却在归一化时被删掉;事件与重叠标签也没测。
第二,没有消融实验。 论文没有比较 128k 与短上下文、端到端与级联、真实数据与加入模拟数据之后的差异。表 2 证明整套系统强,却不能把提升分别归因于「长上下文」「统一训练」或「模拟器」。
第三,训练配方披露有限。 数据规模、混合比例、优化器、学习率、batch、训练算力与训练损失都没有报告。开源模型可以推理和微调,但难以从论文复刻预训练。
第四,部分测试仍不可完全复现。 Podcast 与 Movies 是内部整理数据,论文承诺公开;Alimeeting 又出现在结果表却缺少同页数据统计。商业基线的调用版本、生成参数与失败样本处理也交代得不够细。
这不抹掉系统结果,但会改变我们该下多大的结论:可以说「这是目前很强、很实用的端到端 SATS 系统」,暂时不该说「实验已经证明每个设计选择都必要,时间戳也达到 SOTA」。
八、写在最后:把会议当成一种语言
回看整篇论文,MOSS 做的事情可以浓缩成一句话:把会议从三张互相对齐的表,改写成一种模型可以直接说出的语言。
这种语言有自己的语法:数字表示时间,[Sxx] 表示话语归属,普通 token 表示内容;输入侧也有时间刻度,让输出的数字知道该落在哪里。Whisper encoder 负责听,Qwen3 风格 decoder 负责在 128k 记忆里维持人物与话题,模拟器则教它适应现实里那些不守秩序的插话、重叠和噪声。
它最漂亮的地方,是删除了 ASR、对齐、聚类之间的交接成本;最需要补上的地方,是给时间戳本身安排一场真正的考试。下一步若能加入毫秒级边界误差、重叠区间 IoU、说话人计数误差,再配上长上下文与模拟数据的消融,这条证据链才算完整。
论文列出的未来方向是流式 SATS、更细粒度的时间戳评测与更广的多语种鲁棒性。也很合理:128k 让模型记住整场会,下一道题就是——能否在会议还没结束时,边听、边记、边把正确的人名牌挂上去。
参考
- MOSS Transcribe Diarize Technical Report(arXiv:2601.01554v7,本文主要材料)
- OpenMOSS / MOSS-Transcribe-Diarize(0.9B 开源实现、推理与微调代码)
- MOSS-Transcribe-Diarize 0.9B 模型页(权重、模型配置与 processor 配置)
- AISHELL-4(真实会议语音、增强、识别与说话人日志数据集)
- WhisperX(长音频时间对齐与说话人日志的级联路线)