PAPER DEEP DIVE
Motion-Omni:语音对话联合生成全身动作
把动作输出从级联改成原生:一个 7B 主干在说话的同时生成面部、手、上肢、下肢动作,响应比教师级联快 5.4 倍,无参考动作指标差距在 2% 以内。
论文元信息
标题:Motion-Omni: End-to-End Joint Speech and Full-Body Motion for Spoken Dialogue
作者:Ma Chengqian(北京大学)、Wei Tao(LIGHTSPEED)、Zhang Haoyu(香港中文大学·深圳)、Guo Yiwen(独立研究者)
链接:arXiv:2609.04250(https://arxiv.org/abs/2609.04250 ,v1,2026 年 8 月 28 日,主分类 cs.SD);项目主页 https://step-out.github.io/Motion-Omni-Page/
代码与数据状态:仓库 https://github.com/step-out/Motion-Omni 已建立,但截至本解读撰写时只有 README,代码计划 2026 年 11 月放出,属于「待发布」状态;Stage 3 用的教师伪标注数据已开源在 HuggingFace(https://huggingface.co/datasets/ChengqianMa/Motion-Omni ,422,856 对样本 / 1,402 小时);评测集 SwDA-500 与整套评测协议一并公开。
图1:Motion-Omni 框架与四个组件的条件化拓扑(论文 Figure 1)。框架只规定输入输出接口与条件化连接方式,具体模型类、参数量与分词器留给实例化选择;本文报告的参考实例是 Motion-Omni-Q7。
一句话总结
这篇论文把全身动作从「语音生成完再跑一遍的下游模块」改成语音对话模型的原生输出:动作解码器直接读 Speech Generator 的隐状态,四个部位并行出 30 Hz 的 VQ 码,代价是必须让动作损失回头更新语音通路,收益是响应时间 4.32 秒(RTF 0.78,快过实时),比同音频的教师级联快 5.4 倍,无参考动作指标差距在 2% 以内。
研究背景与动机
论文先给「口语动作模型」(spoken motion model)下了一个明确的定义:在同一个对话上下文条件下,同时产出口语回复与伴随这个回复的全身共语动作(co-speech motion)的模型。作者同时划清了范围——这里的 motion 只指交流性的共语动作,行走、舞蹈、体育与通用动作生成不在讨论之列。这个限定很重要,因为它把问题从「生成合理的人体运动」收窄到「生成与正在说出口的话在节奏和语义上耦合的身体运动」。
语音对话模型(SDM)与共语动作生成这两条线各自都跑得很快。SpeechGPT 把离散音频 token 变成语言模型词表,LLaMA-Omni 加了语音单元解码器并贡献了本文复用的 InstructS2S-200K,GLM-4-Voice 提供了 12.5 Hz 的离散语音分词器,Qwen2.5-Omni 提出 Thinker-Talker,Moshi 做到全双工。动作侧则是 TalkShow、EMAGE、MambaTalk、GestureLSM 一路把配方从面部扩到 3D 全身,LOM 用四个部位专属 VQ-VAE 码本(面、手、上身、下身)表示人体。但两边的接口是对不上的:SDM 只出语音不出动作,动作模型只从别人递给它的音频里出动作。
于是标准做法是级联:SDM 先说完整段话,再把成品音频喂给动作模型。这条路径确实能同时得到语音和动作,论文也把它当作贯穿全文的对照基线,但作者指出它有两笔结构性开销。第一,动作模型是在音频完成之后跑的第二遍完整推理,延迟直接叠加。第二,也是更根本的:没有任何动作目标能够更新语音或对话参数,两个目标之间不存在联合优化的通道,动作永远只能被动追随已经定型的音频。
论文的问题因此写得很直白:这两笔开销能不能一次性去掉,也就是全身动作能否成为 SDM 的原生输出,从产生语音的同一批状态里生成,同时不放弃动作质量和口语对话能力。已有的口语动作模型都只放松了这个配方的一部分:SOLAMI 用 AnyGPT/LLaMA2 主干联合预测语音与身体手部 token,但面部动画是事后用 audio-to-face 模型补的;U-Mind 用一个共享主干生成文本、声学 token 与 SMPL-X 姿态 token,但没有说明原生面部表情输出,也没有隔离动作监督如何影响语音生成状态;Ex-Omni 联合优化了 LLM、Speech Generator 与 52 维 ARKit 面部解码器,但只管脸;ViBES 冻结 GLM-4-Voice 语音专家、训练面与身专家,冻结保住了语音模型,却也让动作梯度无法更新它;MIBURI 从 Moshi 的流式状态因果生成全身手势与表情,但没有报告 Moshi 的动作损失适配。作者主张 Motion-Omni 的独特组合是:显式的面、手、上身、下身四路输出,加上对 LLM、语音、动作三个独立模块的端到端共同适配,并由一条模型无关的伪标注课程提供监督。
要把这件事做成,论文列了三个拦路的难点。其一,让动作成为原生输出就必须同时优化语音与动作两个目标而不拖垮任何一个:两个输出的采样率异构(语音单元 12.5 Hz、动作 30 Hz),又共享会被两个损失互相干扰的参数,所以架构要桥接速率失配,训练流程要防止动作梯度把对话通路带坏。其二,这种联合训练需要的监督规模没有现成语料能给:很多 SDM 是朝一个固定目标音色训练的,那么配套的动作监督就必须来自同一音色的回复,而实录视听语料(例如 Seamless Interaction)里是很多说话人的声音,规模上供不上。其三,据作者所知,没有公开基准是为「随机的、开放域的全身口语对话」设计的:现有全身动作基准假设语音是给定的,现有带受控生成语音的口语对话评测只覆盖面部动画,两者都没有检验「模型自己那句合法但不可预测的口语回复,有没有配上合适的全身动作」。
预备知识
读懂方法需要先接受三个部件。第一个是 LOM 的部位分解:人体状态不用一整套连续参数直接回归,而是按 SMPL-X 加 FLAME 拆成四路,每路由一个独立的 VQ-VAE 量化成离散码。论文 Table 6 给出了精确的维度构成——面部 106 维(SMPL-X 下颌 1×6D 旋转加 FLAME 表情系数 100 维)、手 180 维(30 个手关节 × 6D)、上身 78 维(13 个上身关节 × 6D)、下身 61 维(9 个下身关节 × 6D 加平移 3D 加足部接触 4D),合计 425 维。四个 VQ-VAE 共享码本大小 $|\mathcal{C}|=256$,直接取自 LOM 的 emage_vq 发布(架构 VQVAEConvZero,30 Hz,不做时间下采样),本文不修改也不微调它们。关节旋转在拼接前都从轴角转成 6D 旋转表示。
第二个部件是 GLM-4-Voice 的离散语音单元:Speech Generator 自回归吐出的不是梅尔谱也不是波形,而是 12.5 Hz 的语音单元序列,词表 16,384 个单元外加三个控制符。推理时这些单元经 CosyVoice 的 chunk-aware flow-matching 解码器转成梅尔谱,再由 HiFi-GAN 风格声码器出 22.05 kHz 波形;动作码则由冻结的 LOM VQ-VAE 解回 SMPL-X 身体手部参数与 FLAME 表情系数。
第三个部件是 TQGF(Token-as-Query Gated Fusion),一种带学习式逐头 sigmoid 门的融合算子,作用是让「未被上下文化的 token 嵌入」作为 query 去查询「已经被上下文化的隐状态」。它的关键不对称性在于 query 与 key/value 携带的信息不同:query 每 token 一个嵌入,标识此刻在说什么;key/value 则额外携带说话人音色、韵律意图与对话历史,其中一部分对驱动身体运动是无用的,由门来挑选每个部位真正需要的信号。
方法详解
四组件与条件化拓扑。Motion-Omni 框架规定四个组件:Speech Projector、LLM Backbone、Speech Generator、Part-Aware Motion Generator,共同把用户的语音(或文本)输入处理成一段口语回复,并自回归地生成与之同步的全身共语动作。框架对每个组件只规定输入输出接口和条件化拓扑,不规定具体模型——参考实例 Motion-Omni-Q7 的选择是:语音编码器用冻结的 Whisper-large-v3(隐维 1280)把 16 kHz 波形映射为连续表示;语音投影器把每五帧拼接后过一个两层 MLP 送进 LLM 嵌入空间,序列因此五倍降采样,参数量约 500 万;LLM 主干用 Qwen2.5-7B-Instruct,语音输入时投影后的 Whisper 特征替换 token 序列里指定的 <speech> 占位符;Speech Generator 是一个 Qwen2 风格 transformer,从 Qwen2.5-0.5B-Instruct 初始化,宽度 $d=896$,而 LLM 主干输出 3584 维,两者靠一个两层 GELU-MLP 加 reshape 接起来。
Speech Generator 侧的 TQGF。因为宽度差 4 倍,论文用一个 reshape 技巧同时完成升维与「时间上变长」:MLP 把每个隐状态拓宽到 $4d$ 维,reshape 再把这一个向量读成四个连续的 $d$ 维位置,于是条件流 $\mathbf{Z}$ 的长度是文本序列的四倍。写成公式即论文 Equation (4):
$$\mathbf{Z}=\mathrm{Reshape}\big(\mathrm{MLP}(\mathbf{H}_{\text{llm}})\big)\in\mathbb{R}^{4T_{t}\times d},\qquad \mathbf{Q}=\mathbf{E}_{\text{sg}}[\mathbf{w}]\in\mathbb{R}^{T_{t}\times d}$$
其中 $\mathbf{w}$ 是 LLM 已经为这段回复生成的 $T_{t}$ 个文本 token,$\mathbf{H}_{\text{llm}}\in\mathbb{R}^{T_{t}\times 3584}$ 是这些位置上 LLM 最后一层的隐状态。$\mathbf{Z}$ 同时充当这个块的 key 与 value;query 流则把同样的 token 拿到 Speech Generator 自己的嵌入表 $\mathbf{E}_{\text{sg}}$ 里查,得到每 token 一个未上下文化的向量。两层 TQGF 随后把 $\mathbf{Z}$ 注入 query 流,记层归一化后的输入为 $\tilde{\mathbf{Q}}$ 与 $\tilde{\mathbf{Z}}$,单层计算是论文 Equation (5) 与 (6):
$$\mathbf{C}=\Big(\sigma(\tilde{\mathbf{Q}}\mathbf{W}_{g})\odot\mathrm{Attn}\big(\tilde{\mathbf{Q}}\mathbf{W}_{q},\,\tilde{\mathbf{Z}}\mathbf{W}_{k},\,\tilde{\mathbf{Z}}\mathbf{W}_{v}\big)\Big)\mathbf{W}_{o}$$
$$\mathbf{Q}^{\prime}=\mathbf{Q}+\mathbf{C},\qquad \mathbf{Q}^{\prime\prime}=\mathbf{Q}^{\prime}+\mathrm{FFN}(\mathbf{Q}^{\prime})$$
这里 $\mathrm{Attn}$ 是 $h$ 头缩放点积注意力且不带输出投影,所以 $\mathrm{Attn}(\cdot)\in\mathbb{R}^{T_{t}\times hd_{h}}$;$\mathrm{FFN}$ 是带 pre-norm 的逐位置前馈网络,内部宽度 $4d$;$\sigma$ 是 logistic sigmoid,$\odot$ 是逐元素乘。投影满足 $\mathbf{W}_{q},\mathbf{W}_{k},\mathbf{W}_{v},\mathbf{W}_{g}\in\mathbb{R}^{d\times hd_{h}}$ 与 $\mathbf{W}_{o}\in\mathbb{R}^{hd_{h}\times d}$,实例取 $h=16$、$d_{h}=256$,因此门作用在 4096 维空间而不是 896 维工作空间。作者对这个设计的解释值得单独记一笔:普通交叉注意力会把 $\mathrm{Attn}(\cdot)\mathbf{W}_{o}$ 直接送进残差流,而 Equation (5) 先用 $\sigma(\tilde{\mathbf{Q}}\mathbf{W}_{g})$ 过滤一遍;又因为 Equation (6) 是把门控分支加到 $\mathbf{Q}$ 上而不是替换它,门关死时退回的是未上下文化的 query,而不是一个零信息的状态。
图2:Motion-Omni-Q7 在发布样例「五个积极性格特质」上的输出(论文 Figure 3(a))。同一次自回归过程里既说出这句话、也产出这套动作;七帧是上身关节角空间中彼此相距最远、且时间间隔不小于片段 10% 的姿态,按时间顺序排列,并非均匀采样。
Motion Generator 的双输入接口。动作侧为四个部位 $b\in\{\mathrm{face},\mathrm{hand},\mathrm{upper},\mathrm{lower}\}$ 各实例化一个独立解码器。每个解码器堆 $L_{\text{TQGF}}=2$ 层 TQGF(复用 Equation (5)(6),但工作在 $d_{m}=512$、$h=8$、$d_{h}=64$),后接 $L_{\text{self}}=6$ 层自注意力 Transformer,位置编码用周期 $\mathcal{T}=30$ 的周期旋转位置编码,也就是 30 Hz 下的一秒。它的两条输入流是论文 Equation (1) 与 (2):
$$\mathbf{Z}=\mathbf{H}_{s}\mathbf{W}_{h},\qquad \mathbf{Q}=\mathrm{Interp}\big(\mathbf{E}[\mathbf{u}]\mathbf{W}_{e}\big)$$
$\mathbf{H}_{s}$ 是 Speech Generator 最后一层隐状态,$\mathbf{W}_{h}\in\mathbb{R}^{896\times d_{m}}$ 把它投到动作工作维度;$\mathbf{u}\in\{0,\dots,16383\}^{T_{s}}$ 是语音单元序列,$\mathbf{E}$ 是一张 512 维查找表,用 CosyVoice 预训练 flow 嵌入初始化,$\mathbf{W}_{e}$ 是可学习投影,$\mathrm{Interp}$ 沿时间轴把 12.5 Hz 的语音单元率线性插值到 30 Hz 的动作率——这一句就是速率失配问题的工程答案。四个解码器读同一份 $\mathbf{Z}$ 与 $\mathbf{Q}$,只在参数上不同;推理时四路共享 Speech Generator 上下文,但不显式地互相以对方已采样的动作输出为条件。训练时 $\mathbf{u}$ 是目标回复的真实单元,推理时是 Speech Generator 刚吐出的单元。
作者强调 Equation (1) 用 $\mathbf{H}_{s}$ 而不是解码后的波形来条件化,正是这一步在推理期消掉了独立的 audio-to-motion 阶段,同时让每个解码器拿到的表示已经同时携带声学时序与回复语义。随后是部位专属 MLP 头,产出每帧在 $|\mathcal{C}|=256$ 个 LOM 码本条目上的 logits,自注意力块在动作率下带因果掩码运行,所以每一帧只能看到更早的帧。
动作损失的维度加权。四个部位的交叉熵不是等权相加,而是按底层特征维度加权(论文 Equation (3)):
$$\mathcal{L}_{\text{motion}}=\sum_{b}w_{b}\,\mathcal{L}^{(b)}_{\text{CE}},\qquad w_{\text{face}}\!:\!w_{\text{hand}}\!:\!w_{\text{upper}}\!:\!w_{\text{lower}}=106\!:\!180\!:\!78\!:\!61$$
$\mathcal{L}^{(b)}_{\text{CE}}$ 是部位 $b$ 的逐帧交叉熵,标签平滑 0.1;权重归一化到和为 1,即 $(106,180,78,61)/425$,与 Table 6 的特征维度成正比。这个比例不是随手调出来的超参,而是一个设计选择:让每一次 VQ 码预测在「每个特征维度」这一粒度上具有同等重要性,否则 180 维的手会天然压过 61 维的下身。
联合损失的批次组合。Stage 4 是多任务混合训练,论文 Appendix A.6 给出每个批次的总损失(Equation (7)):记 $\mathcal{L}_{\text{LM}}$ 为 LLM 下一 token 交叉熵,$\mathcal{L}_{\text{sp}}$ 为语音单元的标签平滑交叉熵,$\mathcal{L}_{\text{mo},b}$ 为部位 $b$ 的动作交叉熵,则
$$\mathcal{L}=\mathcal{L}_{\text{LM}}+\mathcal{L}_{\text{sp}}\cdot\mathbb{1}[\text{speech task}]+\sum_{b}w_{b}\,\mathcal{L}_{\text{mo},b}\cdot\mathbb{1}[\text{motion task}]$$
掩码 $\mathbb{1}[\cdot]$ 按样本任务挑监督:ASR 只贡献 $\mathcal{L}_{\text{LM}}$;TTS、TTSM、S2SM 贡献 $\mathcal{L}_{\text{LM}}+\mathcal{L}_{\text{sp}}$;TTSM 与 S2SM 再加动作项;纯文本 T2T 只在文本样本上贡献 $\mathcal{L}_{\text{LM}}$。Speech Projector 没有独立损失项,它在输入含音频时通过 $\mathcal{L}_{\text{LM}}$ 反向传播被训练——投影后的 Whisper 特征喂进 LLM,LLM 交叉熵的梯度回流经过投影器。记录训练曲线时,每项任务损失只在含该任务样本的批次上取平均,避免其他任务的零填充把报告值人为压低。
四阶段渐进课程。全程 Whisper 语音编码器与 LOM VQ-VAE 都冻结。Stage 1 只用 ASR 监督训语音投影器:每个样本是一个 <speech> 占位符后接其转写目标,投影特征替换占位符,插入语音位置的标签被掩掉,下一 token 交叉熵只作用在转写 token 上;因为 LLM 冻结,这个目标实际上是在训投影器产出「LLM 能从中解出转写」的表示。Stage 2 在 LLM 仍冻结的前提下用 TTS 风格对训 Speech Generator:文本侧指令要求模型说出或复述给定句子,LLM 产出语义一致的回复表示,目标是对应的离散语音单元序列。
Stage 3 挂上 Motion Generator,与 Speech Generator 联合训练,LLM 与投影器保持冻结,数据是数据构造流水线产出的 TTSM 语料,并按四个子阶段课程消费,逐步暴露更大的质量分位数(12.5% / 25% / 50% / 100%),每个子阶段从上一阶段的检查点热启动。这里有一段很关键的失败记录:最初的试点把 Speech Generator 也冻住,结果动作损失停在高于联合训练所能达到的水平上,渲染出的动作与语音明显对不齐;改成联合更新 Speech Generator 后损失进一步下降、音画对齐改善,因此 Stage 3a–3d 全程采用联合更新。这条经验就是摘要里那句「联合训练在这里不是可选项」的实证来源。Stage 4 同时解冻 LLM 主干、语音投影器、Speech Generator 与 Motion Generator,优化 ASR/TTS/S2SM/T2T 四任务混合,常数学习率加 warmup,从 Stage 3d 的最终检查点热启动;其中 T2T 分量约 21.3 万样本,取自 SODA、WildChat、Tulu-3、WizardLM、OpenThoughts、NuminaMath-CoT 六个纯文本数据集,作用是在联合微调期间保住通用文本回复规划与多轮对话行为——没有这一分量时,回复更常出现复读用户输入的现象。
数据构造流水线。训练口语动作模型需要把对话回复与伴随动作配对的大规模监督,而实录视听语料的多个说话人音色无法匹配 Speech Generator 要产出的单一目标音色。论文的解法是伪标注,分两步。第一步是教师动作监督:把一个预训练共语动作教师(本文用 LOM)跑在每条回复波形上,它的四路部位 VQ 码流就构成动作目标;教师是可替换部件,未来可以用更强的教师重新生成监督。第二步是双指标质量打分与课程:每个样本沿两条轴打分——加权 VQ-VAE 重构误差 $L_{1}^{\text{vq}}$ 用来标记超出码本表达范围的动作,拍点相关 BC 用来标记与语音耦合薄弱的教师动作;经 5–95 分位鲁棒归一化后,每个样本得到组合分
$$s(x)=\alpha\big(1-\widetilde{L_{1}^{\text{vq}}}\big)+(1-\alpha)\widetilde{\mathrm{BC}},\qquad \alpha=0.5$$
这个分数驱动 Stage 3 的四子阶段课程,并挑选 Stage 4 的 S2SM 池。两个指标各自定义在附录里:$L_{1}^{\text{vq}}$ 先按 Table 6 的部位分解提取特征,把每路序列 $\hat{m}^{(b)}_{1:T}\in\mathbb{R}^{T\times D_{b}}$ 过冻结 VQ-VAE 的编码—量化—解码得到 $\tilde{m}^{(b)}$,再算逐部位 L1(Equation (8))与维度加权聚合(Equation (9)):
$$\ell_{b}=\frac{1}{T\cdot D_{b}}\sum_{t=1}^{T}\bigl\lVert\hat{m}^{(b)}_{t}-\tilde{m}^{(b)}_{t}\bigr\rVert_{1},\qquad L_{1}^{\text{vq}}(\hat{m})=\frac{106\,\ell_{\text{face}}+180\,\ell_{\text{hand}}+78\,\ell_{\text{upper}}+61\,\ell_{\text{lower}}}{425}$$
它度量的是监督保真度:$L_{1}^{\text{vq}}$ 高说明量化把潜向量映射到了远处的码本条目,教师 VQ-VAE 指派的码是原动作的糟糕代理,在这类样本上训练等于注入噪声标签。但低 $L_{1}^{\text{vq}}$ 本身不保证监督有用——码本可能忠实表示了一段与驱动语音对不齐的动作,BC 恰好抓这个失效模式。两者构成双重过滤:一个保证标签保真,一个保证语音—动作耦合。BC 的定义(Equation (10))是先在 30 Hz 上取上身运动学包络 $v_{t}=\lVert\dot{X}_{\text{upper},t}\rVert_{2}$,检测运动拍点集合 $\mathcal{M}=\{t: v_{t}<v_{t-1},\,v_{t}<v_{t+1},\,v_{t}>0.3\bar{v}\}$,用 librosa 从音频取 onset 集合 $\mathcal{O}$,再算 audio→motion 方向的高斯核拍点距离:
$$\mathrm{BC}(a,\hat{m})=\frac{1}{|\mathcal{O}|}\sum_{t_{o}\in\mathcal{O}}\exp\!\left(-\frac{\min_{t_{m}\in\mathcal{M}}(t_{o}-t_{m})^{2}}{2\sigma^{2}}\right),\qquad \sigma=9\ \text{frames}$$
论文还额外定义了一个双向诊断 $\mathrm{BC}_{\text{bi}}=\tfrac{1}{2}(\mathrm{BC}_{a\to m}+\mathrm{BC}_{m\to a})$(Equations (11)–(13)),并诚实地把它降级为探索性指标:在 100 对人评样本上与多数投票的节奏判定做比较,把分差小于 0.07 视作平局时,$\mathrm{BC}_{\text{bi}}$ 的一致率是 46%,标准 BC 是 40%,在这个样本量上两者都区分不出偶然水平。
条件化拓扑全貌。把上面四段拼起来就是图1 的拓扑,下面这张图按论文的真实连接关系重画了一遍,注意动作生成器的 key/value 来自 Speech Generator 而非 LLM——这正是附录 G.1 消融要检验的选择:
flowchart TD U[User speech 16kHz or text] --> W[Frozen Whisper-large-v3 encoder
hidden dim 1280] W --> P[Speech Projector
concat 5 frames plus 2-layer MLP
5x downsample, about 5M params] P -->|replaces speech placeholder| L[LLM Backbone
Qwen2.5-7B-Instruct
frozen Stages 1-3, fine-tuned Stage 4] T[Text tokens] --> L L -->|H_llm in R^(T_t x 3584)| G4[Eq 4: MLP to 4d then Reshape
Z in R^(4T_t x d), d=896] L -->|same tokens| Q4[Q = E_sg of w
un-contextualised query] G4 --> TQ1[TQGF x2, h=16, d_h=256
Eq 5 gated fusion, Eq 6 residual] Q4 --> TQ1 TQ1 --> S[Speech Generator
Qwen2.5-0.5B init
GLM-4-Voice units 12.5Hz, vocab 16384] S -->|speech units u| D1[CosyVoice flow-matching decoder
plus HiFi-GAN vocoder to 22.05kHz] S -->|H_s last-layer hidden states
Eq 1: Z = H_s W_h, K and V| MG[Motion Generator
4 parallel part decoders
d_m=512, h=8, 2 TQGF plus 6 self-attn
periodic RoPE T=30] S -->|emitted units u
Eq 2: Q = Interp of E u W_e
12.5Hz to 30Hz| MG MG --> VQ[LOM VQ codes at 30Hz
face 106 / hand 180 / upper 78 / lower 61] VQ -->|frozen VQ-VAE decode| SM[SMPL-X body and hand params
plus FLAME expression coefficients] MG -.->|Stage 3 motion CE Eq 3
weights 106:180:78:61| S S -.->|Stage 4 joint loss Eq 7| L
图中两条虚线是训练期的梯度回流,也是这篇论文与 ViBES 那类冻结方案的分水岭:动作损失经 Speech Generator 更新语音通路(Stage 3),Stage 4 再让它一路回到 LLM 主干。作者报告的总参数量约 83 亿,分解为 LLM 主干约 76 亿、Speech Generator 约 5 亿、四个部位解码器约 1.5 亿、语音投影器约 500 万;四阶段训练合计约 960 GPU 小时,在 4 张 GPU 上用 DeepSpeed ZeRO-2、BF16 混合精度与梯度检查点完成,各阶段有效批大小都是 128,Stage 4 的梯度裁剪收到 0.5 并配三层 NaN 保护。
实验结果
评测集与设定。语音与动作评测用 SwDA-500,一个从 Switchboard Dialog Act Corpus 派生的 500 条对话文本外部评测集,覆盖全部 66 个 SwDA 话题描述、每话题 7 或 8 个语义完整的说话人轮次,保留中等长度提示并去掉不适合朗读的转写伪影。作者明确说明 SwDA-500 提供真实对话措辞,但它不是配对的真实动作基准——下文所有动作参考都是教师生成或基线在同一提示下生成的。数据规模方面,论文 Table 1 给出四阶段训练数据:Stage 1 ASR 1,572,119 样本 / 4,295.8 小时,Stage 2 TTS 1,642,715 / 4,517.0 小时,Stage 3 TTSM 422,856 / 1,402.3 小时,Stage 4 混合 724,508 / 1,929.4 小时,合计 4,362,198 样本 / 12,144.6 小时。所有语料用 langdetect 过滤为英文,每段对话上限 10,000 字符。
口语对话能力有没有被动作训练拖垮。这是联合训练方案必须回答的第一个问题。在 Seed-TTS-Eval 英文测试集(1,088 样本,用 Whisper-large-v3 计算语料级 WER)上,Motion-Omni-Q7 达到 2.62%,是所比较的全模态 LLM 中最低的;作者也诚实地把它和专用 TTS 分开排名,因为专用 TTS 只需朗读给定句子,而全模态 LLM 还要自己规划回复内容。
| 模型 | 类别 | WER (%) test-en ↓ |
|---|---|---|
| Human | 人类参考 | 2.14 |
| Qwen3-TTS-12Hz-1.7B | 专用 TTS | 1.24 |
| CosyVoice 3-1.5B RL | 专用 TTS | 1.45 |
| F5-TTS | 专用 TTS | 2.04 |
| CosyVoice 2 | 专用 TTS | 2.57 |
| Qwen2.5-Omni | 全模态 LLM | 2.72 |
| Ex-Omni | 全模态 LLM | 2.67 |
| Motion-Omni-Q7(本文) | 全模态 LLM | 2.62 |
表1:Seed-TTS-Eval 英文测试集 WER(论文 Table 2 节选)。语音自然度代理指标 UTMOSv2 上本文得 3.77,高于 GLM-TTS(3.31)、VoxCPM1.5(3.17)、F5-TTS(3.15)、CosyVoice(3.06),低于 Qwen3-TTS(4.05) 与 CosyVoice 3(3.92)。VoiceBench 九子集综合分 47.63,高于 LLaMA-Omni(41.12)、Ex-Omni(43.57)、Mini-Omni2(33.49)、Moshi(29.51)。
动作、面部几何与唇同步。对照组是受控级联,命名规则是「语音来源 + 动作模型」:MO-audio 开头的行用本文模型自己的音频,从而在同样语音下隔离动作生成通路;Qwen2.5-Omni 开头的行把同样的动作生成器接到更强的外部语音模型上;LOM 行是教师参考级联,因为 LOM 同时也是 teacher-reference FGD 的参考分布来源。指标分两类:无参考类(Diversity、BC、LSE-C、LSE-D)不需要动作参考;教师参考类(FGD、MSE、LVD)拿 LOM 生成的动作当伪参考,因此天然偏向在推理期调用 LOM 的系统。
| 系统 | Div. ↑ | BC ↑ | LSE-C ↑ | LSE-D ↓ | FGD ↓ | MSE ↓ | LVD ↓ |
|---|---|---|---|---|---|---|---|
| Qwen2.5-Omni + MambaTalk | 11.92 | 7.17 | 6.853 | 7.920 | 4.08 | 7.092 | 6.851 |
| MO-audio + MambaTalk | 12.07 | 7.03 | 6.797 | 7.955 | 4.15 | 7.128 | 7.019 |
| Qwen2.5-Omni + GestureLSM | 13.61 | 7.44 | – | – | 3.29 | – | – |
| MO-audio + GestureLSM | 13.55 | 7.49 | – | – | 3.17 | – | – |
| Qwen2.5-Omni + EMAGE | 11.67 | 7.31 | 6.578 | 8.151 | 3.75 | 7.553 | 7.205 |
| MO-audio + EMAGE | 10.95 | 7.32 | 6.643 | 8.094 | 3.29 | 7.627 | 7.291 |
| Qwen2.5-Omni + LOM | 13.82 | 7.56 | 7.136 | 7.128 | – | 6.581 | 6.243 |
| MO-audio + LOM | 13.07 | 7.67 | 6.985 | 7.011 | – | – | – |
| Motion-Omni-Q7(本文) | 13.67 | 7.59 | 7.011 | 7.023 | 3.03 | 6.723 | 6.427 |
表2:SwDA-500 上的动作、面部几何与唇同步指标(论文 Table 3)。FGD、BC 以 ×10⁻¹ 为单位报告,Diversity 不缩放。本文模型在八项指标中七项排第一或第二;超过它的是 LOM 教师参考级联——那些系统在动作推理期调用的正是提供训练目标的同一个模型。
读这张表的正确方式是分开两类指标。在不于推理期运行 LOM 的系统里,Motion-Omni-Q7 拿到最高拍点相关 7.59、最高多样性 13.67,以及所有面部与唇同步指标上的最好成绩;教师参考 FGD 3.03 也是最低的,但这一项按构造度量的就是到 LOM 生成分布的距离,所以它的含义要谨慎。无参考指标与同音频教师级联的差距约 1%,这个「差距很小」的结论同时支撑了架构选择:用 Speech Generator 隐状态而不是波形来条件化动作,没有付出可见的动作质量代价。
图3:跨系统对比第一行——Motion-Omni-Q7(论文 Figure 4(a))。跨系统对比刻意不采用「挑自己动作最丰富的时刻」的选帧准则,而是在片段中段均匀取七个时间戳并对所有系统施加同一组时间戳,避免比较偏向本文模型恰好在动的瞬间。
图4:跨系统对比第二行——MO-audio + LOM 教师级联(论文 Figure 4(b))。同一组时间戳、同一渲染器、同一头像与裁剪框,所有瓦片共用一个由全部帧头像包围盒并集算出的裁剪框,因此瓦片之间的差异是动作差异而不是取景差异。
图5:跨系统对比第三行——MO-audio + GestureLSM(论文 Figure 4(c))。
图6:跨系统对比第四行——MO-audio + EMAGE(论文 Figure 4(d))。在人评里,正是这一臂给出了本文模型最大的胜出优势。
人评。四位受过训练的青年男性标注者(平均约 26 岁,英语流利,有动作生成或口语对话输出评估经验)独立为四个对照臂各评 25 对片段,标注前接受同一套评分说明,界面隐藏系统名并随机化 A/B 顺序,每对按 R1 节奏、R2 语义对齐、R3 身体自然度三个维度从渲染视频加音频判断,逐对判定取多数投票。两个 MO-audio 臂固定了语音,所以那里的差异只反映动作通路:对 MO-audio + EMAGE 的合并优势是 +25(45 胜 10 平 20 负);对 MO-audio + LOM 也就是对教师本身,结果是 25 胜 27 平 23 负,平局是出现频率最高的单一判定。作者对「四人 25 对」这个规模的态度很克制:不把较小的优势读作可靠偏好证据。对 EMAGE 的 R3 优势,作者归因于基线训练数据的域失配——LOM 与 EMAGE 的训练语料 BEAT2 不只含对话片段,也含独白与公开演讲录像,于是生成的动作有时带演讲风格行为(踱步、侧身、夸张摆臂),标注者在对话场景里会觉得不自然;本文模型训的是对话配对的伪动作,风格被校准到对话语域。
延迟。总响应时间 $T_{\text{resp}}$ 是从收到用户音频到完成全部音频与动作生成的墙钟秒数,实时因子 $\mathrm{RTF}=T_{\text{resp}}/T_{\text{user}}$,小于 1 表示快过实时;全部测量在 SwDA-500 上、单卡完成,评估的是离线回复生成。
| 模型 | $T_{\text{resp}}$ (s) ↓ | RTF ↓ | 相对减速 |
|---|---|---|---|
| Qwen2.5-Omni + LOM | 99.08 | 18.34 | 22.9× |
| Qwen2.5-Omni + EMAGE | 48.65 | 8.79 | 11.3× |
| MO-audio + LOM | 23.35 | 4.39 | 5.4× |
| MO-audio + EMAGE | 4.63 | 0.84 | 1.1× |
| Motion-Omni-Q7(本文) | 4.32 | 0.78 | 1.0× |
表3:SwDA-500 上的响应延迟(论文 Table 5)。最匹配的对照是 MO-audio + LOM——同样的语音模型、同样的教师动作模型,只是把后者当作独立的 audio-to-motion 阶段调用,于是慢了 5.4 倍。
论文 Figure 2 把这些系统放到质量—延迟两个轴上一起看,结论是两个级联各自只在一根轴上接近本文模型,没有系统同时做到:MO-audio + EMAGE 的响应时间相当,但放弃了 0.27 的 BC;MO-audio + LOM 的 BC 高出 0.08,代价是 5.4 倍的响应时间。这组数字是「去掉独立 audio-to-motion 阶段」这个架构主张最硬的支撑。
两组消融。第一组隔离融合设计:所有变体从同一个 Stage 2 检查点出发,用同一份 Stage 3a 数据与优化日程,唯一改变的因素是动作 query 如何吸收上下文信息。结果是 TQGF 配 Speech Generator K/V 得 BC 0.912 最高,普通交叉注意力配 Speech Generator K/V 得 0.905,FiLM 0.852,TQGF 配 LLM K/V 只有 0.827,拼接 0.809,GLU 0.799。作者据此只下两个受限结论:同一个 TQGF 算子下,Speech Generator 上下文比直接的 LLM 上下文更有用(第 6 项对第 1 项);在这个固定的 Stage 3a 设定下,门控融合略优于普通交叉注意力(第 6 项对第 4 项)。他们同时说明这组实验没有隔离 TQGF 的每一个内部组件。
第二组是逐阶段的教师参考 FGD:Stage 3a 0.3974 → 3b 0.3258 → 3c 0.3079 → 3d 0.3075 → Stage 4 联合微调后 0.3040,在整个课程中单调下降,且 Stage 4 之后仍最低。这条曲线是课程式质量分位暴露有效的直接证据,也说明 Stage 4 解冻 LLM 没有以动作质量为代价。
局限性
作者在 Limitations 一节列得很实,第一条也是最根本的:动作质量被 LOM VQ-VAE 码本与本次实例化所用的教师伪标注双重封顶,码本分布之外的动作表达不出来。这不只是「数据不够好」的问题,而是一个结构性上限——模型的动作词表就是那四个 256 条目码本,教师给不出更好的目标,学生也不会超过教师。与之相关的第二条是他们只训练了 Motion-Omni-Q7 这一个实例,更强的主干、更大的动作教师、连续动作头都留作未来工作;框架虽然声称组件可替换,但可替换性目前只有架构层面的论证,没有第二个实例的实证。
第三条是当前模型不以显式说话人身份或情绪为条件,训练数据全为英文,这限制了对其他语言与动作文化的泛化——作者在伦理声明里也重申,学到的动作风格反映的是英文数据的对话语域,不应假设跨语言跨文化可迁移。第四条是 Motion-Omni-Q7 在吐出第一个回复 token 之前要先完整摄入用户话语,因此它是离线回复生成器而非流式交互模型;要达到 MIBURI 那类流式系统的低延迟交互行为,需要不同的设计与评测协议。这一条对数字人落地影响最大:RTF 0.78 是「整段回复生成得比实时快」,不等于「用户说完话后 0.78 秒内就能看到第一个动作」。
第五条是评测本身的不确定性。作者承认 FGD 与 BC 都是感知自然度的不完美代理,四人标注者的 A/B/平局比较是探索性的,缺少更大规模的非作者人评仍是局限。更值得记下来的是附录 H 的负面结果:他们原本想用视频输入的 LLM-as-judge(Gemini 3.1 Pro)把评分规模化,在 26 段多轮渲染片段上经过五轮提示词迭代后放弃——最好的第五轮在语音质量上只达到皮尔逊 $r=+0.32$,R3 身体自然度 $+0.18$,多轮连贯 $+0.17$,其余试点维度(含 R1、R2)的 $r\leq 0$,整个试点量表的平均 $r$ 只有 $+0.05$,比文本对话基准上 LLM-as-judge 常报的 0.50–0.70 低一个数量级。三个根因是:26 段 × 1–5 整数刻度给出的每维度 $r$ 置信区间约 ±0.4,提示词迭代逃不出去;判官模型有硬天花板,包括从预览质量视频里分不清唇同步、以及对大幅度动作系统性高评 R3(人类评者认为那是过度表演);R2 在人类评者之间本身就存在「重音时刻的手势算不算语义对齐」的真实分歧,没有提示词能解决。他们又按 LMSYS Arena 配方实现了成对判官,结果更差:13 对上与人类聚合排序一致 4/13(31%),Cohen's $\kappa=0.079$,反而低于「各自绝对打分再取高分者」的简单基线 5/13(38%)。原因很清楚——两段片段共享同一音频,非动作标准被迫打平,成对判定被 R3 主导,而 R3 恰是判官偏差最大的维度。最终决定是把视频 LLM-as-judge 从主评测里完全移除,主文数字只依赖人评。
我自己的判断补两条。其一,teacher-reference FGD 与伪参考 MSE/LVD 都建立在 LOM 生成的分布上,而 LOM 同时是训练目标的来源,这构成一个自我参照的评测环:本文模型在这个环里拿到最低 FGD 几乎是预期内的结果,真正有信息量的是无参考的四项指标与人评,作者对此的表述是克制的,但读者容易只记住「八项里七项第一或第二」。其二,Stage 3 的联合更新是被一次失败试点逼出来的设计,而论文只给了定性描述(损失停在更高水平、渲染动作明显对不齐)加一条 FGD 曲线,没有给出「冻结 Speech Generator」那一臂在 SwDA-500 上的完整指标行;这条消融恰恰是全文最核心的主张,证据强度与其地位不太匹配。
总结与展望
这篇论文的贡献可以按三层来记。架构层:它给出了一个端到端口语动作框架,动作从产生语音的隐状态里生成,并让动作监督回头更新 LLM、Speech Generator 与 Motion Generator 三个模块;桥接 12.5 Hz 与 30 Hz 的手段是双输入条件化接口——key/value 来自 Speech Generator 隐状态,query 是语音单元嵌入经线性插值升到动作率,配合部位专属的门控融合与维度加权交叉熵。数据层:一条模型无关的伪标注路线,从固定音色的开放域语音指令回复出发,用可替换的动作教师打出 422,856 对样本(1,402 小时),并用 $L_{1}^{\text{vq}}$ 与 BC 的双指标组合分驱动四子阶段课程。评测层:SwDA-500 与一套可复现协议,用匹配的生成音频控制回复内容与韵律,配共享渲染器、参考感知的自动指标、成对人评与统一延迟测量,作者称这是首个面向随机开放域全身口语对话的公开评测协议。
结果的形状是「质量持平、速度大幅领先」:无参考动作指标与同音频教师级联差约 1%,响应时间 4.32 秒(RTF 0.78)比该级联快 5.4 倍,语音 WER 2.62% 在所比全模态系统中最低,VoiceBench 综合 47.63 说明对话能力没有被动作训练拖垮。对做数字人和虚拟主播的人来说,这个组合比单看任何一项都更有意义:级联方案的动作质量本来就够好,卡住落地的一直是第二遍推理带来的延迟。
展望上,作者把所有组件都写成可替换的,额外实例只需按同一配方换更强主干或更强教师重跑。顺着论文自己的线索,值得跟进的有四件事:把教师从 LOM 换成更强的动作模型并重新生成监督,检验质量上限是否真的由教师决定;把离线回复生成器改造成流式交互模型,这需要重设评测协议而不只是重设架构;加入说话人身份与情绪条件,以及在非英文语料上重建 TTSM 池;最后是评测方法本身——附录 H 说明现成的多模态 LLM 还替代不了对渲染对话数字人片段的人类标注,那么一个规模够大、维度够细的人评基准仍是这个方向的公共缺口。
金句
「把动作条件化在 Speech Generator 的隐状态上而不是解码后的波形上,让无参考动作指标保持在同音频教师级联的约 1% 以内,同时去掉了一个独立的 audio-to-motion 阶段——这正是响应时间 5.4 倍差距的来源。」(论文结论节)
「联合训练在这里不是可选项:语音通路一旦冻结,动作就与音频对不齐。」(论文摘要)