AdaGAN:adaptive GAN for many-to-many non-parallel voice converison


论文地址: ADAGAN:ADAPTIVE GAN FOR MANY-TO-MANY NON-PARALLEL VOICE CONVERSION

简介

AdaGAN是用于多对多的非平行数据的语音转换。相比较之前用于VC的GAN模型StarGAN,AdaGAN不仅在性能上有所提升,甚至AdaGAN可以实现零次转换(转换为训练集中没有的音色)。另外AdaGAN改进了训练网络,其计算代价很小。

Approach

problem formulation

先简单介绍一下需要用到的符号的含义

Z = { Z 1 , Z 2 , … , Z n } Z=\left\{Z_{1}, Z_{2}, \dots, Z_{n}\right\} Z={Z1,Z2,,Zn} 表示说话人的集合 Z i Z_{i} Zi表示第 i i i个说话人

U = { U 1 , U 2 , … , U m } U=\left\{U_{1}, U_{2}, \dots, U_{m}\right\} U={U1,U2,,Um} 表示说话内容, U i U_{i} Ui表示第 i i i个说话内容

X i ∈ p X ( ⋅ ∣ Z i , U i ) X_{i} \in p_{X}\left(\cdot | Z_{i}, U_{i}\right) XipX(Zi,Ui) 表示第 i i i个说话人+第 i i i个说话内容的特征

语音风格转换在于,我们有原说话人的音频特征 ( Z 1 , U 1 ) (Z_{1}, U_{1}) (Z1,U1)和目标说话人对的音频特征 ( Z 2 , U 2 ) (Z_{2}, U_{2}) (Z2,U2),我们想得到 p X ( ⋅ ∣ Z 2 , U 1 ) p_{X}\left(\cdot | Z_{2}, U_{1}\right) pX(Z2,U1),因此我们需要学习到 X ^ Z 1 → Z 2 \hat{X}_{Z_{1} \rightarrow Z_{2}} X^Z1Z2,同时又要尽可能地保留 U 1 U_{1} U1

这个过程可以表示为:

p X ^ Z 1 → Z 2 ( ⋅ ∣ Z 1 , U 1 , Z 2 , U 2 ) = p X ^ ( ⋅ ∣ Z 2 , U 1 ) p_{\hat{X}_{Z_{1} \rightarrow Z_{2}}}\left(\cdot | Z_{1}, U_{1}, Z_{2}, U_{2}\right)=p_{\hat{X}}\left(\cdot | Z_{2}, U_{1}\right) pX^Z1Z2(Z1,U1,Z2,U2)=pX^(Z2,U1)

AdaIn

AdaGAN中,生成器模型的规范化方法使用了AdaIN,在风格迁移上使用IN效果比BN好很多,AdaIN和IN的不同在于仿射参数来自于样本,即作为条件的样本,也就是说AadIN没有需要学习的参数,这和BN,IN,LN,GN都不同。风格转换中的风格与IN中的仿射参数有很大关系,AdaIN扩展了IN的能力,使用风格图像的均值和标准差作为仿射参数。

AdaIN最初是用在图片的风格迁移,在语音风格迁移中,AdaIN帮助我们得到说话风格,以及声学内容。

AdaIN ⁡ ( x , Y ) = σ Y ( x − μ X σ X ) + μ Y \operatorname{AdaIN}(x, Y)=\sigma_{Y}\left(\frac{x-\mu_{X}}{\sigma_{X}}\right)+\mu_{Y} AdaIN(x,Y)=σY(σXxμX)+μY

x x x是训练集 X X X中声学内容的特征, Y Y Y是目标说话人的说话风格。AdaIN首先使用方差和标准差规范化 x x x。现在假定我们有一个潜在向量,可以表示声学内容的分布以及相同分布下说话人风格。为了转换说话风格,需要使用目标说话的分布。由此,AdaIN输出可以找到影响风格的特征,并且保留声学内容。AdaIN没有任何学习参数,他不会影响复杂度。

