One-shot VC by Separating Speaker and Content Representations with Instance Normalization阅读

会议:2019 interspeech
单位:国立台湾大学
作者:Ju-chieh Chou, Hung-yi Lee

过往有许多关于音色转换的研究主要集中在并行语料集的基础上的,已经能够实现将一种的音色转换成其多种其他人音色(例如讯飞留声,百度地图个性化声音导航等),而且效果比较不错。但是这种方案有明显的缺陷,包括:(1)训练数据要求较严格(并行数据)。(2)只能转换处于训练集内的人的音色。基于这些问题,本文提出了一种只需要一句原始音频加一句目标音色音频就能够进行音色转换的方案,甚至于这些音色不需要出现在训练集中。本文方案的主要思想就是通过 instance normalization等技术进行音色和内容分离,然后再重组音色和内容,达到生成目标音色音频的目的。通过各种主观及客观方法评估,证明本文方案效果较好。

关于VC的研究大致可以分为两类,一种是基于并行数据的监督学习方法,一种是基于非并行数据的非监督方法(本文方案)。使用监督方案的优点在于语料足够的话,可以生成相似度很高的音频,缺点在于语料收集难度太大,计算量大(针对每个新的音色都要训练模型)。并且由于需要进行对齐,某些差别很大的音频会导致对齐模型很难收敛。

非监督方案由于数据收集容易,最近是一个比较热门的研究方向。主要有几种方法,一种是基于ASR的,方法是先将音频用ASR转换成音素,然后再用音素合成不同目标的音频。这种方案严重依赖ASR的准确率。另外一种方案是基于VAE或者GAN(如:StarGAN)的,这种方案能够取得较好的结果,但是缺点是只能转换训练集内的人的音频。

一段语音通常包括静态信息和动态信息,其中静态信息指的是音色等固有信息,通常在一句话的任意时间片段内都保持不变,动态信息指语言内容信息,随音频时间改变。本文假设音频内容和音色是可分离的,为了实现音色和内容分离,本文提出的模型如图1。

主要包括三个部分:(1)Speaker Encoder,该模块用于提出说话人的音色信息。(2)Content Encoder模块,该模块用于提取音频的内容信息,同时利用 instance normalization方法进行音色等静态信息的去除。(3)Decoder模块,该模块用于组合Speaker Encoder模块和Cotent Encoder模块生成的特征,生成目标音频特征,在该模块中,应用adaptive instance normalization将音色信息加入到音频内容信息上。

VAE

loss函数包含两部分,decoder重建损失Lrec

和 content encoder的损失Lkl

令x是语音声学特征片段,X是训练集中所有声学特征段的集合。Es是代表Speaker Encoder,Ec表示Content Encoder,D表示Decoder。Es生成的说话者特征用zs表示,Ec生成的内容特征用zc表示。假设p(zc|x)是条件独立的标准高斯分布,那么重构误差可以用公式1表示,假设X服从均匀分布,从X均匀采样x,为了使得p(zc|x)服从标准高斯分布,即接近分布N(0,I),最小化KL散度。由于假设为标准高斯分布,KL散度可简化(为计算L2正则化)。

                                                                                   VAE的损失函数

本文设置lambda_rec=10, lambda_kl=1

在content decoder中使用不带仿射变换的Instance normalization很容易就能去除音频中的静态信息,防止content decoder学习域信息,这种技术促使模型从speaker encoder中提取说话人信息和从content encoder中提取content 信息,这种技术借鉴于视觉任务的风格迁移。具体计算公式如下。

https://upload-images.jianshu.io/upload_images/12976336-cac5f8fed6c09f79.png?imageMogr2/auto-orient/strip|imageView2/2/w/413

均值方差计算公式

https://upload-images.jianshu.io/upload_images/12976336-3ee9ae0b2c9ecfa8.png?imageMogr2/auto-orient/strip|imageView2/2/w/257

归一化计算公式

其中,c表示第c个channel,W表示权重集合,w表示第w个权重,无仿射变换即如公式5,归一化时,不加gama和beta。

    为了使得能够从Es中获取说话者信息,通过在解码器D中加adaptive instance normalization (adaIN) 层来获取说话者信息。adaIN,decoder首先利用IN将全局信息标准化,然后the speaker encoder提供了全局信息,adaIN公式如下:

https://upload-images.jianshu.io/upload_images/12976336-bba5390cf9bc8f8c.png?imageMogr2/auto-orient/strip|imageView2/2/w/335

每一个通道的gama和beta是speaker encoder的输出的线性转换

本文的模型涉及的3个模块的架构如图2所示。

  在Encoder和Decoder上,都是用1维卷积实现的,其中Speaker Encoder和Content Encoder都用了ConvBank,用于扩大感受野,抓取长时信息。Instance normalization用于Content Encoder,用来去除全局静态信息。PixelShufflfle1d用在Decoder中,用于模型上采样。 adaIN用于Decoder引入Speaker Encoder的信息。Speaker representation zs是被一个残差DNN处理得到的,然后在进入每一个adaIN之前通过一个affine层转换

