My App
Paper/VideoToAudio

MMAudio: Taming Multimodal Joint Training for High-Quality Video-to-Audio Synthesis

给定视频和可选的text, 生成高质量同步的音频. 代替单一的video控制信号, 使用容易获取且长范围的audio-text数据集, 学习audio和语义对齐的样本. 条件同步模块实现视频和音频在帧级别对齐.

介绍

"我们对拟音很感兴趣", 拟音要求:1)语义上的对齐, 这要求理解视频中场景上下文, 和音频联系起来. 2)时间上的对齐, 人类能感受到25ms以上的不对齐.

当前的方法都使用audio-video数据集, 1)从头训练, 数据集限制, 大规模数据整理成本很高, 2)微调预训练的text-to-video模型(增加控制模块), 是网络结构复杂化, 限制了设计空间, 预训练模型的能力存疑.

他们从头设计了单一的Transformer网络, 联合训练视频, 音频, 文本, 通过掩码缺失的模态, 既可以使用audio-text数据集, 也可以使用audio-video数据集.

为了改善时间对齐, 增加条件同步模块(具体结构放在后面讲, 笔者注).

方法

预备知识

Conditional flow matching. 乍一看觉得它和diffusion有一点像, 从随机分布走到目标分布. 下面的内容借助了大模型: 想象一下要教一个机器人从房间的任意一个角落(噪声x0x_0)走到桌子中央(真实数据x1x_1), 1)diffusion的做法是让机器人随机地乱走, 直到最后可能的位置完全随机(符合正态分布, 加噪的过程), 模型要学习的是机器人轨迹的规律, 在任何一个位置, 都能预测出机器人上一步是怎么走的, 最终模型学会让机器人从随机位置反向走回桌子, 2)flow matching的做法是开始就把机器人放到一个随机位置, 人为的定义一条从随机位置到桌子的直线路径, 模型学习的是一个"速度场", 学习模型如何以正确的速度移动, 一步步的走到一个新的, 看起来真实的数据点, t:[0:1]. flow Matching 使用常微分方程求解器, 生成过程是确定的, diffusion使用随机微分方程求解器, 每一步都要添加一点随机性. flow matching的目标是优化这个等式:

Et,q(x0),q(x1,C)vθ(t,C,xt)u(xtx0,x1)2\mathbb{E}_{t, q(x_0), q(x_1, \mathbf{C})} \| v_{\theta}(t, \mathbf{C}, x_t) - u(x_t|x_0, x_1) \|^2

音频嵌入. 首先通过Short-Time Fourier Transform(STFT)转换成波形, 然后提取梅尔频谱图, 接着通过一个预训练的VAE编码到latent space, 在推理阶段反之.

概览

MMAudio-overview

依据conditional flow matching, 在训练阶段, 我们最终得到一个速度场vθv_\theta, 在测试阶段, 从时间步t=0到t=1数值积分x0x_0得到x1x_1(带条件), 解码后得到音频.

网络结构如上图, 前面是多模态Transformer块, 后面是单音频transformer块, 这是为了多模态训练; 另外就是条件同步模块, 为了时间上的对齐.

多模态Transformer

数据表示. 介绍了video, text, audio wave和sync features的提取后的表示, 概览图中已经画得很清楚了, 除了文本外, 所有特征都遵循相同的时序顺序, 尽管帧率不同, 经过Projection层后都是h维度.

Joint attention. 看图的右边, ⊙代表三次相同的拼接动作, Joint attention实际是一次自注意力动作, 对结果按照拼接时的位置再分开.

Aligned RoPE position embedding. 注意概览图右上角的RoPE, 在典型的Transformer中, 我们用位置嵌入去保留时间信息, RoPE是一种优化的位置嵌入方法, Text不存在位置信息, 因此只对video和audio做位置嵌入, 又因为audio的帧率为31.25 fps, video的帧率为8fps, 放大video的位置嵌入频率31.25/8.

ConvMLP. 右下角, 对audio和video使用ConvMLP, 将MLP的线性层换成了1D convolutions, 这是为了更好的理解时间结构.

全局条件. 这个是为了注入flow matching中时间步的信息, t经过傅里叶变换得到cgc_g(这里具体更复杂, 见概览图作图), adaptive layer normalization layers (adaLN)的公式是下面这样的, Wγ\mathbf{W_\gamma}Wβ\mathbf{W_\beta}是矩阵, 1\mathbf{1}是Lx1的全1矩阵.

adaLNg(y,cg)=LayerNorm(y)1Wγ(cg)+1Wβ(cg)\text{adaLN}_{g}(y, c_{g}) = \text{LayerNorm}(y) \cdot \mathbf{1W}_{\gamma}(c_{g}) + \mathbf{1W}_{\beta}(c_{g})

条件同步模块

它说视频和音频虽然在多模态Transformer中已经充分交流了, 但这些层通过软分布聚合特征, 他们发现妨碍精度, 于是有了概览图左边的设计, 用Synchformer采样视频(通过最近临插法8fps -> 24fps), 然后通过下面的公式得到cfc_f:

cf=Upsample(ConvMLP(Fsyn))+1cg.c_f = \text{Upsample}(\text{ConvMLP}(F_{\text{syn}})) + \mathbf{1}c_g.

总结

这个结构的核心当然是一层层的Transformer, 和conditional flow matching的生成方法. 所有模态都用了token编码的方式, 全文为了音频同步做了非常多的努力, 总结一下有1)adaLN, convMLP, RoPE, cfc_f, Synchformer.

实验

这部分不是关注的重点, 简单过一下, 数据集是VGGSound和Audio-text datasets, 评估指标包括音频质量, 语义对齐和时序对齐.

感受

虽然结构的很复杂, 引用了很多前人的成果, 但是图解很清晰. 原来Transformer还可以这样设计.

1)flow matching的方法, 从头训练Transformer; 2)任务是video to audio -> audio-video训练成本高, audio-text数据易获取, 训练又简单 -> video + audio + text联合训练; 3)多种对齐方法在前面已经总结过.

这是一篇video to audio的文章, 用的是很新的flow matching的方法, 研究了一下, 生成视频比这个复杂得多, 这种方法不适. 但是有一个观点很好, audio-video不好训练, 但是audio-text好训练, 设计了一个多模态的Transformer.

这种思路应该是可以应用到music to video的端到端生成的, 有必要好好研究一下.

On this page