网络框架

AdaGAN中有一个编码器En,一个解码器De,还有一个判别器Dis,En将输入音频特征转为潜在向量,De由给定潜在向量生成音频特征。生成时假设原音频为x,需要转换为y,计算x,y的潜在向量。

En输入40长度的Mel谱图,输出1*512的特征向量。

De输入1*512的特征向量,输出40长度的Mel谱图。

En和De中所有的层都是线性层。En中,输入和输出层有40和512 cell大小。相对的在De中,输出和出入层有512和40大小,所有的层(除了输出层)都使用ReLU激活。

判别器Dis的作用于传统的GAN中的判别器的作用相似。他会判别出音频是原音频还是经过转换得到的。与De和En相似,Dis也是由线性层堆叠而成,他包含输入层,3个隐藏层和输出层,大小分别为40,512,1。同样每层也用ReLU函数激活。

转换方法

在这里插入图片描述

转换方法是先将原说话人的音频特征 x , y x,y x,y音频送入En,得到 S x S_{x} Sx S y S_{y} Sy,然后进行AdaIN改变准换分布,生成特征表示 t t t 接着使用De从t中得出音频特征。生成的 x Z 1 → Z 2 \quad x_{Z_{1} \rightarrow Z_{2}} xZ1Z2包含了目标说话人的语音风格 z 2 z_{2} z2,以及原说话人的音频特征 x 1 x_{1} x1

S x = En ⁡ ( x ) , S y = En ⁡ ( y ) , t = Ad ⁡ a I N ( S x , S y ) , x Z 1 → Z 2 = D e ( t ) S_{x}=\operatorname{En}(x), \quad S_{y}=\operatorname{En}(y), \quad t=\operatorname{Ad} a I N\left(S_{x}, S_{y}\right), \quad x_{Z_{1} \rightarrow Z_{2}}=D e(t) Sx=En(x),Sy=En(y),t=AdaIN(Sx,Sy),xZ1Z2=De(t)

训练和测试方法

训练:为了实现多对多转换和零次转换,使用非平行数据集进行训练。首先针对两个说话人 Z 1 , Z 2 Z_{1}, Z_{2} Z1,Z2,随机选取两段音频特征 x , y x,y x,y。使用上述的转换方法将 x x x Z 1 Z_{1} Z1转换为 Z 2 Z_{2} Z2,得到 X Z 1 − > Z 2 X_{Z_{1}->Z_{2}} XZ1>Z2,接着选取原说话人 Z 1 Z_{1} Z1另一个特征 x 2 x_{2} x2,将得到的音频 X Z 1 − > Z 2 X_{Z_{1}->Z_{2}} XZ1>Z2再转换为 Z 2 Z_{2} Z2风格,得到 X Z 1 − > Z 2 − > Z 1 X_{Z_{1}->Z_{2}->Z_{1}} XZ1>Z2>Z1

其中判别器需要判断的应该是第一次转换得到的 X Z 1 − > Z 2 X_{Z_{1}->Z_{2}} XZ1>Z2

同理我们可以生成 X Z 2 − > Z 1 − > Z 2 X_{Z_{2}->Z_{1}->Z_{2}} XZ2>Z1>Z2
(img-4ss2E5Jn-1589097804886)(D:%5C%E7%85%A7%E7%89%87%5Ctypora%5CAdaGAN%5C1588924377394.png)]

Loss函数

整个模型的Loss函数为

