p0002--WaveNet:a generate model for raw audio

单位:deepmind

时间:2016.9

 

Abstract

       WaveNet是生成语音的开山之作,模型是基于full probabilistic 和auto-agressive,在之前所有输出的基础上预测当前输出,可以在一秒内处理成百上千的数据。当用于TTS任务时,在英语和普通话上都可以生成比目前系统都要好的语音。WaveNet完成multi-speaker的语音合成,且高保真,如果给定speaker indentity,还可以在不同说话者之间转换。当用于音乐建模时,可以生成质量好的的音乐片段。它也可以被用于判别网络,返回一个音素识别的结果。

1.Introduction

      使用神经网络,在条件概率的基础上建模pixel 或者word的联合概率,以产生生成。 

      PixelRNN建模了上千个变量的分布,本文是想要在wideband raw audio waveform上实现时域的高分辨率(至少16KHZ)

     本文是基于PixelCNN做的,贡献点有:

  • wavenet可以生成主观自然的语音,之前TTS没有达到。
  • 为了实现原始语音生成所需的长时依赖,基于dialted casual conv开发一个新的架构,有很大的感知野。
  • conditioned on speaker identity ,模型可以生成不同的声音。
  • 在小的语音识别测试集上有很好的效果,因此生成其他类型的声音,诸如音乐也是可信的。

    wavenet有很广泛的应用,TTS, music, speech enhancement, voice conversion, source sep- aration.

2.WaveNet

       基于PiexelCNN提出公式(1),t时刻输出是基于之前所有时刻,条件概率分布被建模成一个stack of conv  layer,没有pooling层,输出和输入具有相同的维度。

     通过 一个softmax层输出Xt的类分布,然后通过数据的最大对数似然优化。

    因为对数似然比较听话,通过在验证集微调就可以知道模型是过拟合还是欠拟合。

2.1 dailted casual conv

    WaveNet主要的成分是因果卷积,通过因果卷积我们确保我们的模型不会违反数据建模的序列,t时间的预测不会用到(t+1)、(t+2)....图像上对应的因果卷积是masked conv,通过将mask的元素和conv filter的相乘以应用。对于语音这样一维的实现,可以通过将输出卷积移动几个时间步即可。

 

(因果卷积决定了如果一个神经元要看到很久之前的特征,就必须通过多层,这样会造成网络巨大,梯度消失等情况。基于此,提出了空洞卷积。空洞卷积通过固定长度跳过输入,实现更大的感知野 ,来源于原始的filter补零,但是更高效。让网络以一个比较粗糙的方式进行,和pooling、strided conv相像,但是输出和输入的维度一样。)

     训练时,所有时间步的预测可以同时进行,因为所有时间步的真值x是已知的。

     当用模型预测时,所有时间步是序列的,一个样本生成后被送入输入,以预测下一个输出。

     有因果卷积的模型没有循环连接,训起来比RNN更快,尤其是对于长的序列。但是问题是他们需要很多层,或者大的filter以增大感知野,本文用dialted conv增大感知野,但没有增加计算量,而且保证了输入输出维度相同。

 

    

     stacked  dialted conv可以在几层内实现很大的感知野,

      1,2,4,...,512,1,2,4,...,512,1,2,4,...,512.(3个block)

每一个这样的block有1024的感知野,是1*1024的一个更高效、非线性判别的替代。而且,这些模块的叠加进一步增大了模型的感知野和容量。

 2.2  softmax distribution

     对于离散的语音样本建模条件分布的方法是使用混合模型 ,比如混合密度模型,mixture of conditional Gaussian scale mixtures(条件高斯尺度混合的混合),【2016a】表明softmax分布效果更好,甚至在数据是隐式连续(比如像素的强弱或者语音值大小)的情况下。原因是对形状没有任何的假设,因此可以更容易的建模任意分布,类别的分布更加灵活。

     因为原始语音在每个时间步被存在16位整数中,softmax需要在每个时间步输出65536(2^16^)个概率值以建模可能的分布 。为了简化这一步,使用u-law编码,将数值量化成256个可能值。

-1<Xt<1, u=255,非线性的量化与线性量化相比可以完成更好的重建reconstruct,生成更接近raw  speech的语音。

 

 

2.3  gated activation units

  和pixel CNN的式子一样,

*是卷积操作,⭕️是逐元素的相乘,sigma是sigmoid函数

f--filter ,g-- gate

2.4 residual and skip connection

用残差和跳层链接以加速收敛,使得模型可以训练更多层。图4的残差模块在网络中堆叠多次。

 

2.5 conditional wavenet

给定一个额外的输入h,语音的条件概率分布可以表示为

 

       通过在变量上调整模型,我们可以引导模型生成我们想要的特征。比如说,在多说话者场景中,我们可以额外输入某个说话者的identity以挑出这个说话者。同样,在TTS任务中,我们需要将文本信息作为额外的输入。

      我们有2种方式对模型增加输入:全局条件和局部条件,global conditioning 就是输入一个对所有时间步的有影响的信号延迟表示h,比如说TTS重的speaker  embedding,这时公式变为

      对于local conditioning,是第二个时间序列ht,可能比原始语音的采样率更低,我们首先用transform conv net将时间序列映射成成一个新的时间序列,y=f(h) 新序列和raw speech具有相同的 分辨率,然后被用于激活单元。

 

