换脸又换嗓的说话视频:一个扩散模型同时换外观和音色,单卡 13.6 FPS 流式出片

UniSwap: Streaming Audio-Visual Identity Swapping for Talking Videos

Yuxuan Zhang, Haozhong Xiong, Jiayi Song, Jinpeng Yu, Yang Shi, Jiaming Liu, Ruihua Huang, Liwei Wang

cs.CV, cs.SD

2026-08-12

UniSwap 用一个音视频扩散模型,同时把说话视频里的人脸和音色换成参考图与参考嗓音,单卡 13.6 FPS 流式生成,约比最快的级联方案快 10 倍。

这篇在解决什么

说话视频换人:把一段视频里说话的人换成另一个人(给参考图加参考嗓音),同时保留原来的动作、场景、说的内容,以及口型和声音的对齐。

现有做法是把换脸和换声两个独立模型串起来。两件事分开优化,没有任何联合目标保证换出来的嘴型和换出来的声音对得上。大多数基于扩散的方法还要先把整段视频吃进去才能生成,没法一块一块流式出。

方法

UniSwap 建在冻结的 LTX-2.3 音视频扩散模型上,视频和音频两条模态流共享同一条物理时间轴,靠交叉注意力互相影响。这是第一个在单个模型里联合换外观和音色的框架。

训练数据是难点,找不到现成的跨身份对齐对。作者设计了 swap-and-reconstruct(换后重建)流水线:拿普通说话视频,提取 2D 姿态、抠掉人物只留背景、把渲染的姿态序列贴回去当源(保留动作和时序、抹掉外观);音频那侧用 Seed-VC 把音色换成随机说话人(保留内容和韵律)。参考是原图的一帧加随机 30% 音频片段,重建目标就是原始视频。

三阶段训练:

推理时的 Feature-RoPE Decomposition(特征与旋转位置分解)解决长视频位置编码越界:自适应 Sink Block 永久保留第一块当身份锚点,参考键在当前生成槽重新旋转,滚动块映射到固定的 4 槽窗口。

结果

短视频基准(10 秒,100 段)。音视频同步:UniSwap 的 Sync-C 3.633,最好的级联方案(SCAIL-2 + Seed-VC)3.289,换出来的嘴型和声音对得更齐。

指标UniSwap最好对照
Sync-C ↑3.6333.289(SCAIL-2+Seed-VC)
身份 DINO-S ↑0.6290.630(SCAIL-2)
推理 FPS13.6(3 步)1.367(Wan-Animate,20 步)

身份保持上 UniSwap(0.629)和 SCAIL-2(0.630)持平,没占便宜。音质 SIG 3.486 和 Seed-VC 3.489 持平,但说话人相似度 SECS 只有 0.730,低于 Seed-VC 的 0.829,音色学得没那么像。

长视频(1 分钟,三段):UniSwap 的 DINO-S 在 0.596/0.590/0.596 几乎不变,IQA 在 3.966 到 4.032 之间;SCAIL-2 的 DINO-S 从 0.566 掉到 0.517。

效率:241 帧单 H100,UniSwap 3 步、每块 1.76 秒、13.6 FPS,约比最快的对照快 10 倍,比 MoCha 快约 100 倍。

用户研究(30 人):外观身份 4.16、唇形同步 4.11 最高。

为什么重要

把换脸和换声塞进一个模型、还能流式,是这类的第一个。单模型意味着口型和音色有联合约束,同步更稳;流式意味着能做实时交互,比如直播换人。13.6 FPS 单卡可跑,工程上够用。但身份和音色保真度都只是追平最强级联,不是碾压,买点在联合加流式,不是质量。

局限与存疑

作者自述:只处理单人说话视频,多人、遮挡、复杂交互还做不了;面部表情由音频条件自动驱动,不能独立编辑。

读下来,SECS(说话人相似度)0.730 落后 Seed-VC 的 0.829 不算小差距,音色迁移是相对弱的一环,论文也没在更多说话人和口音上验证泛化。用户研究样本只有 30 人。

术语

原文与代码

相关论文

全部论文解读