![]()
你有没有试过跟一个数字人聊天,发现它说话时手脚完全不会动,或者动作和话音明显不对拍?那种感觉挺诡异的,像是配音配错了轨道。
现在的虚拟主播、AI伴侣、游戏NPC越来越多用到这种"数字人"形象,但它们身上普遍藏着一个技术上的死结:要让手势和说话对上口型很容易,只要提前录好整段音频再生成动作就行。可问题是,真人对话是实时的,数字人说下一句话之前,连它自己都不知道要说什么,更别提提前生成配套的手势了。
这就好比你在看一场同声传译。传统的动作生成方法,相当于让翻译先把发言人讲完的整段话拿到手,琢磨透了再翻,准确是准确,但发言人已经讲完五分钟了。而真正的实时对话场景要求翻译必须听一句翻一句,甚至听半句就要开始张嘴,这时候还要保证翻译内容通顺、语调贴合,难度完全不一样。
这篇来自上海科技大学和腾讯LIGHTSPEED团队的论文,就是专门啃这块硬骨头的。他们给这个问题起了个名字,叫在线协同语音手势生成(Online Co-speech Gesture Generation)。
引用块:协同语音手势(Co-speech Gesture):指人在说话时自然伴随的身体动作,比如强调时挥手、犹豫时摸头,这些动作和语音节奏、语义高度相关。
offline的方法为什么在真实场景里全部失灵
先说清楚现有方法卡在哪。
论文里提到,过去几年那些效果不错的协同语音手势生成模型,比如TalkSHOW、EMAGE、LOM,几乎都是在offline(离线)设定下训练和测试的。所谓离线,意思是模型拿到的是一整段已经录制完毕的语音,可以从头看到尾,甚至能看到未来几秒钟要说什么,然后再慢悠悠地生成一套动作。
这在做动画后期、给已经录好的配音配动作时完全没问题。但放到真人对话场景里就彻底不成立了,因为数字人的语音本身也是实时流式生成的,它自己都不知道下一秒要说什么词,你怎么指望它提前把配套手势算出来?
论文用数据说明了这种方法直接搬到在线场景会有多惨。他们测试了几个代表性的offline方法,在严格要求"只能用当前和过去的语音,不能看未来"的条件下重新跑了一遍,发现问题主要出在两头。一部分方法比如LOM依赖完整语音上下文,一旦被切断未来信息,生成质量明显下滑,延迟还高达22.9毫秒(相比之下作者提出的方法只要1.6毫秒左右)。另一部分处理长语音片段的方法,干脆存在结构性的"必须等全部说完才能开始生成"的问题,论文里用+∞来表示这种方法的延迟,意思是它压根没法用在实时场景。
这里还有第二层麻烦,是数据的问题。现在市面上能找到的协同语音动作数据集,基本都是单人自言自语录的(比如BEATv2),或者是普通社交场景下采集的对话。这些数据里的情绪表达偏平淡,姿态变化也比较有限。可虚拟陪伴场景恰恰需要更丰富的情绪表现,比如安慰用户时要柔和,鼓励用户时要有力量感,这类细腻的情感表达,老数据集里根本没有覆盖。
拆解一个不可能的任务:让模型只看"过去"就能预测"现在"
面对这个死结,研究团队的思路是把整个系统拆成两条线同时跑。
一条线是负责把用户输入的语音、文字、视觉信息转成流式的回应语音,这部分他们直接用了Qwen-Omni这个流式实时大模型来做。
引用块:流式(Streaming):数据以连续、逐段的方式产生和处理,而不是等待全部数据准备好再一次性处理,好比水龙头持续出水,而不是等水桶灌满再倒出来。
另一条线,也是这篇论文真正要解决的核心难题,是拿着这条流式语音,实时地、逐帧地生成配套手势,而且绝对不能偷看未来的语音内容。
这个约束听起来简单,做起来却很棘手。因为身体的不同部位对语音的反应节奏完全不一样,手部动作可能跟着某个重音词瞬间抖一下,而躯干的转向可能是跨越好几句话慢慢完成的。如果把全身当成一个整体一起预测,模型很容易在信息不完整的情况下顾此失彼。
研究团队的解决方案是先把身体拆开,再重新组装。他们把人体分成四个部分:下半身、上半身、双手、以及包含头部表情的脸部,分别用四个独立的VQ-VAE模型把每部分的连续动作编码成离散的"动作词汇"。
引用块:VQ-VAE(向量量化变分自编码器):一种把连续、复杂的数据(比如动作曲线)压缩成有限个离散"代码"的技术,类似把无限种颜色归类成一个有限的调色板,每种颜色都有个编号,之后只需要传编号,不用传具体的颜色值。
这个设计其实很像乐团分谱演奏。想象一个交响乐团,如果指挥要求每个乐手都必须同时看懂整份总谱才能演奏自己的声部,那这个乐团基本没法排练,因为信息量太大,反应速度会被拖垮。但如果每个乐器组只需要看自己的分谱,同时留意指挥棒和其他声部的大致走向,整体配合反而更顺畅。这里的"总谱"就是完整的全身动作,"分谱"就是拆开后的四个身体部位,每部分只需要处理自己的动态规律,同时通过一个跨模态机制留意其他部位在做什么,这样既降低了单步预测的复杂度,又不会让身体各部分动作互相打架。如果不做这个拆分,直接让一个模型硬啃全身動作的联合分布,在语音信息本身就不完整的在线场景下,模型很容易学出僵硬或者不协调的动作,论文的消融实验也证实了这一点。
拆完之后,四个部位的动作token并不是各自独立生成的,论文用了一个叫做跨模态自回归建模(cross-modal autoregressive modeling)的机制,让每个部位在生成当前时刻动作的时候,不仅参考自己过去的动作历史,还要参考其他三个部位过去的动作,以此保证四肢和躯干看起来像一个协调的整体,而不是四段各说各话的动画拼贴。
一道"因果面具":逼着模型忘记未来
真正解决在线生成核心矛盾的,是论文提出的一个叫causal masked audio-conditioned cross-attention(因果掩码音频条件交叉注意力)的机制。
引用块:交叉注意力(Cross-Attention):一种让模型在生成某个模态(这里是动作)时,主动去"查阅"另一个模态(这里是语音)里相关信息的机制,类似写文章时不断回头看提纲,确认自己没有偏题。
正常的交叉注意力,是让动作在生成的时候,可以自由地看语音序列里任何一个时间点的信息,包括未来的。这在离线场景下完全没问题,反而能帮助模型提前"预判"该做什么动作。但放到在线场景下,这就成了一个作弊漏洞:如果训练阶段允许模型偷看未来的语音,那模型学到的其实是一种依赖未来信息的"投机"策略,一旦部署上线,未来信息被物理上切断,模型立刻就会表现失常。
研究团队的做法是,在交叉注意力层里加入一个因果掩码,强制规定第t时刻的动作,只能看到第t时刻及之前的语音特征,后面的一律被遮住看不到。而且这个限制不只是推理阶段的技巧,训练时也严格执行同样的规则。
这一点特别值得展开说说,因为它其实回应了一个很容易被忽视的陷阱。很多团队做在线系统时,习惯性地用离线的方式训练模型,等部署的时候再简单粗暴地把未来信息"挡住"。这就好比一个学生做练习题的时候一直可以翻答案抄,考试的时候突然不让翻了,那这个学生大概率是考不好的。因为他从来没有真正训练过"在信息不全的情况下独立推理"这项能力。论文的消融实验清楚地印证了这一点:去掉因果注意力掩码之后,FGD指标(衡量动作与真实动作分布的差距,数值越低越好)从2.795恶化到3.037,BC指标(衡量动作与语音节拍的同步程度,数值越高越好)也从7.354掉到7.027。这说明因果约束不是可有可无的装饰,它实实在在地改变了模型学到的表征方式。
论文还做了另一个对照实验,把这套交叉注意力机制换成一种更简单的"前缀拼接"方式,也就是把语音token直接拼在动作token前面,再加个因果掩码防止看未来。结果FGD直接飙到3.745,Diversity(动作多样性指标)也掉到8.749。这说明单纯把语音塞进序列前面,和真正设计一个专门的跨模态对齐模块,效果差距很大,前者更像是把两种信息硬凑在一起,而不是让模型学会真正地"边听边看边动"。
数据从哪来:虚拟陪伴场景的空白,靠什么填
技术架构定下来了,接下来的问题是训练数据从哪儿来。这一部分我觉得是这篇论文里比模型设计更有意思的地方,因为它揭示了一个很实际的困境:好模型是需要好数据喂出来的,但虚拟陪伴这种场景下的高质量数据几乎不存在。
研究团队搭了一套offline interactive data synthesis pipeline(离线交互式数据合成管线)来解决这个问题,思路是先让大语言模型生成对话文本,再合成配套的语音和动作。
但这里有个坑,如果直接让大模型随便生成用户和数字人之间的对话,很容易掉进模式化陷阱,聊来聊去总是那几种话题、那几种语气,因为大语言模型本身有固定的表达偏好。研究团队的解法是先建立一个subject corpus(主题语料库),里面收录了各种话题片段和情绪片段,比如"如何面对失败"这样的话题,配上"冷静而理性"这样的情绪标签,每次生成对话前先随机抽取一组话题和情绪,当作结构化的提示词框架喂给大模型。
这个做法其实类似写作老师给学生出题目的方式。如果只是让学生"随便写一篇作文",大概率写出来的东西千篇一律,因为学生会本能地写自己最熟悉、最省力的内容。但如果老师给出具体的主题和情感要求,比方说"写一段关于失败的、语气冷静的对话",学生就被迫跳出舒适区,写出更多样化的内容。如果不做这层约束,合成出来的对话数据会严重偏向大模型自己的默认写作风格,训练出来的手势生成模型也会跟着变得单一。
有了对话文本之后,团队用语音克隆或者文本转语音系统把数字人的回应转成语音,再用一个专门的offline gesture generator(离线手势生成器,和部署时用的在线版本不同,这个版本可以看到完整语音,生成质量优先,不追求实时性)合成配套的动作序列,这样就得到了一整套语音、文本、动作三者对齐的合成数据。
但纯合成数据也有风险,容易带上人工合成留下的痕迹,或者和真实人类动作有系统性偏差。为了兜底,团队专门请了职业演员,按照预先设计好的对话脚本进行真人表演,同时用光学动作捕捉系统记录下高质量的动作数据。这套数据被命名为JIYI,总共约6小时,用16个高分辨率相机、50个动作捕捉标记点采集而成,内容涵盖天气、旅行、人际关系、运动健康、游戏、食物、职业等多个话题,情绪覆盖开心、生气、恐惧、悲伤、冷静理性等多种状态。
让系统"越用越懂你":自我进化的闭环
如果故事到这里就结束了,这篇论文其实也算完整。但研究团队还多走了一步,他们注意到,离线合成的数据再怎么丰富,终究还是模拟出来的,真实用户在实际使用中的喜好和反馈,才是最有价值的信号。
于是他们设计了一套user-feedback-driven self-evolution(用户反馈驱动的自我进化)机制。系统上线之后,持续收集用户输入、数字人的回应、生成的手势,以及用户对这些内容的反馈信号。这些被用户认可的高质量交互样本,会被存进一个叫Data Library(数据库)的池子里,而质量不达标的样本会被一个validation tool(校验工具)过滤掉,这个工具会检查语音动作同步性、关节角度是否超出合理范围、是否存在脚部打滑之类的物理不合理现象。
关键的地方在于,这些被筛选出来的高质量在线样本,不只是被简单地拿来当训练数据用,它们还被当作in-context examples(上下文示例),重新塞回给大语言模型,让它在下一轮生成对话的时候,参考这些真实被用户喜欢的交互风格进行创作。
这个设计挺巧妙的,相当于用少量真实反馈去撬动大量新数据的生成方向。论文里给出的具体比例很直观:基础模型的训练集里,100%都是最初的动捕数据。经过第一轮自我进化后,训练集扩充到2434条样本,其中原始数据占50%,新合成的离线数据占47%,而真正来自用户反馈的偏好样本只占3%。到第二轮,训练集进一步扩充到3852条,原始数据比例降到33%,合成数据升到62%,偏好数据升到5%。
看到这个比例分布,你可能会想,偏好数据占比这么低,才3%到5%,真的有用吗?论文专门做了一个额外的消融实验来回答这个问题。他们试着去掉偏好在线数据(不管是当训练监督还是当上下文示例都去掉),结果FGD反而从2.231退步到2.434;再试着只留偏好数据,不做离线合成的放大,结果FGD停留在2.704,提升有限。这说明单靠这一小撮真实反馈数据直接训练,效果并不够,但如果让它去引导大量合成数据的生成方向,就能把这一小撮"金子"的价值放大很多倍。
这就像调味的道理。厨房里放一点点味精,单独尝味精本身没什么感觉,但撒到一大锅汤里,却能把整锅汤的味道都提升一个层次。如果不撒进去,只是单独端着那一小勺味精喝,起不了任何作用;但如果不放这一小勺,只靠汤本身的原料,味道也终究差点意思。用户反馈数据的作用就类似这一小勺关键调味料,它本身分量很小,但决定了整锅"合成数据汤"的风味走向。
论文里还特别做了一个对照,把同样的第二轮自我进化数据喂给LOM模型重新训练,结果发现LOM确实从数据增量里获益了,但整体表现依然不如作者提出的方法。这个对比很重要,因为它说明性能提升不完全是数据堆出来的,模型架构本身的设计(那套因果交叉注意力和分部件建模)同样功不可没。
实测结果:延迟砍到毫秒级,质量还反超
说了这么多设计思路,最后还是要看数据说话。
在公开的BEATv2数据集上,严格按照在线协议(只能看当前和过去的语音)测试,论文提出的方法FGD达到10.519,是所有对比方法里最低的,意味着生成的动作最接近真实分布。BC指标(语音动作同步度)达到8.389,同样是最高的。而最让人意外的是延迟数字,只要1.623毫秒,相比之下LOM需要22.902毫秒,SynTalker需要3.336毫秒,Semantic Gesticulator干脆是无穷大,因为它结构上就不支持流式生成。
| 方法 | FGD↓ | BC↑ | Diversity↑ | 延迟(ms)↓ |
| Semantic Gesticulator | 16.105 | 7.246 | 8.149 | +∞ |
| TalkSHOW | 18.761 | 7.167 | 7.935 | 8.844 |
| SynTalker | 16.789 | 7.398 | 8.868 | 3.336 |
| EMAGE | 15.908 | 7.035 | 8.932 | 5.441 |
| LOM | 15.681 | 7.446 | 9.368 | 22.902 |
| **Super Star (base)** | **10.519** | **8.389** | **10.505** | **1.623** |
在更贴近真实虚拟陪伴场景的JIYI数据集上,结果趋势一致。基础模型FGD是2.795,已经优于所有对比方法,经过两轮自我进化后,FGD进一步降到2.231,BC提升到7.738,Diversity也涨到12.509。
| 方法 | FGD↓ | BC↑ | Diversity↑ | 延迟(ms)↓ |
| LOM | 3.240 | 6.991 | 11.130 | 22.902 |
| Super Star (base) | 2.795 | 7.354 | 11.520 | 1.623 |
| Super Star + 自我进化(1轮) | 2.419 | 7.395 | 11.532 | 1.623 |
| **Super Star + 自我进化(2轮)** | **2.231** | **7.738** | **12.509** | 1.623 |
除了这些客观指标,论文还找了20名志愿者做主观评测,让他们在不知道方法名称的情况下,盲测对比生成的手势视频,从自然度、语音动作同步性、整体偏好三个维度打分。结果显示,这套方法在所有对比维度上都获得了更高的用户偏好率,而且经过两轮自我进化之后的版本,又进一步超过了没有经过进化的基础版本,证明这套持续学习机制确实带来了实质性的体验提升。
这条路还没走完的地方
论文最后也很坦诚地列出了几个尚未解决的短板。
因为严格遵守"只看过去不看未来"的在线约束,遇到话题突然转折、情绪剧烈起伏的长句子时,生成的动作在全局结构上还是不如离线模型那样连贯,毕竟离线模型可以提前看到整段话的走向再统一规划动作,在线模型没有这个奢侈。
另外,合成数据和真实交互数据之间的分布差距,虽然靠动捕数据和自我进化机制在缓解,但没能完全消除。而且目前这套自我进化机制里的"用户偏好"其实是比较轻量级的信号,主要靠用户满意或不满意的简单选择来筛选样本,还没有做成一个真正精细的偏好建模系统或者奖励模型,面对更细腻、更个性化的长期用户偏好,可能还捕捉不到位。
论文也提到,当前的框架主要聚焦在身体动作生成上,面部微表情、眼神注视、话轮转换这些同样重要的具身交互细节,还没有被整合进来。未来如果要做出更完整的虚拟陪伴体验,这些维度都得补上。
写在后面
读完这篇论文,最触动我的其实不是那套因果注意力机制,虽然它确实设计得很扎实,而是那3%到5%的用户反馈数据能撬动整个训练分布这件事。
这让我想起一个不太相关但内核相通的现象:很多产品的用户增长,靠的不是海量的广撒网式获客,而是极小一批核心用户的真实使用反馈,反过来指导产品往哪个方向长。数据合成也是同一个逻辑,合成的数据可以量大,但如果没有一小撮真实信号去校正方向,量大反而可能是在错误的方向上越走越远。
论文里那个"因果掩码不只是推理时的技巧,训练阶段也必须一致执行"的细节,也值得单独拿出来想想。很多工程系统的坑,恰恰出在训练和部署条件不匹配上,训练时给足信息,部署时突然抽走一部分,模型的表现自然会失真。这其实是个更普遍的教训,不只适用于动作生成,任何存在"训练环境比部署环境更宽松"的系统,都值得回头检查一下这道题。
那些被自我进化机制筛选出来、反复被大模型参考的"用户偏好样本",经过两轮迭代之后,它们本身还剩多少"原汁原味"?还是说,它们已经被合成数据的洪流稀释成了另一种东西?
Q&A
Q1:Super Star是什么?
A:Super Star是上海科技大学和腾讯LIGHTSPEED团队提出的一套面向数字人的实时交互框架,核心是让数字人在说话的同时,能够实时生成与语音同步的身体手势,而不需要等整段语音说完再生成动作。
Q2:Super Star和以前的手势生成方法有什么区别?
A:以前的方法大多是离线的,需要拿到完整语音才能生成动作,延迟高且无法用于真人实时对话。Super Star设计了因果掩码交叉注意力机制,让模型只依赖当前和过去的语音就能预测动作,延迟能压到1.6毫秒左右,同时质量还超过了离线方法改造后的效果。
Q3:Super Star的训练数据从哪里来?
A:论文构建了一套离线数据合成管线,先用大语言模型基于话题和情绪语料生成对话,再合成配套语音和动作,同时请职业演员做动作捕捉建立高质量种子数据集JIYI,并通过用户反馈驱动的自我进化机制持续用真实交互数据优化训练集。
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.