摘要
在本文提出了WaveGlow:一种依靠流的从梅尔频谱图合成高质量语音的网络。它结合了Glow和WaveNet,生成的快、好、高质量的韵律,而且还不需要自动回归。实现也只是一个单网络,仅使用单个成本函数进行训练:最大化训练数据的可能性,这使训练过程简单且稳定。我们的用了PyTorch实现,结果也蛮好的,和最佳公开的WaveNet效果相同。
1 引言
随着与机器的语音交互变得越来越有用,有效合成高质量语音变得越来越重要。语音质量或延迟的微小变化会对客户体验和客户偏好产生重大影响。但是,高质量的实时语音合成仍然是一项艰巨的任务。语音合成需要生成具有高长期依赖性的超高维样本。另外,人类对音频样本中的统计缺陷很敏感。除了质量挑战之外,实时语音合成还具有挑战性的速度和计算约束。当音频采样率低于16kHz时,感知的语音质量会大大下降,而更高的采样率会生成更高质量的语音。此外,许多应用要求合成速率比16kHz快得多。例如,在远程服务器上合成语音时,严格的交互性要求意味着必须以远远超过实时要求的采样率快速合成语音。
当前,最先进的语音合成模型基于参数神经网络。文本到语音的合成通常分两步完成。第一步,将文本转换为时间对齐的特征,例如梅尔频谱图或F0频率以及其他语言特征。第二个模型将这些时间对齐的功能转换为音频样本。第二种模型(有时也称为声码器)在计算上具有挑战性,并且也会影响质量。在这项工作中,我们将重点放在第二个模型上。大多数基于神经网络的语音合成模型都是自回归的,这意味着它们会在先前的样本上调节未来的音频样本,以便对长期依赖性进行建模。这些方法相对容易实施和训练。但是,它们本质上是串行的,因此无法充分利用GPU或TPU等并行处理器。该组中的模型通常难以在不牺牲质量的情况下合成速度超过16kHz的音频。
目前,我们知道了三种基于神经网络的模型,它们可以合成语音而无需自动回归:并行WaveNet [2],单簧管[7]和用于频谱图反转的MCNN [8]。这些技术可以在GPU上以超过500kHz的频率合成音频。但是,这些模型比自回归模型更难训练和实现。所有这三个都需要复合损耗功能来改善音频质量或模式崩溃问题[9、7、8]。此外,并行WaveNet和单簧管需要两个网络,一个学生网络和一个教师网络。并行WaveNet和单簧管的学生网络都使用逆自回归流(IAF)[10]。尽管IAF网络可以在推理时并行运行,但是流本身的自回归特性使IAF的计算效率很低。为了克服这个问题,这些作品使用教师网络来训练学生网络的真实可能性。由于难以成功地训练这些模型使其收敛,因此这些方法难以复制和部署。
在这项工作中,我们证明了自动回归流程对于合成语音是不必要的。我们的贡献是基于流的网络,能够从梅尔频谱图生成高质量的语音。我们将此网络称为WaveGlow,因为它结合了Glow [1]和WaveNet [2]的想法。 WaveGlow易于实施,仅使用单个网络进行训练,仅使用似然损失函数进行训练。尽管该模型非常简单,但我们的PyTorch实现在NVIDIA V100 GPU上以超过500kHz的频率合成语音:比实时速度快25倍以上。平均意见得分表明,它提供的音频质量与在同一数据集上训练的最佳公开WaveNet实施效果相同。
2 WAVEGLOW
WaveGlow是一个生成模型,通过从分布采样中生成音频。 要将神经网络用作生成模型,我们从简单分布中获取样本,在本例中,样本的零均值球形高斯具有与所需输出数量相同的维数,然后将这些样本放入一系列变换简单分配到具有所需分配的对象。在这种情况下,我们对梅尔频谱图为条件的音频样本的分布进行建模。
我们想通过直接最小化数据的负对数似然来训练该模型。如果我们用一个任意的模型显然不行。基于流网络通过确保神经网络映射是可逆的来解决。通过限制每一层都是双射的,可以使用变量的变化直接计算似然性:
在我们这个损失函数里,第一个条件就是球形高斯对数似然。惩罚了转化样本的L2范数。第二个条件是来自变量的变化,J是雅克比行列式。雅克比行列式的对数决定因素会奖励在前进过程中增加空间量的任何层。该项还可以防止图层仅将x项乘以优化l2 norm。转换序列也称为归一化流。
我们的模型与最近的Glow工作最相似的,如下图所示。对于通过网络的前向传递,我们将8个音频样的组作为矢量,称之为挤压操作,然后通过几个“流程步骤”来处理这些向量。此处的流程步骤包括一个可逆的1*1卷积,后跟一个仿射耦合层。
2.1 放射耦合层
可逆神经网络通常使用耦合层构建,在我们例子中,我们使用放射耦合层。一般通道用作输入,然后产生乘法和加法项,用于缩放和转换其余通道:
这里的HW()可以是任何转换。即使WN()不需要是可逆的,耦合层仍可为整个网络保留可逆性。这是因为用作WN()输入的通道,在这种情况下xa,原封不动地传递到该层的输出。因此,当反转网络时,我们可以通过简单地重新计算WN(xa,mel-spectrogram)来从输出xa计算s和t,然后将xb’转化为xb。在我们案例中,WN()使用tanh非线性的膨胀卷积层以及残差连接和跳过连接。这个WN结构和WaveNet和Parallel WaveNet相似的。但我们的卷积层有3次抽头,不是因果关系。放射耦合层也是我们包括梅尔频谱图的位置,以便在输入上调节生成的结果。如WaveNet所示,将上采样的梅尔频谱图添加在每层的门控tanh非线性激活。
对于放射耦合层,仅s项会更改映射体积,并会向变量增加变量项的变化。该术语还作损失函数不可逆放射映射的模型。
2.2 1*1可逆卷积
在仿射耦合层中,相同半部中的通道永远不会直接彼此修改。如果不跨渠道混合信息,这将是一个严重的限制。按照Glow [1],我们通过在每个仿射耦合层之前添加一个1x1可逆卷积层来混合通道间的信息。这些卷积的W权重被初始化为正交,因此可逆。该变换的雅可比行列式的对数行列式由于变量的变化而加入了损失函数,并且还用于在训练网络时使这些卷积保持可逆性。
将耦合层中的所有项相加后,最终可能性变为:
第一项来自球形高斯对数似然的地方。 σ2项是高斯分布的假定方差,其余项说明变量的变化。
2.3 早期产出
我们发现不是让所有通道都经过所有层,而是在每四个耦合层之后将其中两个通道输出到损耗函数很有用。经过网络的所有层之后,将最终向量与所有先前输出的通道连接起来以形成最终z。尽早输出某些维度可以使网络更轻松地在多个时间尺度上添加信息,并有助于将梯度传播到较早的层,就像跳过连接一样。这种方法类似于[1,12]中使用的多尺度体系结构,尽管我们没有添加额外的压缩操作,所以矢量在整个网络中变得更短。
2.4 推论
训练好网络之后,进行推理仅是从高斯随机采样z值并通过网络运行它们的问题。如[1]中所建议的,以及基于似然的生成模型的早期工作[14],我们发现从高斯采样zs时,其标准偏差与训练期间假设的标准差较低,从而导致音频质量稍高。在训练过程中,我们使用σ=√0.5,在推理过程中,我们从标准偏差为0.6的高斯采样zs。反转1x1卷积只是反转权重矩阵的问题。逆由损失保证。像以前一样,在每个耦合层中都包括了mel频谱图,但是现在仿射变换被反转了,并且损耗也保证了这些反转。
3 实验记录
效果还可以。