·convBank是引入自2017年的模型,Tactron首次提出的CBHG中的一个模块,相当于模型先使用一系列的一位卷积,有一系列的filter,大小从1k,形成一个 Conv1D Bank,作用相当于使用了一系列的, unigrams(NLP中的一元模型)bigrams直到k-grams,尽可能多的拿到输入序列的从localcontext的信息

Tactron一个端到端的语音合成模型,基于seq2seq model with attention,它包括一个encoder, attention-based decoder, a post-processing net.

https://blog.csdn.net/wr1997/article/details/105288128

·PixelShufflfle1d用在Decoder中,用于模型上采样

Real-Time Single Image and Video Super-Resolution Using an Efficient Sub-Pixel Convolutional Neural

https://blog.csdn.net/weinidakaishijian/article/details/75577010

取自另一篇关于实时单图片和视频超分辨率的一种使用压像素卷积的神经网络

提出了一个能够实现1080p视频实时SR的CNN,一个新型的CNN架构,在LR(低分辨率)空间中提取特征图,并且引入了一个有效的子/压像素卷积层,学习一个升序的滤波器阵列,将最终的LR特征图升级到HR输出。

通过这样做,我们有效地更换SR管道中的手工双三次插值滤波器,并为每个特征图进行了专门训练的更复杂的升频滤波器,同时还降低了整个SR操作的计算复杂度。

 

在网络输出层才进行上采样的框架,与在输入层利用bicubic上采样的SRCNN相比,在训练和测试时都降低了复杂度。训练时,可以将输入的训练数据,预处理成shuffling操作前的格式,比如将21×21的单通道图,预处理成9个通道,7×7的图,这样在训练时,就不需要shuffling操作。

 

本文用的声学特征是Mel谱,处理前将音频进行的VAD(相当于前后静音剪切)处理,归一化音量,并将音频采样统一为24KHz。在生成Mel谱时,所用的FFT为2048,窗口大小为50ms,滑动距离为12.5ms,最终生成的Mel谱维度为512维。为了将最后输出的Mel谱转换维音频,需要先将Mel谱转换为线性谱,然后通过100次迭代Griffin-Lim算法得到音频。(这里作者借鉴了Tactron处理音频的方案)

分离度测试:

作者设计了一个简单的DNN网络用于测试声纹分类情况,以测试Instance Normalization层的有效性。结果如表1 IN层有效性测试结果(越高,说明越能分离出不同人),其中第一列是Content Encoder加了IN层,第二列是没加的,第三列是Content Encoder没加IN但是在Speaker Encoder层加了IN的,说明IN对于声纹的提取效果明显。

Ec without IN没有很高作者想可能是因为speaker encoder通过adaIN对于decoder中通道信息的控制有影响,因此模型更倾向通过speaker encoder学习说话人信息,而不是通过content encoder。为了确认这一点,把IN加载speaker encoder上,发现精确加大,说明这样的情况下content encoder中说话人信息更多了。由于speaker encoder中的average pooling结合IN层影响speaker encoder不再拥有完整的说话人信息,因此模型倾向于通过content encoder流动更多的说话人信息,提高分类精度。

作者还发现没有对于encoder添加任何限制,speaker encoder也能学到有关说话人的有意义的嵌入

作者对于说话人存在于和不存在于训练集的语句,都进行实验,对结果二维可视化,采用的是t-SNE算法,一种对每个数据点邻近分布建模为t分布的可视化算法,从结果图可以看出(x是女性,o是男性,音频段是从训练集和验证集中随机采样的)

(1)不同颜色不同的说话人分的比较开;
(2)seen和unseen的数据也分的开

 

t-SNE 算法对每个数据点近邻的分布进行建模,其中近邻是指相互靠近数据点的集合。在原始高维空间中,我们将高维空间建模为高斯分布,而在二维输出空间中,我们可以将其建模为 t 分布。该过程的目标是找到将高维空间映射到二维空间的变换,并且最小化所有点在这两个分布之间的差距。与高斯分布相比 t 分布有较长的尾部,这有助于数据点在二维空间中更均匀地分布。

作者还进行了两项客观测试

一是为了验证模型对于说话人特征的转换能力,使用全局方差global variance来可视化谱分布的结果

(Global variance 是用来从方差分布方面判断语音转换结果是否匹配目标说话人的)

该实验评估了四个转换例子的每个频率指数的全局方差:男性对男性,男性对女性,女性对男性,女性对女性。图中,黄色的是转换结果,绿色的是目标语音,可以看出生成的样本在方差分布上确实与目标说话人匹配。

二是为了说明模型保留了文本信息,通过对比转换前后音频的密度图,

图是一些热谱图的例子。模型能够对基频(f0)进行转换,并且在男到女转换和男到女转换中保留了原始的语音内容。

最后还有一项主观MOS测试

Mean Opinion Score 平均意见值,值常以衡量通信系统语音质量的重要指标。

这里没有baseline model的比对,直接做了结果与source,target相似度的比较,按比例用直方图展示出来。

其中每一对转换结果是由一句源音频和一句目标音频产生的,

对比结果有相同不相同,确定不确定组合的四个选项,图中转换后的音频与源音频不同,在与目标音频的相似程度上有较好的效果。

 

 

 

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值