谷歌DeepMind2016年的深度生成模型 WaveNet 将机器语音合成的表现与人类之间水平的差距至少缩减了 50%
ABSTRACT
这篇论文提出了WaveNet,一个生成原始音频波形的深度神经网络。这是一个完全的概率自回归模型,它基于之前已经生成的所有样本,来预测当前音频样本的概率分布;不过,我们将会展示它可以在每秒数万采样率的音频数据上高效地进行训练。将其应用到语音合成,它获得了当前业界最佳的性能,不管是英语还是中文普通话,相比之前最好的参数式和拼接式系统,人类听众评价其在自然度上有大幅度进步。单一模型的WaveNet可以以相同的保真度捕获很多说话人的特征,并可以针对说话者进行训练后在多人之间切换。当训练对音乐建模,我们发现它可以产生新颖的高度真实的音乐片段。同时,我们也会展示它可以作为判别模型应用在音素识别中,获得有可观前景的结果
1 INTRODUCTION
近来对图像(van den Oord et al., 2016a;b)和文本(Jozefowicz et al., 2016)等复杂分布进行建模的神经自回归生成模型有了进展,受这些进展的启发,我们研究了原始音频生成技术。使用神经架构,把像素或者单词的联合概率视作条件概率分布的乘积的建模方法,取得了业界最佳的成绩
特别是,这些架构可以对上千个随机变量(例如,在PixelRNN中64x64像素(van den Oord et al., 2016a))的概率分布进行建模。这篇论文要解决的问题是,同样的方法是否可以在宽带原始音频波形的生成中奏效,这些音频波形信号具有非常高的时间分辨率,至少每秒16000个样本(参照图1)
这篇论文介绍WaveNet,一个基于PixelCNN(van den Oord et al., 2016a;b)架构的音频生成模型。这份研究的主要贡献如下:
- 我们展示了WaveNet可以生成在语音合成(TTS)领域前所未有的主观自然度的原始语音信号,这是由人类打分员进行评价的
- 为了处理原始音频生成中所需的大跨度时间依赖,我们基于扩大因果卷积开发了新的架构,它具有非常大的感受野
- 我们展示了如果基于说话人身份进行训练,单个模型可以生成不同风格的语音
- 同样的架构在小规模语音识别数据集的测试中获得了很好的结果,同时用于音乐等其他形态的音频生成中也有很好的前景
我们相信WaveNet为很多依赖于音频生成的应用(如语音合成,音乐,语音增强,语音转换,声源分离),提供了一个通用的灵活的框架
2 WAVENET
这篇论文中,我们提出一个新的生成模型,它能直接产生原始音频波形。音频波形的联合概率$x=\{x_1,...,x_T\}$可以分解成如下条件概率分布的乘积:
$$ p(x)= \prod_{t=1}^Tp(x_t|x_1,...,x_{t-1})\tag{1} $$
因此每一个音频样本$x_t$都依赖之前所有步骤产生的样本
与PixelCNNs (van den Oord et al., 2016a;b)类似,条件概率分布由若干卷积层堆叠进行建模。网络中没有池化层,模型的输出与输入具有相同的时间维度。模型使用softmax层输出下一个值$x_t$的类别分布,使用最大对数似然方法对参数进行优化。由于对数似然易于处理,我们在验证集上对超参数进行调优,可以容易地测定模型过拟合或者欠拟合
2.1 DILATED CAUSAL CONVOLUTIONS
WaveNet的主要成分是因果卷积。因果卷积确保了模型输出不会违反数据的顺序:模型在t时刻输出的预测$p(x_{t+1}|x_1,...,x_t)$不会依赖任何一个未来时刻的数据$x_{t+1},x_{t+2},...,x_T$,如图2所示。对图像来说,因果卷积等价于一个遮蔽卷积(van den Oord et al., 2016a),可以在使用前通过构建一个遮蔽张量与卷积核进行点乘来实现。对于音频这样的一维数据来说实现起来更简单,将正常卷积的输出偏移几个时间步即可
在训练阶段,由于标定真实数据x的所有时间步都是已知的,因此所有时间步的条件概率预测可以并行进行。在推断阶段,预测结果是串行的:每一个预测出的样本都反馈给网络用于预测下一个样本
由于使用因果卷积的模型中没有循环连接,通常训练起来比RNN更快,特别是对于很长句子的训练。因果卷积存在的一个问题是它需要很多层,或者很大的卷积核来增大其感受野。例如,在图2中,感受野只有5(= 层数 + 卷积核长度 - 1)。在这篇论文中,我们使用扩大卷积(dilated convolution)使感受野增大几个数量级,同时不会显著增加计算成本
扩大卷积(也称为带洞卷积),是卷积核在比自身大的数据上进行卷积时跳步的卷积方法。这与通过用零补边使卷积核扩大的效果是一样的,但是这样效率更高。与正常卷积相比,扩大卷积有效地使网络可以执行粗粒度的卷积操作。这与池化或者跳步卷积类似,只是这里的输出保持与输入大小相同。作为特例,扩大因子=1的扩大卷积就是标准卷积。图3描绘了扩大因子为1,2,4,8的扩大因果卷积。扩大卷积之前在不同的上下文中被使用过,如信号处理(Holschneider et al., 1989; Dutilleux, 1989),图像分割(Chen et al., 2015; Yu & Koltun, 2016)
堆叠式扩大卷积使得网络只通过少数几层便拥有了非常大的感受野,同时保留了输入分辨率和计算效率。本论文中,扩大系数每层都翻倍直到上限,然后重复循环,如:
$$ 1,2,4,…,512,1,2,4,…,512,1,2,4,…,512 $$
这种配置其背后的直觉有两个。首先随着深度增加,扩大因子的指数增长可以使感受野呈指数级增大(Yu & Koltun, 2016)。例如每一组1,2,4,…,512这样的卷积模块都拥有1024大小的感受野, 可视为与1x1024卷积对等的更高效的(非线性)判别式卷积操作 。其次,将多组这样的卷积模块堆叠起来会进一步增大模型容量和感受野大小
2.2 SOFTMAX DISTRIBUTIONS
对单个音频样本的条件概率分布$p (x_{t+1}| x_1,...,x_t)$进行建模的一个方法是使用混合模型,如混合密度网络(Bishop, 1994)或者条件高斯尺度混合模型(MCGSM) (Theis & Bethge, 2015)。然而,van den Oord et al. (2016a)指出softmax分布倾向于更有效,即便数据是隐含式的连续数据(图像的像素亮度或者音频采样值),该方法同样有效。原因之一是类别分布更灵活,并且由于对数据的形状没有假定前提,所以它更容易对任意分布进行建模
因为原始音频通常保存为16位整数序列(每个时间步骤一个值),对每个时间步骤的所有可能值,softmax层将需要输出65536个概率,为了更容易处理,我们先对数据实施一个µ律压扩变换(ITU-T, 1988),然后量化成256个可能值:
$$ f(x_t)=sign(x_t)\frac{ln(1+\mu|x_t|)}{ln(1+\mu)} $$
其中$-1<x_t<1,\mu=255$。与简单的线性量化相比,这个非线性量化处理可以对数据进行更好的重构。特别是对于语音数据,我们发现这样重构后的信号听起来非常接近原始信号
2.3 GATED ACTIVATION UNITS
我们使用与gated PixelCNN (van den Oord et al., 2016b)中相同的门控激活单元:
$$ z=tanh(W_{f,k}*x) ⊙\sigma (W_{g,k}*x)\tag{2} $$
其中$*$代表卷积操作,$⊙$代表点乘操作,$σ(.)$是sigmoid函数,k是层索引,f和g是各自的滤波器和门,W是可学习的卷积核。我们在最初的试验中观察到,对于音频信号建模,这个非线性操作显著优于ReLU激活函数(Nair & Hinton, 2010)
2.4 RESIDUAL AND SKIP CONNECTIONS
网络中使用了残差(He et al., 2015)和参数化跳步连接,以加速收敛并允许更深的模型训练。 在图4中我们展示了模型中的一个残差模块,网络中会将多个这样的模块堆叠在一起
2.5 CONDITIONAL WAVENETS
给定一个额外输入h,WaveNets可以由这个给定输入,建模音频的条件分布$p(x|h)$。这时公式(1)就变成了:
$$ p(x|h)=\prod_{t=1}^{T}p(x_t|x_1,...,x_{t-1},h)\tag{3} $$
基于其他的输入变量进行条件建模,我们可以引导WaveNet产生要求特征的音频。例如,在多人对话场景中,通过把说话人身份作为额外的条件输入给模型,我们可以从模型中选择某个说话人进行音频输出。类似的,在TTS任务中,我们需要额外的关于文本的信息输入给模型
基于其他输入进行条件建模有两种方式:全局条件和局部条件。全局条件的特点是,通过单一的隐式表征h,在所有时间步骤上影响输出分布,例如TTS模型中的说话人嵌入。公式(2)的激活函数现在变成了:
$$ z=tanh(W_{f,k}*x+V_{f,k}^Th) ⊙\sigma (W_{g,k}*x+V_{g,k}^Th) $$
其中,$V_{*,k}$是可学习的线性映射,向量$V_{*,k}^Th$是在时间维度的广播
局部条件建模,我们有第二个时间序列$h_t$,可能有比音频信号更低的采样频率,比如TTS模型中的语言学特征。我们首先用转置卷积网络(上采样)将其映射到一个新的时间序列y = f(h),使其具有与音频信号相同的分辨率,然后交由激活单元处理,如下:
$$ z=tanh(W_{f,k}*x+V_{f,k}*y) ⊙\sigma (W_{g,k}*x+V_{g,k}*y) $$
其中$V_{f,k}∗y$现在是一个1x1卷积。作为转置卷积网络的替代方法,也可以使用$V_{f,k}∗h$,然后沿时间重复这些值。但是在我们的实验中,这个方法的表现稍差一些
2.6 CONTEXT STACKS
我们提出了多种方法来增加WaveNet的感受野大小:增加扩大卷积模块数,模块内使用更多的扩大卷积层,更大的卷积核,更大的扩大因子,或者他们的组合。增加感受野的另外一个补充方法是,使用一个独立的更小的上下文堆栈来处理语音信号的长跨度信息,并局部调试一个更大的WaveNet只用来处理语音信号的更短的局部信息(在结尾处截断)。可以使用多个变长的具有不同数量隐藏单元的上下文堆栈,拥有越大感受野的堆栈其每层含有的隐藏单元越少。上下文堆栈还可以使用池化层来降低频率,这使得计算成本被控制在合理范围,也与用更长的跨度对时间相关性建模会使体量更小的直觉相吻合
3 EXPERIMENTS
为了测量WaveNet音频建模的性能,我们在三个不同的任务上对其进行评估:多说话人语音生成(没有基于文本训练),文本合成语音,音乐音频建模。我们在附随的网站上公布了实验中WaveNet生成的音频样本:https://www.deepmind.com/blog/wavenet-generative-model-raw-audio/
3.1 MULTI-SPEAKER SPEECH GENERATION
第一个实验进行自由格式的语音生成(没有基于文本进行调节训练)。我们使用VCTK(Yamagishi, 2012)数据集中的英文多人语料,并基于说话人进行了条件建模,通过将说话人ID以one hot 编码的形式输入进行条件建模。数据集总共包含109位不同说话人的44小时语音数据
由于模型没有基于文本进行建模,因此它会产生不存在的但是听起来很像人类语言的词语,而且很流畅,语调逼真。这与语言或图像的生成模型很相似,其生成的样本咋一看很逼真,细看就不自然了。生成的语音在长跨度上缺乏连贯性,部分是由于受模型感受野大小的限制(大概300毫秒),这意味着模型只能记住它产生的之前2-3个音素
单个WaveNet可以通过one-hot编码对任意一个说话人的语音进行建模。这确认了单个模型也能够从数据中捕获所有109人特征的足够强大的能力。我们观察到,与在单人数据集上训练相比,增加训练集的说话人数量可以在验证集上获得更好的性能。这提示我们,WaveNet的内部表征在多个说话人中是共享的
最后,我们观察到除了声音本身之外,该模型还提取了音频中的其他特征。例如,它还模仿了声学和录音质量,以及扬声器的呼吸和嘴巴动作
3.2 TEXT-To-SPEECH
第二个实验选择了TTS。我们使用Google北美英语和中文普通话TTS系统构建相同的单说话人语音数据集。北美英语数据集包含24.6小时语音数据,中文普通话数据集包含34.8小时,两个数据集都由专业女播音员录制
在TTS任务中,首先基于从输入文本获得的语言学特征进行局部调节训练WaveNet。另外还在语言学特征+对数基频(log F0)上调节训练了WaveNet。两种语言都训练了外部模型,用来从语言学特征预测对数基频和音长。WaveNet的感受野是240毫秒。还构建了HMM单元选择拼接(Gonzalvo et al., 2016)语音合成器作为基于例句的基线,以及LSTM-RNN统计参数(Zen et al., 2016)语音合成器作为基于模型的基线。由于使用相同的数据集和语言学特征来训练基线语音合成器和WaveNet模型,对结果的性能比较应该是公平的
为了评估TTS任务中WaveNet的性能,我们实施了主观配对比较测试和平均意见得分(MOS)测试。在主观配对比较测试中,听完每一对样本,评分者会选择他们更喜欢哪一个样本,如果没有倾向也可以选择中立。在MOS测试中,听完每一个合成结果,评分者会对语音的自然度进行5分制打分(1:很差,2:差,3:一样,4:好,5:很好),详细情况请参考附录B
图5展示了主观配对比较测试的部分结果(全部测试结果请看附录B)。从结果来看,WaveNet在两种语言上都优于基线的参数式和拼接式语音合成器。我们发现只用语言学特征调节训练的WaveNet,其合成的语音有很自然的断句,但有时候会弄错重音而使韵律不自然。这可能是由于F0轮廓的大跨度依赖造成的:WaveNet的感受野只有240毫秒,不能捕获这么大跨度的依赖。而同时用语言学特征和F0训练的WaveNet就没有这个问题:预测F0的外部模型以低频(200Hz)运行,所以它可以学到存在于F0轮廓中的大跨度依赖
表1展示了MOS测试结果。从表中可以看出WaveNet的自然度在5分制MOS评分中超过了4分,比基线系统高出一大截。它们是这些训练集和测试句子上目前MOS得分的最高纪录。合成语音与人类自然语音的MOS得分差距,在美式英语中从0.69下降到0.34(51%),中文普通话从0.42下降到0.13(69%)
3.3 MUSIC
第三组实验选择对两个音乐数据集建模:
- MagnaTagATune数据集 (Law & Von Ahn, 2009),包含200小时音乐音频。每个片段29秒,片段都加注了标签(总共188种),包括流派,乐器,节拍,音量和情绪
- YouTube钢琴数据集,包含60小时从YouTube视频中获得的钢琴独奏音乐。由于限定于单一乐器,所以建模相对容易
尽管模型评估难以量化,但是可以通过倾听生成的样本进行主观评价。我们发现扩大感受野是获取悦耳音频的关键。即使把感受野增加到数秒长,模型也没能取得长时间的一致性,每秒的流派,乐器,音量和声音质量都有变化。然而,即使是非条件建模产生的音乐样本,听起来也很和谐,令人愉悦
一个特殊的兴趣是进行条件建模,使模型产生特定标签的音频,如不同流派或乐器的音乐。与条件语音生成模型类似,每个音乐片段都有关联的音乐标签,把这些标签用二进制向量表达,然后给模型插入一个依赖于这些二进制向量的偏置参数。这样通过给模型传入一个编码了想要属性的二进制向量,就使得在模型生成合成样本时可以控制输出的不同特性。我们在MagnaTagAtune数据集上训练模型,尽管数据标签有噪声和遗漏,经过清洗合并类似标签并移除相关音乐片段过少的标签,训练结果还是不错的
3.4 SPEECH RECOGNITION
尽管WaveNet被设计成生成模型,但是也可以直接修改来处理语音识别这样的判别任务
统上,语音识别研究主要关注对数梅尔滤波器组能量谱,或者梅尔频率倒谱系数(MFCCs)的使用,但是近期的研究(Palaz et al., 2013; Tuske et al., 2014; Hoshen et al., 2015; Sainath et al., 2015)开始转向直接对原始语音数据进行建模。循环神经网络,如LSTM-RNNs(Hochreiter & Schmidhuber, 1997),在这些新的语音分类流水线中已经成为主要组件,因为它允许对大跨度上下文进行建模。使用WaveNet的扩大卷积,相比LSTM,可以用极低的成本增大感受野
最后一个实验,我们在TIMIT (Garofolo et al., 1993)数据集上用WaveNet进行语音识别。这个实验中我们在扩大卷积后面增加了一个平均池化层,它把激活输出聚合成10毫秒的帧(160×下采样)。池化层后接几个非因果卷积。损失函数包含两项,一项是下一个样本的预测损失,另一项是数据帧分类损失,两项损失比单项损失的泛化能力更好,在测试集上获得了18.8 PER,据我们所知,这是从TIMIT原始音频直接训练的模型中获得最佳分数
4 CONCLUSION
这篇论文提出了WaveNet,一个可直接在波形级别运行的音频数据的深度生成模型。WaveNet是自回归的,它结合了因果卷积和扩大卷积,让感受野随着模型深度增加而指数级增加。感受野的增加对建模音频信号的长时依赖非常重要。我们还展示了WaveNet如何基于其他输入进行全局(例如,说话人身份)和局部(例如,语言学特征)条件建模。应用到TTS中,WaveNet生成的语音样本在主观自然度上优于目前的最佳合成系统。最后,WaveNet在音乐建模和语音识别上也很有前景