Vfk*y是一个1*1卷积,。也可以用V*h作为transposed conv(反卷积)的替代, 在时间上重复这些值,这个方案在我们实验中结果差一点。

2.6 context stacks

     有很多不同的方式增加wavenet的感知野,增大dialtion  stage,  more layers, larger  filter, greater dialtion factor,或者他们的组合。还有一个方法是用单独的、小的context stack来处理语音信号中长的部分,然后locally conditions a larger wavenet以处理语音信号中小一点的部分。

     可以使用多个不同长度和隐藏层数目的context  stack,有更大感知野的 stack会有更小的隐藏层数目。context stack也会有pooling层以在更低的频率下工作。这些使得计算需求是一个合理的水平,并且和直觉是一致的----在长 的时间步上建模时间相关性需要较小的容量。

3.  experiment

    在三个不同的任务上做测试:multi-speaker speech generation(不依赖文本),TTS 以及 music audio modelling.

3.1  multi-speaker speech generation

     第一个实验我们用自由格式的语音生成,不依赖文本,使用多个英文说话者的数据集--CSTR VCTK(数据集有109个人的40小时数据)。仅在speaker上调节wavenet,以one-hot vector的形式把speaker ID送到模型中。

    因为模型不依赖文本,因此生成了像人类词语发音的连贯的逼真的语调,和生成language和image相似,样本乍一看像真的一样,但是细看却不自然。缺少大范围的相干性部分是因为感知野的尺寸限制在300ms(1024*3/16000=200ms),这意味着他只能记住最后生成的2-3个phoneme。

   一个单独的wavenet网络在给定一个speaker编码的情况下,有能力建模任何speaker的speech,说明它有能力捕捉到数据集中109个speaker的特性。而且发现增加说话者数目会有更好的验证集性能,这表明模型在各个说话者之间共享internal  representation。

   而且模型可以学习到voice之外的其他特征,比如acoustics and recording quality,breathing and mouth movements of the speakers.

 

3.2   text to speech

    使用和Google TTS一样的数据集,North American English(24.6h)和 Mandarin  Chinese(34.8h),都是由专业的女性录制。

    wavenet的local condition是输入文本驱动的语言特征(linguistic  feature),除了语言特征之外,还以对数基频

(log F0)为 条件。对于每种语言用单独的模型学习预测 log F0和语言特征的phoneme  duration(音素持续时间),wavenet的感知野是240ms。作为 example based  和 model based 的baseline,选用HMM-driven units selection concatenate  和基于LSTM-RNN的数据参数化(statistical parametric)的语音合成。在baseline和wavenet上训练同样的数据集和语言特征,因此结果是可以比较的。

       采用2种方式做subjective paired comparison test 和MOS test。在subjective paired comparison test中,受试者需要从一个语音对中选择一个听起来更自然的语音,如果没有偏好,可以选择中性;在MOS test中,受试者在听完语音之后,需要对它进行打分,1-5分。

       图5,注意看图注,说明wavenet在两种语言上都超过了baseline的性能。在语言模型上的wavenet可以合成自然的语音片段,但有时候会强调错误的词使得合成的韵律不自然,这可能是因为F0 contours的长时依赖性,wavenet的感知野是240ms,不足以捕捉到这样长时的依赖性。同时以语言特征和F0值为条件的wavenet就不存在这个问题,F0预测模型 在200hz(较低的频率)下运行,因此可以学到存在于F0 contours中的长时依赖性。 

    主观的5级MOS值打分的结果

 

3.3 music

    两个音乐数据集

  • MagnaTagATunedataset:包含200h的音乐,每28s被188个标签(诸如音乐的流派、乐器、节奏、音量、情绪)。

  • YouTube piano dataset:包含60h的钢琴solo,限制为1种乐器,因此对于模型学习更容易。

       评估模型比较难,但是发现扩大感知野对提升性能比较关键。但是即使有几秒的感受,模型也没有生成长时的一致性,这导致了在流派、乐器、节奏、情绪上的second-to-second变化。无条件的模型生成的样本通常也是和谐的令人舒服的。

      对于条件音乐模型,给定一系列的特殊标签,比如流派、乐器,生成音乐。和条件语音模型一样,插入和每个训练片段有关的二值向量表示的标签作为bias。通过输入样本期望的特性编码的binary  vector,使得可以在采样时控制模型的各方面的输出。

     我们在MagnaTagATune dataset上训练了这样的模型,尽管数据集上的标签非常的杂乱并且有很多遗漏,我们将相似的标签混合并且删除相关剪辑标签太少的片段之后发现模型也是可行的。

 

3.4   speech recognition

    wavenet不仅是生成模型,也可以用作判别模型用于语音识别。传统的语音识别是基于对数梅尔能量或者MFCCs,最近转向原始的语音。LSTM-RNN有一个关键的成分是可以关注到长时文本信息,在wavenet中的空洞卷积也是这个作用,可以在达到更大的感知野时比LSTM消耗更少的成本。

 

4. conclusion

   wavenet是autoagressive并且通过dialted  conv(随着层数增长,感知野迅速增长 ,对于建模长时依赖性很重要)实现因果卷积。在以全局信息(说话者特性)或者局部信息(语言特征)为条件时可以生成很好的语音。

      

 

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值