语音驱动的说话人视频合成旨在根据一段输入的语音,合成对应的目标人脸说话视频。高质量的说话人视频需要满足两个目标:
(1)合成的视频画面应具有较高的保真度;
(2)合成的人脸面部表情应与输入的驱动语音保证高度对齐。
基于NeRF的说话人视频合成算法,仅需要3-5分钟左右的目标人说话视频作为训练数据,即可合成该目标人说任意语音的视频,在实现第二个目标还面临许多挑战。
GeneFace 采用 3D 人脸关键点作为中间变量,提出了一个三阶段的框架:
audio2motion在一个大的数据上进行训练,适用于所有的说话人视频,仅需要训练一次。
语义信息:利用 HuBERT 模型从原始音频中提取语音表征。
动作表示:为了能在欧几里得空间中表示详细的面部运动,从重建的3D头部网格中选择68个关键点,使用它们的位置作为动作表示。
编码器 | 解码器 | 流模型 |
---|---|---|
原始变分自编码器的高斯先验从两个方面限制了3D标志序列生成过程的性能:
在给定的多说话人数据集上训练variational motion generator时,模型可以很好地处理各种音频输入。然而,由于目标人物视频的规模相对较小(大约4-5分钟),与多说话人唇读数据集(大约数百小时)相比,预测的3D landmark与目标人物领域之间存在领域偏差。因此需要将VAE预测的3D landmark 细化为Personalize domain。
要求:
方案:为了满足第一点,使用1D卷积为后处理网络的结构,并采用同步专家来监督嘴唇同步。对于第二点,我们联合训练一个MLP结构的帧级鉴别器,该鉴别器测量每个关键点帧与目标人的身份相似性。
postnet模型仅适用于对应的说话人视频,所以对每个新的说话人视频都需要训练一个新的postnet。而且训练postnet时,既需要大的说话人数据集,也需要对应的说话人数据集。
可以从上图中看出,post-net模型将预测的人脸landmarks从大数据集的空间域迁移到特定人的域中,这样更能保证嘴型的同步性。
NeRF将一个连续的场景表示为一个输入为5D向量的函数,它的输入由一个空间点的3D位置 x = ( x , y , z ) \mathbf{x} = \left( x, y, z \right) x=(x,y,z)和它的2D视角方向 d = ( θ , ϕ ) \mathbf{d} = \left( \theta, \phi \right) d=(θ,ϕ),输出为对应3D位置的颜色 c = ( r , g , b ) \mathbf{c} = \left(r,g,b \right) c=(r,g,b)和体素密度 σ \sigma σ。NeRF函数用公式表示就是:
F ( x , d ) → ( c , σ ) F \left( \mathbf{x}, \mathbf{d} \right) \rightarrow \left( c, \sigma \right) F(x,d)→(c,σ)
以3DMM landmark作为条件变量,基于NeRF进行三维重建,需要先对头部进行重建,然后以头部为条件变量,重建躯干。
将landmark l l l作为NeRF的条件变量,用公式表示如下:
F θ ( x , d , l ) → ( c , σ ) F_{\theta} \left( \mathbf{x}, \mathbf{d}, l \right) \rightarrow \left( c, \sigma \right) Fθ(x,d,l)→(c,σ)
颜色 C C C计算的公式如下所示:
基于head-NeRF的输出颜色 C h e a d C_{head} Chead作为torso-NeRF像素级的条件,torso-NeRF的公式表示如下:
F t o r s o ( x , C h e a d , d 0 , Π , l ) → ( c , σ ) F_{torso} \left( x, C_{head},d_{0}, \Pi ,l \right) \rightarrow \left( c, \sigma \right) Ftorso(x,Chead,d0,Π,l)→(c,σ)