StyleTalk: One-shot Talking Head Generation with Controllable Speaking Styles
Basic Information:
- Title: StyleTalk: One-shot Talking Head Generation with Controllable Speaking Styles (StyleTalk:一次性可控说话风格的说话头生成)
- Authors: Yifeng Ma, Suzhen Wang, Zhipeng Hu, Changjie Fan, Tangjie Lv, Yu Ding, Zhidong Deng, Xin Yu
- Affiliation: Department of Computer Science and Technology, BNRist, THUAI, State Key Laboratory of Intelligent Technology and Systems, Tsinghua University (清华大学计算机科学与技术系,BNRist,THUAI,智能技术与系统国家重点实验室)
- Keywords: one-shot talking head generation, controllable speaking styles, style encoder, style-controllable decoder, style-aware adaptive transformer (一次性说话头生成,可控说话风格,风格编码器,可控风格解码器,风格感知自适应变换器)
- URLs: Paper, GitHub
论文简要 :
本文提出了一种一次性可控说话风格的说话头生成框架,通过从参考说话视频中提取风格并将其应用于目标说话头图像,实现了生成具有不同说话风格的说话头视频。
背景信息:
-
论文背景: 随着元宇宙、虚拟人等领域的火热,说话人视频生成受到研究人员的广泛关注。说话人视频生成旨在从给定的任意人照片和任意一段语音中,合成目标说话人说给定语音的视频。
近年来的研究多关注于口型的准确性,头动的自然性,以及合成高保真的视频,鲜少有工作能够合成情绪化且富有表现力的说话人视频。尽管有一些工作通过提供额外的情绪标签,来合成特定情绪的说话人视频,但这部分工作主要关注不同情绪的表情的差异性,而忽略了同种情绪不同人之间的差异性。我们将这种交谈过程中不同人的面部运动差异性概括为“说话风格”。
在本文中,通过给定一段参考说话视频,从中提取出参考片段的说话风格,然后将说话风格嵌入到语音驱动的说话人视频合成系统,从而实现风格可控的说话人视频合成。
-
过去方案: 过去的方法在准确的嘴唇同步、头部姿势生成和高保真度视频生成方面取得了巨大进展,但对于建模多样化的说话风格仍然存在困难。
-
论文的Motivation: 鉴于不同人以不同的个性化说话风格说话,本文旨在解决现有一次性说话头方法无法生成多样化说话风格的问题。通过提出一种一次性可控说话脸部生成框架,从任意参考说话视频中获得说话风格,并驱动一次性肖像以具有参考说话风格和另一段音频的说话风格。
框架由四个部分组成:(1)音频编码器 E a {E_a} Ea,从音素标签 a 1 : T {a_{1:T}} a1:T中提取顺序的纯正发音相关特征;(2)样式编码器 E s {E_s} Es,将所述风格片段中的面部运动模式编码为所述紧凑风格;(3)风格可控动态解码器 E d {E_d} Ed,从音频特征和风格code中产生风格化的3DMM表达参数;(4)图像渲染器 E r {E_r} Er,使用参考图像和表达式参数生成逼真的说话脸。
Audio Encoder
期望音频编码器 E a {E_a} Ea从音频中提取与发音相关的信息。然而,作者观察到音频包含一些与发音无关的信息,如情绪和强度,这些信息会影响输出的说话风格。为了去除这些信息,作者采用音素标签代替声学特征(如Mel Frequency倒频谱系数(MFCC))来表示音频信号。将 a t − w : t + w {a_{t-w:t+w}} at−w:t+w的音素标签转换为词嵌入,然后馈送到变压器编码器,得到音频特征 a t − w : t + w ′ {a^{'}_{t-w:t+w}} at−w:t+w′。通过语音识别工具提取音素。
Style Encoder
风格编码器 E s {E_s} Es提取风格片段中反映的说话风格。由于说话风格是动态的面部运动模式,它与风格剪辑的脸型、纹理和光照无关。为了去除这些信息,作者使用3DMM将样式视频剪辑转换为序列表达参数 δ 1 : N ∈ R N × 64 {\delta_{1:N}∈R^{N×64}} δ1:N∈RN×64。
风格编码器
E
s
{E_s}
Es将顺序3DMM表达式参数作为输入,在对标记之间的时间相关性进行建模之后,
E
s
{E_s}
Es输出每个标记的样式向量
s
1
:
N
′
{s^{'}_{1:N}}
s1:N′。直观地说,视频片段中的说话风格可以通过几个典型帧来识别,因此作者使用了一个**Self-Atttion pooling layer(自注意力池化层)**来聚合样式向量上的样式信息。该层采用了一种基于加性注意力机制,该机制使用前馈网络计算token-level注意力权重。token-level关注权重表示帧级对视频级样式代码的贡献。作者将所有的风格向量乘以注意权值相加,得到最终的风格代码
s
∈
R
d
s
s∈R^{d_s}
s∈Rds。
s
=
s
o
f
t
m
a
x
(
W
s
H
)
H
T
s=softmax(W_sH)H^T
s=softmax(WsH)HT
其中,
W
s
∈
R
1
×
d
s
W_s∈R^{1×d_s}
Ws∈R1×ds为可训练参数,
H
=
[
s
1
,
…
,
s
N
]
∈
R
d
s
×
N
H = [s_1,…,s_N]∈R^{d_s×N}
H=[s1,…,sN]∈Rds×N为编码特征的序列,
d
s
d_s
ds为每个样式向量的维数。
Style-Controllable Dynamic Decoder
将音频特征 a t − w : t + w ′ {a^{'}_{t-w:t+w}} at−w:t+w′和style code s作为输入,基于Transformer解码器,将时序的语音特征作为K和V,将style code对齐到语音特征序列的长度后,加上位置编码作为Q,借助Transformer结构中的注意力机制,计算将style code同语音特征进行注意力计算,作用在V上,将风格信息融入进语音特征,得到解码特征。然后将解码之后的特征逐帧输入到全连接网络中获得每帧的表情参数。
但在实际的实验过程中,作者发现,仅使用上述的模型,合成的表情动画经常出现不自然的口型和表情。受到动态卷积等工作的启发,作者们猜测固定的网络权重参数难以处理多变的说话风格。基于这个假设,设计了风格自适应的Transformer网络结构,将其中的前馈神经网络替换为风格自适应网络,风格自适应网络根据输入的风格编码自适应的改变transformer结构中前馈层的网络权重。
具体的,作者为每个风格自适应网络层提供平行的
K
K
K组权重参数
W
~
k
\tilde{\boldsymbol{W}}_k
W~k,
b
~
k
\tilde{\boldsymbol{b}}_k
b~k,每组权重参数聚焦于人脸不同的运动模式,然后根据风格编码来获得
K
K
K个注意力权重,根据权重对
K
K
K组权重参数的线性组合得到网络最终使用的权重参数,该过程可以描述为(如上图(b)所示):
W
~
(
s
)
=
∑
k
=
1
K
π
k
(
s
)
W
~
k
,
b
~
(
s
)
=
∑
k
=
1
K
π
k
(
s
)
b
~
k
,
s.t.
0
≤
π
k
(
s
)
≤
1
,
∑
k
=
1
K
π
k
(
s
)
=
1
\begin{aligned} \tilde{\boldsymbol{W}}(\boldsymbol{s}) & =\sum_{k=1}^K \pi_k(\boldsymbol{s}) \tilde{\boldsymbol{W}}_k, \tilde{\boldsymbol{b}}(\boldsymbol{s})=\sum_{k=1}^K \pi_k(\boldsymbol{s}) \tilde{\boldsymbol{b}}_k, \\ \text { s.t. } 0 & \leq \pi_k(\boldsymbol{s}) \leq 1, \sum_{k=1}^K \pi_k(\boldsymbol{s})=1\end{aligned}
W~(s) s.t. 0=k=1∑Kπk(s)W~k,b~(s)=k=1∑Kπk(s)b~k,≤πk(s)≤1,k=1∑Kπk(s)=1
式中
π
k
π_k
πk为第
k
k
k个前馈层的注意权值
W
~
k
\tilde{\boldsymbol{W}}_k
W~k,
b
~
k
\tilde{\boldsymbol{b}}_k
b~k。风格可控动态前馈层的输出由下式得到:
y
=
g
(
W
~
T
(
s
)
x
+
b
~
(
s
)
)
y=g(\tilde{\boldsymbol{W}}^T(s)x+\tilde{\boldsymbol{b}}(s))
y=g(W~T(s)x+b~(s))
其中g是激活函数。作者的实验表明,风格可控的动态解码器有助于在不同的说话风格下创建准确的风格化的嘴唇动作和自然的风格化的面部表情。
Lip-sync Discriminator
为了更好的监督在不同说话风格状态下的口型细节,作者设计了一个类似于SyncNet的口型判别器。原始的SyncNet将图片和梅尔特征通过各自的编码器编码为视觉口型特征和语音特征,通过余弦相似度来约束两者映射到同一特征空间。然后使用预训练好的模型对口型合成进行监督。同原始SyncNet使用图片作为口型表示不同,为了获得纯粹的口型表示,首先将动画参数转化为mesh,然后将口型相关的mesh点提取出来,使用其坐标输入到口型编码器获得口型编码;使用音素输入到音素编码器作为音素编码,通过约束口型编码和音素编码的余弦相似度来监督口型的生成。
P
s
y
n
c
=
(
e
m
∗
e
a
)
m
a
x
(
∣
∣
e
m
∣
∣
2
∗
∣
∣
e
a
∣
∣
2
,
ϵ
)
P_{sync}=\frac{(e_m*e_a)}{max(||e_m||_2*||e_a||_2,\epsilon)}
Psync=max(∣∣em∣∣2∗∣∣ea∣∣2,ϵ)(em∗ea)
其中,
ϵ
\epsilon
ϵ是一个很小的常数。作者提出的框架通过对生成片段的每一帧进行同步丢失
L
s
y
n
c
L_{sync}
Lsync来最大化同步概率:
L
sync
=
1
L
∑
i
=
1
L
−
log
(
P
sync
i
)
\mathcal{L}_{\text {sync }}=\frac{1}{L} \sum_{i=1}^L-\log \left(P_{\text {sync }}^i\right)
Lsync =L1i=1∑L−log(Psync i)
Style Discriminator
训练风格判别器
D
s
t
y
l
e
D_{style}
Dstyle来确定输入序列3DMM表达参数
δ
1
:
L
δ_{1:L}
δ1:L的说话风格。具体来说,风格鉴别器产生参数序列属于每种说话风格的概率
P
s
∈
R
C
P^s∈R^C
Ps∈RC,C表示说话风格的数量。风格鉴别器遵循PatchGAN的结构(Goodfellow et al. 2014;Isola et al. 2017;Yu and Porikli 2017a,b;Yu et al. 2018)。风格鉴别器使用交叉熵损失进行训练,然后冻结(frozen)。风格鉴别器引导框架通过风格损失
L
s
t
y
l
e
L_{style}
Lstyle产生生动的说话风格:
L
style
=
−
log
(
P
i
s
)
\mathcal{L}_{\text {style }}=-\log \left(P_i^s\right)
Lstyle =−log(Pis)
其中
i
i
i是基于真实的的说话风格的范畴。
Temporal Discriminator
为了提高合成的参数化表情动画的时序一致性和稳定性,设计了一个时序判别器,通过对抗学习的方式,将合成的表情参数动画输入到判别器中,约束合成的表情动画时序一致性和稳定性。
Triplet Constraint
采用三元约束来获得语义上有意义的样式空间。用于约束风格编码空间,通过计算不同风格片段风格编码之间的距离,使得风格一致的视频序列对应的风格编码空间距离更近,风格不一致的风格编码距离更远,强化风格编码在空间上的语义一致性。
给定说话风格为
c
c
c的风格片段
V
c
V_c
Vc,随机抽样另外两个风格片段
V
c
p
V^p_c
Vcp、
V
c
n
V^n_c
Vcn,它们分别具有和不具有说话风格
c
c
c。然后得到了相应的风格码
s
c
s_c
sc,
s
c
p
s^p_c
scp和
s
c
n
s^n_c
scn我们用三重损失来限制它们在样式空间中的距离(Dong和Shen 2018):
L
trip
=
max
{
∥
s
c
−
s
c
p
∥
2
−
∥
s
c
−
s
c
n
∥
2
+
γ
,
0
}
\mathcal{L}_{\text {trip }}=\max \left\{\left\|\boldsymbol{s}_c-\boldsymbol{s}_c^p\right\|_2-\left\|\boldsymbol{s}_c-\boldsymbol{s}_c^n\right\|_2+\gamma, 0\right\}
Ltrip =max{∥sc−scp∥2−∥sc−scn∥2+γ,0}
其中
γ
\gamma
γ为边距参数,设为5。
总损失:
在训练过程中,作者在自驱动设置下重建每个片段的面部表情。采用L1损失和结构相似性(SSIM)损失相结合的方法(Wang et al. 2004):
L
r
e
c
=
μ
L
L
1
(
δ
1
:
L
,
δ
^
1
:
L
)
+
(
1
−
μ
)
L
s
s
i
m
(
δ
1
:
L
,
δ
^
1
:
L
)
\mathcal{L}_{\mathrm{rec}}=\mu \mathcal{L}_{\mathrm{L} 1}\left(\boldsymbol{\delta}_{1: L}, \hat{\boldsymbol{\delta}}_{1: L}\right)+(1-\mu) \mathcal{L}_{\mathrm{ssim}}\left(\boldsymbol{\delta}_{1: L}, \hat{\boldsymbol{\delta}}_{1: L}\right)
Lrec=μLL1(δ1:L,δ^1:L)+(1−μ)Lssim(δ1:L,δ^1:L)
其中
δ
1
:
L
δ_{1:L}
δ1:L和
δ
^
1
:
L
\hat{\boldsymbol{\delta}}_{1: L}
δ^1:L分别为真实和重构的面部表情。
μ
\mu
μ是比率系数,设为0.1。总损失是由上述损失条款综合计算得出的:
L
=
λ
rec
L
rec
+
λ
trip
L
trip
+
λ
sync
L
sync
+
+
λ
tem
L
tem
+
λ
style
L
style
\begin{aligned} \mathcal{L}=\lambda_{\text {rec }} \mathcal{L}_{\text {rec }}+ & \lambda_{\text {trip }} \mathcal{L}_{\text {trip }}+\lambda_{\text {sync }} \mathcal{L}_{\text {sync}}+ \\ & +\lambda_{\text {tem }} \mathcal{L}_{\text {tem }}+\lambda_{\text {style }} \mathcal{L}_{\text {style }} \end{aligned}
L=λrec Lrec +λtrip Ltrip +λsync Lsync++λtem Ltem +λstyle Lstyle
其中
λ
rec
=
88
,
λ
t
r
i
p
=
1
,
λ
s
y
n
c
=
1
,
λ
t
e
m
=
1
,
λ
s
t
y
l
e
=
1
\lambda_{\text {rec }}=88,\lambda_{trip}=1,\lambda_{sync}=1,\lambda_{tem}=1,\lambda_{style}=1
λrec =88,λtrip=1,λsync=1,λtem=1,λstyle=1
结果分析
本方法在常用的说话人脸视频数据集MEAD和HDTF上进行了验证,表1和图2展示了本文方法跟前沿方法定量和定性的对比,上述结果表明本文的方法不管从ID一致性,视觉效果,风格一致性上,都普遍优于前沿工作。
图3展示了使用两种风格,在风格编码空间进行风格插值的结果,结果表明,本文方法获得的风格编码,在特征空间中具有连续性和稳定性,且可以通过插值创造出新的风格表现。