From Tokens to Faces:一条token流同时驱动语音和3D面部动画
你有没有想过,为什么虚拟主播说话时嘴型和声音总是有那么一点不同步?传统的语音驱动面部动画走的是一条迂回的路:先把文字合成语音,再把语音提取成特征,最后用特征驱动面部模型。每一步都有信息损失,每一步都引入延迟。
但如果语音和面部表情本来就是同一件事呢?你说"啊"的时候,嘴张开和声带振动是同时发生的——它们共享同一个神经指令。那为什么不让AI也从同一个"指令"同时生成声音和表情?
来自巴西UNICAMP和法国Grenoble的研究团队做了这件事:他们让语音和面部动画共享同一套离散token,一条token流同时解码出声音和3D面部动作,实现了真正的音画同步。
四种语音表示,谁最能驱动面部?
核心问题是:什么样的语音表示最适合驱动面部动画?研究者比较了四类语音编码器:
1. HuBERT(语义表示):自监督学习模型,通过预测被遮蔽的语音片段来训练。它擅长捕捉"这个音是什么"——音素类别信息。这是当前面部动画的主流选择。
2. SpeechTokenizer(语义+声学混合):用多层残差向量量化,第一层蒸馏了HuBERT的语义信息,后续层编码声学细节。相当于"音素+语调"的组合。
3. WavTokenizer(声学表示):极致压缩,用单个码本把整段语音压成极少的token。它追求的是声学重建质量——"听起来像",但不关心"说了什么"。
4. CosyVoice2(标签表示):基于ASR目标训练的生成式模型,它的token空间是"有监督标签"驱动的——每个token对应一个明确的语音单元。
这四类编码器分别搭配两种面部解码器(GRU和Transformer),形成8种组合,在VOCASET数据集上进行对比。
关键发现:音素信息是灵魂
结果出乎意料地清晰:
语义表示和标签表示打平了。 HuBERT和CosyVoice2在面部动画质量上表现相当,尽管它们的训练目标完全不同——一个靠自监督猜谜,一个靠有监督标签。这说明驱动面部动画的关键不是"怎么训练",而是"编码了什么"。
音素信息是必要条件。 探针分析(probing)揭示了一个关键规律:只要语音表示中编码了音素类别信息,面部动画就能做好;如果只有声学信息而缺乏音素结构(如WavTokenizer),动画质量就明显下降。这很好理解——嘴型主要由"说了什么音"决定,而不是"声音听起来怎样"。
声学表示反而拖后腿。 WavTokenizer虽然能完美重建语音,但在面部动画上表现最差。它压缩得太狠,把音素结构信息丢掉了。就像一个只记旋律不记歌词的人——哼得出调子,但说不出词,自然也做不出正确的嘴型。
混合表示不如纯语义。 SpeechTokenizer把语义和声学信息混在一起,但面部动画效果不如纯语义的HuBERT。额外的声学信息反而成了噪音——面部动画不需要知道声音的音色和响度,它只需要知道嘴该怎么动。
AVTTS:一条token流,两个世界
最有趣的部分是AVTTS(Audio Visual Text-to-Speech)管线。
传统的语音驱动面部动画是两阶段的:文字→语音→面部动画。AVTTS把它变成了一阶段的:文字→共享token→(语音+面部动画)并行输出。
具体来说,CosyVoice2的TTS模型从文字和参考音频预测出语音token序列。然后,同一个token序列同时送入两个解码器:一个flow-matching语音解码器生成声波,一个Transformer面部解码器生成blendshape序列。因为两个解码器读的是同一串token,语音和面部动画天然同步——不需要任何额外的对齐机制。
这就像一个人说话时,大脑发出一个指令,嘴巴和声带同时执行。不需要"先说话再对口型"——指令本身就是同步的。
更大的图景
这项工作的意义不只是"面部动画做得更好"。它指向了一个更根本的方向:在多模态语音语言模型中,不同的解码器可以挂载在同一个冻结的LLM骨干上。语音解码器、面部解码器、甚至情感解码器,都可以从同一套共享token出发。
这意味着未来的虚拟人可能不再需要"语音驱动面部"这个独立模块——LLM生成的token本身就是多模态的通用指令,各种输出只是同一指令的不同执行方式。
论文链接:https://arxiv.org/abs/2606.13630 代码仓库:https://github.com/ProdCor/Token-to-Face
🌟 智谱 GLM-5 已上线
我正在智谱大模型开放平台 BigModel.cn 上打造 AI 应用,智谱新一代旗舰模型 GLM-5 已上线,在推理、代码、智能体综合能力达到开源模型 SOTA 水平。
🎁 领取 2000万 Tokens