本文提出了FloWaveNet,使用最大似然损失,并行生成原始样点。解决了原来的Parallel WaveNet和ClariNet的缺点:1.使用一个训练好的教师网络和一个学生网络进行两阶段训练;2.如果只使用概率蒸馏损失,容易模型崩塌;
WaveNet模型是2016年9月谷歌提出的语音合成模型,利用神经网络对原始音频波形建模。WaveNet可以用作文本到语音系统(TTS)的声码器,输入一段句子,输出指定说话人所说一段语音。因为采用了自回归采样技术,WaveNet每次生成一个样本点,新的样本点受之前样本点的制约,每秒生成24000个高质量音频样本,7s的音频需要约50min的GPU时间,速度很慢。
下图表示原来的WaveNet逐个生成音频波形。
为了解决这个问题,研究者提出了并行化的WaveNet:Parallel WaveNet,ClariNet;实现了实时的音频波形生成。但是这两个模型并不完美:1.需要两阶段训练,先训练的教师网络,教师网络的能力教给学生网络;2.需要若干损失函数。例如:如果只使用概率蒸馏损失,模型容易崩塌,即学生网络学习到了教师网络的概率分布,导致模型性能次优。
概率密度蒸馏损失是指用一个经过完全训练的WaveNet模型作为“教师”网络,把自己的能力教给一个“学生”网络—一种速度更快,并行的网络所产生的损失。
学生网络是一个比较小的dilated CNN,和原始WaveNet结构差不多。但二者有一个关键的区别:在学生网络中,每个样本的生成不依赖于任何已生成的样本,这就意味着从第一个词到最后一个词,以及中间的整个句子,我们都可以同时生成出来,如下图所示:
为此,我们提出了基于流的并行实时音频波形生成模型。特点有:1.只有一个最大似然损失函数;2.只用训练一个网络,没有教师网络学生网络之分。另外,本文的FloWaveNet模型生成的音频在质量和保真度方面和其他模型不相上下。
FloWaveNet原理图:
网络主要是由Context block堆叠而成,本文中的实验堆叠了8个,其中每个Context block包含一个Squeeze和若干Flow,Flow由activation norm,Affine Coupling和Change Order组成,最右图这是Affine Coupling的具体操作。
Squeeze操作如下图:
将输入数据x和条件c的时间维度缩短为原来的一半,这样Channel数就变为原来的两倍。这样感受域就变为原来的两倍,直觉上和WaveNet的扩大卷积类似。
那么什么是flow呢?flow是一种可逆函数f,我们先看一下形式化表示&#