【论文学习笔记】《Parallel WaveNet: Fast High-Fidelity Speech Synthesis》

Parallel WaveNet 论文学习

  1 简介

        WaveNet 架构是当前语音合成领域中最先进的技术之一。在不同语言下,它合成的声音更为自然。然而,由于 WaveNet 在同一时间只能有序生成一个音频样本,因此难以真正运用到生产环境中。
       
        Parallel WaveNet 这篇论文介绍了一种新的方法:概率密度蒸馏。这种方法可以在生成的语音质量没有显著差异的情况下,通过一个训练好的 WaveNet 去训练一个平行前馈网络。
       
       结果证明, Parallel WaveNet 能以比实时快20倍的速度产生高保真语音样本,这比原来的 WaveNet 要快1000倍。现已能在生产环境中提供多种英语和日语的声音。
       

  2 WaveNet 介绍

        WaveNet 是一个生成原始音频波形的深度神经网络。 WaveNet 是一个完全概率自回归模型,每个音频样本的预测分布取决于之前的所有样本。 WaveNet 可以在每秒数万采样率的音频数据上高效地进行训练。
        (WaveNet 模型详细介绍可参考这篇博客
WaveNet因果卷积原理图
        WaveNet 使用了因果卷积,确保模型输出不会违反数据的顺序,模型在某时刻输出的预测不会依赖任何一个未来时刻的数据。
WaveNet扩大卷积原理图
        WaveNet 还使用了扩大卷积,有效地使网络可以执行粗粒度的卷积操作,扩大了感受野,只通过少数几层便拥有了非常大的感受野(1024个单位)。
       
        WaveNet 运用 SOFTMAX 分布压缩了音频质量,使计算更快捷方便。
       
        WaveNet 使用与gated PixelCNN 中相同的门控激活单元,公式如下所示。
门控激活单元公式
        WaveNet使用了残差和跳步连接,以加速收敛并允许更深的模型训练。该结构示意图如下:
在这里插入图片描述
        Parallel WaveNet 论文的作者对基本的wavenet模型做了两项优化,来提高音频的质量:
              1.使用16bit音频,采样模型替换为离散化混合逻辑斯蒂分布
              2.将16khz的采样率提升到24khz,方法包括提升层数、增加扩张系数等
       

  3 Parallel WaveNet 介绍

       虽然 WaveNet 的卷积结构允许快速并行训练,但样本生成仍然是固有的顺序生成,因此速度较慢,正如所有使用原始抽样的自回归模型一样。因此,我们寻求一种可替代的架构,它将允许快速、并行的生成。
       
       逆自回归流(IAFs) 是一种随机生成模型,它的潜在变量被安排,从而可以并行生成高维可观察样本的所有元素。 IAFs 是一种特殊类型的正常化流动模型的多元分布 px(x) 作为显式可逆非线性变换 x = f(z) 的一个简单的易于处理的分布 pz(z) (如各向同性高斯分布)。
分布变换公式
        在IAF的情况下,输出由xt = f(z≤t)建模:
公式
       要从IAF中取样,首先要随机抽取样本:
公式
       由于 s 和 u 都被网络输出,因此p(xt|z<t)服从参数化的logistic分布µt和st:
公式

       自回归模型将数据建模为p(xt|x<t),将IAFs建模为p(xt|x<t)。如果这些模型共享相同的输出分布类别,那么在数学上它们应该能够建模相同的多元分布。
       
       然而,在实践中有一些区别。为了输出时间步xt的正确分布,逆自回归流可以隐式地推断它在以前时间步x1, … , xt-1的输出基于噪声输入z1,…, zt-1,它允许它在给定zt的情况下并行输出所有xt。
       
       一般来说,归一化流可能需要反复迭代,将不相关的噪声转换为结构化样本,每次迭代时流产生的输出作为下一个迭代时的输入。这对IAFs来说不那么重要,因为自回归潜在因子可以在一次传递中诱导显著结构。尽管如此,我们观察到多达4个流迭代确实提高了质量(流之间没有共享权值)。
       

  4 概率密度蒸馏

       直接以极大似然训练并行 WaveNet 模型是不切实际的,因为估计对数似然所需的推理过程是连续的,而且很慢。
       
       因此,我们介绍了一种新的神经网络蒸馏形式,使用一个已经训练好的 WaveNet 作为“老师”,让“学生” Parallel WaveNet可以有效地学习。为了强调我们正在处理标准化的密度模型这一事实,我们将这一过程称为概率密度蒸馏(与概率密度估计相反)。其基本思想是让学生尝试在老师学到的分布下匹配自己的样本的概率。
       
概率密度蒸馏模型

       
       给定在音频数据集上训练的并行 WaveNet student pS(x) 和 WaveNet teacher pT(x),我们定义概率密度蒸馏损失如下:
概率密度蒸馏损失公式
       DKL为Kullback Leibler散度,H(PS, PT)为学生PS与教师PT之间的交叉熵,H(PS)为学生分布的熵。当KL散度为零时,学生分布完全恢复了教师分布。熵项(在以前的蒸馏目标中并不存在)至关重要,因为它防止了学生分布坍塌为教师模式(这与直觉相反,不会产生一个好的样本)。至关重要的是,我们将会看到,所有估计这个损失的导数所需的操作(从pS(x)采样,评估pT(x)和评估H(pS))都可以有效地执行。
       
       值得注意的是,生成式对抗网络( GANs )的相似之处,学生扮演生成者的角色,教师扮演鉴别者的角色。然而,与生成式对抗网络不同的是:这个学生并没有试图以一种敌对的方式来愚弄老师;相反,它通过尝试匹配老师的概率来进行合作。此外,教师是不变的,而不是与学生一起接受训练,而且两种模型都得出易于处理的正态分布。
       
       首先,可以看到上文中的熵项H(PS)可以重写为:
熵重写
       第一个等式中,x = g(z), zt 为 logistic 分布得出的独立样本。
       第二个等式中,因为逻辑分布 L(u, s) 的熵是 lns+2 因此,我们可以计算这一项而不必显式地生成x。
       
       然而,交叉熵项H(PS, PT)明确依赖于x = g(z),因此需要从学生身上取样来估计。
公式
       对于我们从学生 pS 中抽取的每个样本 x ,我们可以与老师并行计算所有的 pT(xt|x<t) ,然后通过在每个时间步中从 pS(xt|z<t) 中抽取多个不同的样本 xt ,非常有效地计算 H(pS(xt|z<t) , pT(xt|x<t))。这个无偏估计量的方差比单纯地用第一个等式评估样本的方差要小得多。
       
       我们将教师的输出分布 pT(xt|x<t) 参数转换,这使得损失项 lnpT(xt|x<t) 对于 xt 和 x<t 都是可微分的。另一方面,分类分布只能是可微分的 w.r.t. x<t 。

   4.1 额外的损失条款

       单独使用概率密度蒸馏训练可能不足以约束学生生成高质量的音频流。因此,我们也引入额外的损失函数来引导学生分布向期望的输出空间。
       
       第一个额外损失是功率损失,它确保语音不同频带的功率平均使用与人类语音一样多。能量损失有助于避免学生塌缩到高熵 WaveNet-mode 。
公式
       其中(y, c)为训练集条件反射的例子,φ(x) = |STFT(x)|2, STFT为短期傅里叶变换。我们发现φ(x)在取欧几里得距离之前可以随时间取平均值,其效果相差不大,这意味着不同频率的平均功率是重要。
       
       在给出的功率损失公式中,我们也可以使用神经网络代替STFT来保存信号的感知特性,而不是总能量。在我们的案例中,我们使用了一个训练有素的类波分类器来从原始音频中预测语音。因为这样的分类器自然地提取出与识别语音相关的高级特征,这个损失可以惩罚糟糕的发音。
       
       实验人员试验了两种不同的方法来使用感知损失,特征重建损失(分类器中特征映射之间的欧氏距离)和风格损失(Gram矩阵之间的欧氏距离)。后者在我们的实验中产生了更好的结果。
       
       最后,还介绍了一个对比蒸馏损失如下:
公式
       
       当教师和学生在相同的信息c1(例如,语言特征,说话者ID,…)的条件下,最大限度地减少了他们之间的kl差异,但对于不同的条件对c1 = c2,它也会最大化。为了实现这种损失,我们使用学生x = g(z, c1)的输出,并在老师的指导下两次评估波形:一次使用相同的条件反射PT (x|c1),一次使用随机采样的条件反射输入PT (x|c2)。实验中,对比项γ的权重设为0.3。对比损失惩罚波形发现,无论条件向量可能性都很高。
       

  5 实验

       在所有的实验中,我们使用语音模型条件的语言特征,提供语音和持续时间去形成网络。我们还根据不同模型预测的基音信息(f0的对数,基频)来约束模型。我们从未使用从人类语音中提取的ground-truth信息(如音调或持续时间)来生成音频样本,测试句子在训练集中不存在。
       
       使用亚当优化器(ADAM optimiser)对教师 WaveNet 进行100万步的训练。该工具的小批量大小为32个音频片段,每个片段包含7,680个时间步(大约320ms)。值得注意的是,一个相对短的时间片段就足以训练 Parallel WaveNet 产生长期的相干波形。学习速率保持在0.0002不变,并对参数进行 Polyak 平均。
       
       该模型由30层组成,分为3个10层的膨胀残余块组。在每一叠中,每一层的膨胀率增加2倍,从速率1(不膨胀)开始,到最后一层最大膨胀率512。因果扩张卷积的滤波大小为3。在门控层中隐藏单位的数量是512(在激活函数(1)的两部分中分为256组)。剩余连接的隐藏单元数是512,跳过连接和输出层之前的11个卷积也是256。我们用10种混合成分进行混合 logistics 输出分配。
       
       学生网络由相同的 WaveNet 架构布局组成,只是输入和输出不同,没有跳跃连接。在同样的优化设置下,这名学生还接受了100万步的训练。学生通常由4个流组成,分别有10、10、10、30层,残差层和控制层有64个隐藏单元。
       
       下表给出了自回归WaveNet、蒸馏WaveNet和当前生产系统在平均意见评分(MOS)方面的比较。
意见评分

       通过调节说话人id,我们可以构建一个单一的并行波网模型,该模型能够产生多个说话人的声音和他们的口音。这些网络比单扬声器模型需要更多的容量,因此在每个流中有30层。在上表中,我们展示了这种经过蒸馏的平行波网模型与两个主要基线的比较:一个参数系统和一个连接系统。在比较中,我们使用了来自单个模型的许多英语使用者(其中英语使用者1与表中的使用者相同)和来自另一个模型的日语使用者。对于某些说话者,串联系统比参数系统得到更好的结果,而对于其他说话者,则相反。另一方面, Parallel WaveNet 模型对于所有的说话人来说,显著优于这两个基线。

扫描二维码关注公众号,回复: 12416106 查看本文章

       
       为了上文中介绍的损耗函数的重要性,我们在下表中展示了不同损耗函数对蒸馏波网质量的影响。我们发现这些模型的 MOS 得分往往是非常相似的(类似于上表的结果)。因此,我们报告的主观偏好分数从成对比较测试( A/B 测试),我们发现更可靠的注意到小(有时定性)差异。在这些测试中,受试者被要求听一对样本并选择他们喜欢的,如果他们没有任何偏好,他们也可以选择“中性”。
烧蚀研究
       
       如上文所述,单是KL损失并不足以限制蒸馏过程以获得自然语音(例如, KL 的低音量音频就足够了),因此我们不报告仅使用这个术语的偏好分数。 KL 损耗加上功率损耗足以产生相当自然的语音。增加感知损失会带来一个小而明显的改善。增加对比损失并没有进一步提高偏好分数,而是使生成的语音噪声更小,这是大多数评分者不注意的,但对生成的语音质量很重要。
       
       我们在 Parallel WaveNet 体系结构中使用了多个逆向自回归流:单个流模型的 MOS 得分为4.21,而多个流模型的 MOS 得分为4.41。
       

  6 总结

       在本文中,我们介绍了一种基于 WaveNet 的高保真语音合成的新方法,使用概率密度蒸馏。与原始 WaveNet 相比,所提出的模型在质量上没有显著差异的情况下实现了几个数量级的加速。此外,我们已经成功地将该算法移植到新的各种语言和多说话人上。
       
       因此,我们已经能够运行实时语音合成系统,由于深度学习模型的灵活性,为许多令人兴奋的未来发展打开了大门。我们相信,这里提出的相同方法可以用于许多不同的领域,以实现类似的速度提高,同时保持输出精度。
       

猜你喜欢

转载自blog.csdn.net/weixin_42721167/article/details/112850141