论文地址:
ADAGAN:ADAPTIVE GAN FOR MANY-TO-MANY NON-PARALLEL VOICE CONVERSION
简介
AdaGAN是用于多对多的非平行数据的语音转换。相比较之前用于VC的GAN模型StarGAN,AdaGAN不仅在性能上有所提升,甚至AdaGAN可以实现零次转换(转换为训练集中没有的音色)。另外AdaGAN改进了训练网络,其计算代价很小。
Approach
problem formulation
先简单介绍一下需要用到的符号的含义
Z={Z1,Z2,…,Zn} 表示说话人的集合Zi表示第i个说话人
U={U1,U2,…,Um} 表示说话内容,Ui表示第i个说话内容
Xi∈pX(⋅∣Zi,Ui) 表示第i个说话人+第i个说话内容的特征
语音风格转换在于,我们有原说话人的音频特征(Z1,U1)和目标说话人对的音频特征(Z2,U2),我们想得到pX(⋅∣Z2,U1),因此我们需要学习到X^Z1→Z2,同时又要尽可能地保留U1。
这个过程可以表示为:
pX^Z1→Z2(⋅∣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(σXx−μX)+μY
x是训练集X中声学内容的特征,Y是目标说话人的说话风格。AdaIN首先使用方差和标准差规范化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音频送入En,得到Sx Sy,然后进行AdaIN改变准换分布,生成特征表示t 接着使用De从t中得出音频特征。生成的xZ1→Z2包含了目标说话人的语音风格z2,以及原说话人的音频特征x1
Sx=En(x),Sy=En(y),t=AdaIN(Sx,Sy),xZ1→Z2=De(t)
训练和测试方法

训练:为了实现多对多转换和零次转换,使用非平行数据集进行训练。首先针对两个说话人Z1,Z2,随机选取两段音频特征x,y。使用上述的转换方法将x从Z1转换为Z2,得到XZ1−>Z2,接着选取原说话人Z1另一个特征x2,将得到的音频XZ1−>Z2再转换为Z2风格,得到XZ1−>Z2−>Z1。
其中判别器需要判断的应该是第一次转换得到的XZ1−>Z2
同理我们可以生成XZ2−>Z1−>Z2

Loss函数
整个模型的Loss函数为
Ltotal=Ladv(En,De)+Ladv(Dis)+λ1Lcyc+λ2LCX→Y+λ3LCY→X+λ4LstyX→Y+λ5LstyY→X
文章使用的超参数为λ1=10,λ2=2,λ3=2,λ4=3,λ5=3
Adversarial loss
Adversarial loss包括Ladv(En,De)和Ladv(Dis),这个Loss计算的是转换转换得到的数据与元数据的差别。
Ladv(En,De)=(Dis(yZ2→Z1)−1)2+(Dis(xZ1→Z2)−1)2
Ladv(Dis)=(Dis(x1)−1)2+(Dis(y1)−1)2
Reconstruction Loss
只使用Adversarial loss的话,可能会丢失声学内容。这里使用Reconstruction Loss来尽可能保留声学内容。
Lcyc=∥xZ1→Z2→Z1−x1∥1+∥yZ2→Z1→Z2−y1∥1
Content Preseve Loss
这个Loss是为了在AdaIn期间保留声学内容,同时保证我们的en和de没有噪音
LCX→Y=∥∥SxZ1→Z2−t1∥∥1
Style transfer Loss
这个AdaGAN的核心,有助于实现多对多转换和零次转换。在相同的声学内容下,尽可能地保证说话风格的潜在空间在相同的分布。
LstyX→Y=∥t2−SX1∥1