L total = L adv ( En ⁡ , D e ) + L adv ( Dis ) + λ 1 L cyc + λ 2 L C X → Y + λ 3 L C Y → X + λ 4 L s t y X → Y + λ 5 L s t y Y → X \mathcal{L}_{\text {total}}=\mathcal{L}_{\text {adv}}(\operatorname{En}, D e)+\mathcal{L}_{\text {adv}}(\text {Dis})+\lambda_{1} \mathcal{L}_{\text {cyc}}+\lambda_{2} \mathcal{L}_{C_{X \rightarrow Y}}+\lambda_{3} \mathcal{L}_{C_{Y \rightarrow X}}+\lambda_{4} \mathcal{L}_{s t y_{X \rightarrow Y}}+\lambda_{5} \mathcal{L}_{s t y_{Y \rightarrow X}} Ltotal=Ladv(En,De)+Ladv(Dis)+λ1Lcyc+λ2LCXY+λ3LCYX+λ4LstyXY+λ5LstyYX

文章使用的超参数为 λ 1 = 10 , λ 2 = 2 , λ 3 = 2 , λ 4 = 3 , λ 5 = 3 \lambda_{1}=10, \lambda_{2}=2, \lambda_{3}=2, \lambda_{4}=3,\lambda_{5}=3 λ1=10,λ2=2,λ3=2,λ4=3,λ5=3

Adversarial loss

Adversarial loss包括 L adv ( En ⁡ , D e ) \mathcal{L}_{\text {adv}}(\operatorname{En}, D e) Ladv(En,De) L adv ( Dis ) \mathcal{L}_{\text {adv}}(\text {Dis}) Ladv(Dis),这个Loss计算的是转换转换得到的数据与元数据的差别。

L a d v ( E n , D e ) = ( Dis ⁡ ( y Z 2 → Z 1 ) − 1 ) 2 + ( Dis ⁡ ( x Z 1 → Z 2 ) − 1 ) 2 \mathcal{L}_{a d v}(E n, D e)=\left(\operatorname{Dis}\left(y_{Z_{2} \rightarrow Z_{1}}\right)-1\right)^{2}+\left(\operatorname{Dis}\left(x_{Z_{1} \rightarrow Z_{2}}\right)-1\right)^{2} Ladv(En,De)=(Dis(yZ2Z1)1)2+(Dis(xZ1Z2)1)2

L a d v ( D i s ) = ( Dis ⁡ ( x 1 ) − 1 ) 2 + ( D i s ( y 1 ) − 1 ) 2 \mathcal{L}_{a d v}(D i s)=\left(\operatorname{Dis}\left(x_{1}\right)-1\right)^{2}+\left(D i s\left(y_{1}\right)-1\right)^{2} Ladv(Dis)=(Dis(x1)1)2+(Dis(y1)1)2

Reconstruction Loss

只使用Adversarial loss的话,可能会丢失声学内容。这里使用Reconstruction Loss来尽可能保留声学内容。

L c y c = ∥ x Z 1 → Z 2 → Z 1 − x 1 ∥ 1 + ∥ y Z 2 → Z 1 → Z 2 − y 1 ∥ 1 \mathcal{L}_{c y c}=\left\|x_{Z_{1} \rightarrow Z_{2} \rightarrow Z_{1}}-x_{1}\right\|_{1}+\left\|y_{Z_{2} \rightarrow Z_{1} \rightarrow Z_{2}}-y_{1}\right\|_{1} Lcyc=xZ1Z2Z1x11+yZ2Z1Z2y11

Content Preseve Loss

这个Loss是为了在AdaIn期间保留声学内容,同时保证我们的en和de没有噪音

L C X → Y = ∥ S x Z 1 → Z 2 − t 1 ∥ 1 \mathcal{L}_{C_{X \rightarrow Y}}=\left\|S_{x_{Z_{1} \rightarrow Z_{2}}}-t_{1}\right\|_{1} LCXY=SxZ1Z2t11

Style transfer Loss

这个AdaGAN的核心,有助于实现多对多转换和零次转换。在相同的声学内容下,尽可能地保证说话风格的潜在空间在相同的分布。

L s t y X → Y = ∥ t 2 − S X 1 ∥ 1 \mathcal{L}_{s t y_{X_{\rightarrow} Y}}=\left\|t_{2}-S_{X_{1}}\right\|_{1} LstyXY=t2SX11

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值