![基于STARWGAN-GP和x向量的多对多说话人转换方法与流程](http://img.xjishu.com/img/zl/2019/3/12/2051813054388.gif)
本发明涉及一种多对多说话人转换方法,特别是涉及一种基于starwgan-gp和x向量的多对多说话人转换方法。
背景技术:
:语音转换是语音信号处理领域的研究分支,是在语音分析、识别和合成的研究基础上发展与延伸的。语音转换的目标是改变源说话人的语音个性特征,使之具有目标说话人的语音个性特征,也就是使一个人说的语音经过转换后听起来像是另一个人说的语音,同时保留语义。语音转换技术经过多年的研究,已经涌现了很多的经典转换方法。其中包括高斯混合模型(gaussianmixedmodel,gmm)、递归神经网络(recurrentneuralnetwork,rnn)、深度神经网络(deepneuralnetworks,dnn)等大多数的语音转换方法。但是这些语音转换方法大多要求用于训练的语料库是平行文本,即源说话人和目标说话人需要发出语音内容、语音时长相同的句子,并且发音节奏和情绪等尽量一致。然而训练时语音特征参数对齐的准确性会成为语音转换性能的一种制约。此外在跨语种转换、医疗辅助患者语音转换等实际应用中也无法获取平行语音。因此,无论从语音转换系统的通用性还是实用性来考虑,非平行文本条件下语音转换方法的研究都具有极大的实际意义和应用价值。现有的非平行文本条件下的语音转换方法有基于循环一致对抗网络(cycle-consistentadversarialnetworks,cycle-gan)的方法、基于条件变分自编码器(conditionalvariationalauto-encoder,c-vae)的方法等。基于c-vae模型的语音转换方法,直接利用说话人的身份标签建立语音转换系统,其中编码器对语音实现语义和个性信息的分离,解码器通过语义和说话人身份标签来实现语音的重构,从而可以解除对平行文本的依赖。但是由于c-vae基于理想假设,认为观察到的数据通常遵循高斯分布,导致解码器的输出语音过度平滑,转换后的语音质量不高。基于cycle-gan模型的语音转换方法利用对抗性损失和循环一致损失,同时学习声学特征的正映射和逆映射,可以有效解决过平滑问题,改善转换语音质量,但是cycle-gan只能实现一对一的语音转换。基于stargan模型的语音转换方法同时具有c-vae和cycle-gan的优点,由于该方法的生成器具有编解码结构,可以同时学习多对多映射,生成器输出的属性由说话人身份标签控制,因此可以实现非平行下多对多的语音转换。stargan在训练过程中,由于生成对抗网络(generativeadversarialnetwork,gan)存在训练不稳定、模式丢失等问题,随着鉴别器被训练得越来越好,生成器无法与其抗衡。并且说话人的身份标签并不能充分表达说话人的个性化特征,缺少了能够充分表达说话人个性化特征的手段,因此,转换后的语音在语音质量和个性相似度上仍有待提升。技术实现要素:发明目的:本发明要解决的技术问题是提供一种基于starwgan-gp和x向量的多对多说话人转换方法,解决了说话人个性化特征表达不够充分的缺陷,并且克服了现有的gan训练不稳定、梯度消失等问题,不仅进一步有效地提高了转换后语音的个性相似度,而且提升了转换语音的质量。技术方案:本发明所述的基于starwgan-gp和x向量的多对多说话人转换方法,包括训练阶段和转换阶段,所述训练阶段包括以下步骤:(1.1)获取训练语料,训练语料由多名说话人的语料组成,包含源说话人和目标说话人;(1.2)将所述的训练语料通过world语音分析/合成模型,提取出各说话人语句的频谱包络特征x、基频特征、以及代表各说话人个性化特征的x向量x-vector;(1.3)将源说话人的频谱包络特征xs、目标说话人的频谱包络特征xt、源说话人标签cs和x向量x-vectors,以及目标说话人标签ct、x向量x-vectort,输入到starwgan-gp网络进行训练,所述的starwgan-gp网络由生成器g、鉴别器d和分类器c组成,所述的生成器g由编码网络和解码网络构成;(1.4)训练过程使生成器的损失函数、鉴别器的损失函数、分类器的损失函数尽量小,直至设置的迭代次数,得到训练好的starwgan-gp网络;(1.5)构建从源说话人的语音基频到目标说话人的语音基频的基频转换函数;所述转换阶段包括以下步骤:(2.1)将待转换语料中源说话人的语音通过world语音分析/合成模型提取出频谱包络特征xs′、非周期性特征和基频;(2.2)将上述源说话人频谱包络特征xs′、目标说话人标签特征ct′、目标说话人x向量x-vectort′输入(1.4)中训练好的starwgan-gp网络,重构出目标说话人频谱包络特征xtc′;(2.3)通过(1.5)得到的基频转换函数,将(2.1)中提取出的源说话人基频转换为目标说话人的基频;(2.4)将(2.2)中得到的目标说话人频谱包络特征xtc′、(2.3)中得到的目标说话人的基频和(2.1)中提取的非周期性特征通过world语音分析/合成模型,合成得到转换后的说话人语音。进一步的,步骤(1.3)和(1.4)中的训练过程包括以下步骤:(1)将源说话人的频谱包络特征xs输入生成器g的编码网络,得到说话人无关的语义特征g(xs);(2)将上述得到的语义特征g(xs)与目标说话人的标签特征ct、目标说话人的x向量x-vectort一同输入到生成器g的解码网络进行训练,在训练过程中最小化生成器g的损失函数,从而得到目标说话人的频谱包络特征xtc;(3)将上述得到的目标说话人的频谱包络特征xtc,再次输入到生成器g的编码网络,得到说话人无关的语义特征g(xtc);(4)将上述得到的语义特征g(xtc)与源说话人标签特征cs、源说话人x向量x-vectors输入到生成器g的解码网络进行训练,在训练过程中最小化生成器g的损失函数,得到重构源说话人的频谱包络特征xsc;(5)将目标说话人的频谱包络特征xtc、目标说话人频谱特征xt,以及目标说话人的标签特征ct一同输入到鉴别器d中进行训练,最小化鉴别器的损失函数;(6)将目标说话人的频谱包络特征xtc和目标说话人的频谱包络特征xt输入分类器c进行训练,最小化分类器的损失函数;(7)回到步骤(1)重复上述步骤,直至达到迭代次数,从而得到训练好的starwgan-gp网络。进一步的,步骤(2.2)中的输入过程包括以下步骤:(1)将源说话人的频谱包络特征xs′输入生成器g的编码网络,得到说话人无关的语义特征g(xs)′;(2)将上述得到的语义特征g(xs)′与目标说话人的标签特征ct′、目标说话人的x向量x-vectort′一同输入到生成器g的解码网络,得到目标说话人的频谱包络特征xtc′。进一步的,所述的生成器g采用二维卷积神经网络,损失函数为:其中,λcls>=0、λcyc>=0和λid>=0是正则化参数,分别表示分类损失、循环一致性损失和特征映射损失的权重,lcyc(g)、lid(g)分别表示生成器的对抗损失、分类器优化生成器的分类损失、循环一致损失、特征映射损失;所述的鉴别器d采用二维卷积神经网络,损失函数为:其中,d(xt,ct)表示鉴别器d判别真实频谱特征,g(xs,ct,x-vectort)表示生成器g生成的目标说话人频谱特征,d(g(xs,ct,x-vectort),ct)表示鉴别器判别生成的频谱特征,表示生成器g生成的概率分布的期望,表示真实概率分布的期望,λ为梯度惩罚参数,用来调节梯度惩罚的力度,grad_pen为梯度惩罚项;所述的分类器采用二维卷积神经网络c,损失函数为:其中,pc(ct|xt)表示分类器判别目标说话人特征为标签ct的真实频谱的概率。进一步的,其中,表示生成器生成的概率分布的期望,表示生成器生成频谱特征;其中,pc(ct|g(xs,ct,x-vectort))表示分类器判别生成目标说话人频谱标签属于ct的概率,g(xs,ct,x-vectort)表示生成器生成的目标说话人频谱;其中,g(g(xs,ct,x-vectort),cs)为重构的源说话人频谱特征,为重构源说话人频谱和真实源说话人频谱的损失期望;其中,g(xs,cs,x-vectors)为源说话人频谱、说话人标签和x向量,输入到生成器后得到的源说话人频谱特征,为xs和g(xs,cs,x-vectors)的损失期望。进一步的,所述的生成器g的编码网络包括5个卷积层,5个卷积层的过滤器大小分别为3*9、4*8、4*8、3*5、9*5,步长分别为1*1、2*2、2*2、1*1、9*1,过滤器深度分别为32、64、128、64、5;生成器g的解码网络包括5个反卷积层,5个反卷积层的过滤器大小分别为9*5、3*5、4*8、4*8、3*9,步长分别为9*1、1*1、2*2、2*2、1*1,过滤器深度分别为64、128、64、32、1。进一步的,所述的鉴别器d包括5个卷积层,5个卷积层的过滤器大小分别为3*9、3*8、3*8、3*6、36*5,步长分别为1*1、1*2、1*2、1*2、36*1,过滤器深度分别为32、32、32、32、1。进一步的,所述的分类器c包括5个卷积层,5个卷积层的过滤器大小分别为4*4、4*4、4*4、3*4、1*4,步长分别为2*2、2*2、2*2、1*2、1*2,过滤器深度分别为8、16、32、16、4。进一步的,所述的基频转换函数为:其中,μs和σs分别为源说话人的基频在对数域的均值和方差,μt和σt分别为目标说话人的基频在对数域的均值和方差,为源说话人的对数基频,logf0t′为转换后对数基频。有益效果:本方法能够使用starwgan-gp与x-vector向量相结合来实现语音转换,加入了表征性能和实用性能更好的x-vector向量来表征说话人的个性化特征,使用wgan-gp来替换gan,从而解决gan训练不稳定、梯度消失等问题,wgan-gp使用wassertein距离,又称推土机距离(earth-mover,em)来替换js散度(jensen-shannondivergence,js),在鉴别器的损失函数中增加梯度惩罚,从而构建更加稳定、收敛速度更快的网络。因此本方法与现有方法相比,能够进一步提升转换后语音的个性相似度和语音质量,实现了一种高质量的语音转换方法。此外,本方法能够解除对平行文本的依赖,实现了非平行文本条件下的语音转换,而且训练过程不需要任何对齐过程,提高了语音转换系统的通用性和实用性,本方法还可以将多个源-目标说话人对的转换系统整合在一个转换模型中,即实现多说话人对多说话人转换。本方法在跨语种语音转换、电影配音、语音翻译等领域有较好的应用前景。附图说明图1是本方法的整体流程图。具体实施方式如图1所示,本发明所述高质量语音转换方法分为两个部分:训练部分用于得到语音转换所需的参数和转换函数,而转换部分用于实现源说话人语音转换为目标说话人语音。训练阶段实施步骤为:1.1)获取非平行文本的训练语料,训练语料是多名说话人的语料,包含源说话人和目标说话人。训练语料取自vcc2018语音语料库。该语料库的训练集中有6个男性和6个女性说话人,每个说话人有81句语料。本方法既可以在平行文本下实现转换,也可以在非平行文本下实现转换,所以这些训练语料也可以是非平行文本的。1.2)训练语料通过world语音分析/合成模型提取出各说话人语句的频谱包络特征x、非周期性特征、对数基频logf0。同时提取出代表各说话人个性化特征的x向量x-vector。其中由于快速傅氏变换(fastfouriertransformation,fft)长度设置为1024,因此得到的频谱包络特征x和非周期性特征均为1024/2+1=513维。每一个语音块有512帧,从频谱包络特征中提取36维的梅尔倒谱系数(mcep)特征,一次训练时取8个语音块。因此,训练语料的维度为8*36*512。在实际应用中,待转换者的语音长度相对较短,使用传统的说话人表征i向量i-vector转换语音效果一般。x-vector是利用dnn提取的一种新型低维定长嵌入,由于dnn具有极强的特征提取能力,对于短时语音,x-vector具有更好的表征能力。该网络是在kaldi语音识别工具中使用nnet3神经网络库实现。x-vector和i-vector的主要区别在于提取方法的不同,提取x-vector的系统结构如表1示,x-vector系统由frame层、statspooling层、segment层以及softmax层构成。t表示输入所有语音帧,n表示训练说话人的数量,训练语料取自vcc2018语音语料库,所以n为12。x-vector系统中的dnn具有时延结构,首先拼接上下文5帧为1个新的帧集合,再以新的帧集合为中心,拼接上下文4帧为1个新的帧集合,以此类推到拼接15帧为新的帧集合作为dnn的输入,输入的特征是23维mfcc特征,帧长为25ms。statspooling层聚合frame5层的所有t帧输出,并计算均值和标准差。统计量为1500维向量,在每个输入语音段上计算一次,然后将这些统计信息连接在一起传递到segment层。最后由softmax层输出一个后验概率输出神经元的个数和训练集中说话人个数一致。x-vector系统使用下述公式对训练的说话人进行分类。dnn网络训练的损失函数为:上述公式中n表示输入的语音,k表示各个说话人,表示softmax层给出输入语音属于说话人k的后验概率。dnk表示只有当语音的说话人为k时才等于1,否则为0。dnn不仅仅是一个分类器,而且是一个特征提取器和分类器的结合,每一层都有极强的特征提取能力。经过训练以后,segment层可以用来提取语音的x-vector,如表1所示,利用剩余结构在segment6处提取512维的x-vector。当x-vector提取好以后,和i-vector一样,利用概率线性判别分析来计算x-vector之间的相似度。表1提取x-vector的系统结构表层层上下文总上下文输入×输出frame1[t–2,t+2]5120×512frame2{t-2,t,t+2}91536×512frame3{t–3,t,t+3}151536×512frame4{t}15512×512frame5{t}15512×1500statspooling[0,t)t1500t×3000segment6{0}t3000×512segment7{0}t512×512softmax{0}t512×n1.3)本实施例中的starwgan-gp网络以cycle-gan模型为基础,通过进一步改善gan的结构,以及结合分类器,来提升cycle-gan效果。starwgan-gp由三部分组成:一个产生真实的频谱的生成器g,一个判断输入是真实的频谱还是生成的频谱的鉴别器d,以及一个判别生成频谱的标签是否属于ct的分类器c。starwgan-gp网络的目标函数为:其中,ig(g)为生成器的损失函数:其中,λcls>=0、λcyc>=0和λid>=0是正则化参数,分别表示分类损失、循环一致性损失和特征映射损失的权重,lcyc(g)、lid(g)分别表示生成器的对抗损失、分类器优化生成器的分类损失、循环一致损失、特征映射损失;鉴别器的损失函数为:其中,d(xt,ct)表示鉴别器d判别真实频谱特征,g(xs,ct,x-vectort)表示生成器g生成的目标说话人频谱特征,d(g(xs,ct,x-vectort),ct)表示鉴别器判别生成的频谱特征,表示生成器g生成的概率分布的期望,表示真实概率分布的期望。λ为梯度惩罚参数,可以用来调节梯度惩罚的力度。grad_pen为梯度惩罚项。分类器二维卷积神经c网络的损失函数为:其中,pc(ct|xt)表示分类器判别目标说话人特征为标签ct的真实频谱的概率。1.4)将1.2)中提取的源说话人频谱包络特征xs与目标说话人标签特征ct、x向量x-vectort作为联合特征(xs,ct,x-vectort)输入生成器进行训练。训练生成器,使生成器的损失函数lg尽量小,得到生成目标说话人频谱包络特征xtc。生成器采用二维卷积神经网络,由编解码网络构成。编码器网络包括5个卷积层,5个卷积层的过滤器大小分别为3*9、4*8、4*8、3*5、9*5,步长分别为1*1、2*2、2*2、1*1、9*1,过滤器深度分别为32、64、128、64、5。解码器网络包括5个反卷积层,5个反卷积层的过滤器大小分别为9*5、3*5、4*8、4*8、3*9,步长分别为9*1、1*1、2*2、2*2、1*1,过滤器深度分别为64、128、64、32、1。1.5)将1.4)得到的生成目标说话人频谱包络特征xtc和1.2)得到的训练语料的目标说话人频谱包络特征xt以及目标说话人标签ct,一同作为鉴别器的输入,训练鉴别器,使鉴别器的损失函数尽可能小。鉴别器采用二维卷积神经网络,包括5个卷积层,5个卷积层的过滤器大小分别为3*9、3*8、3*8、3*6、36*5,步长分别为1*1、1*2、1*2、1*2、36*1,过滤器深度分别为32、32、32、32、1。starwgan-gp用wgan-gp来替换stargan的生成对抗网络,原始gan在训练中存在收敛速度慢、训练不稳定等问题,鉴别器训练太好,生成器的梯度会消失,ig(g)降不下去;鉴别器训练不好,会使生成器的梯度不准。wgan-gp使用em距离代替gan中的js散度,从而解决训练不稳定的问题。此外,在wgan基础上设置一个额外的梯度惩罚项grad_pen来实现鉴别器的梯度值不超过设定值k,从而解决wgan中梯度消失爆炸问题,进一步提高训练的稳定性。wgan通过引入em距离来衡量真实分布和生成分布之间的距离,通过训练可以使生成的频谱特征更加接近目标说话人的频谱特征。等式(1)为em距离,π(pr,pg)是真实频谱分布pr和生成频谱分布pg组合起来的所有可能的联合分布,对于每一个可能的联合分布γ,可以从中采样(xt,xtc):γ得到一个样本xt和xtc,并计算这对样本的距离||xt-xtc||。所以可以计算得到在联合γ下的样本对距离的期望值在所有可能的联合分布中能够对这个期望所取到的下界就是em距离。相比传统gan中的交叉熵,em距离可以提供更加有意义的梯度。在训练过程中,em距离的数值可以指示模型训练的优劣程度,当em距离数值越小,则wgan训练越好。wgan在处理梯度的lipschitz限制条件时,直接采用weightclipping,将鉴别器的网络参数独立限制到特定取值范围,如[-0.01,0.01],虽然可以实现lipschitz的限制条件,但会使网络的参数出现极端值,要么取最大值0.01,要么取最小值-0.01,鉴别器不能充分利用自身的模型能力,因此回传给生成器的梯度也会变差,当鉴别器是一个多层网络时,weightclipping还会引起梯度消失梯度爆炸问题。wgan-gp是对wgan的进一步改善,梯度惩罚(gradientpenalty,gp)是用来替换weightclipping,通过设置一个额外的梯度惩罚项,来实现鉴别器的梯度不超过设定值k。grad_pen=mse(norm-k)(3)上述公式中mse为平方差公式,为整个联合分布空间的采样,即梯度惩罚项grad_pen是求对应d的梯度与norm的平方差。鉴别器尽可能拉大真假样本的差距,希望梯度越大越好,变化幅度越大越好,所以当鉴别器在充分训练好以后,梯度norm会在k的附近。k是任意数,可设为1。梯度惩罚损失和wgan鉴别器的损失加权合并,得到wgan-gp的鉴别器的损失为:λ为梯度惩罚参数,用来调节梯度惩罚的力度。grad_pen从pr和pg的联合空间里采样。因此先随机采样一对说话人的真实频谱xt和生成频谱xtc,还有[0,1]的随机数:xt:pr,xtc:pg,eps:uniform[0,1](5)然后在真实频谱和生成频谱中按照随机数的比例插值采样,得到因此梯度惩罚损失函数为:鉴别器的损失函数优化目标为:1.6)在训练过程中最小化生成器的损失函数,包括生成器的对抗损失、循环一致损失、特征映射损失以及生成器的分类损失。其中,训练循环一致损失是为了使源说话人频谱特征xs在经过生成器g1和g2后,所重构的源说话人频谱特征xsc可以和xs尽可能保持一致。训练特征映射损失,是为了保证xs在经过生成器g1后说话人标签仍是cs。分类损失指分类器判别生成器所生成的目标说话人频谱xtc属于标签ct的概率损失。生成器的损失函数为:优化目标为:其中,λcls>=0、λcyc>=0和λid>=0是正则化参数,分别表示分类损失、循环一致性损失和特征映射损失的权重。x-vectors为源说话人的x向量,x-vectort为目标说话人的x向量。表示gan中生成器的对抗损失:和鉴别器的损失共同构成gan中常见的对抗损失,用来判别输入鉴别器的频谱是真实频谱还是生成频谱。在训练过程中尽可能小,生成器不断优化,直至生成能够以假乱真的频谱特征g(xs,ct,x-vectort),使得鉴别器难以判别真假。为分类器c用来优化生成器的分类损失:其中,pc(ct|g(xs,ct,x-vectort))表示分类器判别生成目标说话人频谱标签属于ct的概率,g(xs,ct,x-vectort)表示生成器生成的目标说话人频谱。在训练过程中,尽可能小,使得生成器g生成的频谱g(xs,ct,x-vectort)能够被分类器正确分类为标签ct。lcyc(g)和lid(g)借鉴cycle-gan模型中生成器的损失,lcyc(g)为生成器g中循环一致损失:其中,g(g(xs,ct,x-vectort),cs)为重构的源说话人频谱特征,为重构源说话人频谱和真实源说话人频谱的损失期望。在训练生成器的损失中,lcyc(g)尽可能小,使生成目标频谱g(xs,ct,x-vectort)、源说话人标签cs再次输入到生成器后,得到的重构源说话人语音频谱xsc尽可能和xs相似。通过训练lcyc(g),可以有效保证说话人语音的语义特征,在经过生成器的编码以后不被损失。lid(g)为生成器g的特征映射损失:其中,g(xs,cs,x-vectors)为源说话人频谱、说话人标签和x向量,输入到生成器后得到的源说话人频谱特征,为xs和g(xs,cs,x-vectors)的损失期望。训练lid(g),可以有效保证输入语音的标签cs在输入生成器后仍保持不变。1.7)将上述生成的目标说话人频谱包络特征xtc和目标说话人的频谱包络特征xt输入分类器进行训练,最小化分类器的损失函数。分类器采用二维卷积神经网络c,包括5个卷积层,5个卷积层的过滤器大小分别为4*4、4*4、4*4、3*4、1*4,步长分别为2*2、2*2、2*2、1*2、1*2,过滤器深度分别为8、16、32、16、4。分类器二维卷积神经网络的损失函数为:优化目标为:1.8)重复1.4)、1.5)、1.6)和1.7),直至达到迭代次数,从而得到训练好的starwgan-gp网络,其中生成器参数φ、鉴别器参数θ、分类器参数ψ为训练好的参数。由于神经网络具体设置不同以及实验设备性能不同,选择的迭代次数也各不相同。本实验中选择迭代次数为20000次。1.9)使用对数基频logf0的均值和方差建立基音频率转换关系,统计出每个说话人的对数基频的均值和方差,利用对数域线性变换将源说话人对数基频logf0s转换得到目标说话人对数基频logf0t′。基频转换函数为:其中,μs和σs分别为源说话人的基频在对数域的均值和方差,μt和σt分别为目标说话人的基频在对数域的均值和方差。转换阶段实施步骤为:2.1)将源说话人语音通过world语音分析/合成模型,提取源说话人的不同语句的频谱包络特征xs′、非周期性特征、基频。其中由于快速傅氏变换(fft)长度设置为1024,因此得到的频谱包络特征x和非周期性特征均为1024/2+1=513维。2.2)将2.1)提取的源说话人语音的频谱包络特征xs′与目标说话人标签特征ct′、目标说话人x向量x-vectort′作为联合特征(xs′,ct′,x-vectort′)输入1.8)训练的starwgan-gp从而重构出目标说话人频谱包络特征xtc′。2.3)通过1.9)得到的基音频率转换函数,将2.1)中提取出的源说话人基频转换为目标说话人的基频。2.4)将2.2)中得到的目标说话人频谱包络特征xtc′、2.3)中得到的目标说话人的基频和2.1)提取的非周期性特征通过world语音分析/合成模型合成转换后的说话人语音。本方法使用starwgan-gp与x-vector向量相结合来实现语音转换系统,x-vector向量是利用深度神经网络(dnn)提取的一种新型低维定长嵌入,对于短时话语,x-vector向量的表征性能优于i-vector向量,因此实用性更好。由于gan的损失函数用js散度表示,存在训练不稳定、模式丢失等问题,随着鉴别器被训练得越来越好,生成器无法与其抗衡。wgan-gp用em距离替换js散度,在鉴别器的损失函数中增加梯度惩罚,从而构建更加稳定、收敛速度更快的网络。同时starwgan-gp网络可以有效克服c-vae中过平滑问题,因此本方法与现有方法相比,能够进一步提升转换后语音的个性相似度和语音质量。当前第1页12