DeepMind提出子规模WaveRNN,可实现高效的音频合成

图:unsplash

原文来源:arXiv

作者:Nal Kalchbrenner、Erich Elsen、Karen Simonyan、Seb Noury、 Norman Casagrande、Edward Lockhart、Florian Stimberg、Aaron van den Oord 、Sander Dieleman、Koray Kavukcuoglu

「雷克世界」编译:嗯~阿童木呀

可以这样说,序列模型(Sequential model)在音频、视觉和文本领域的估计数据分布和生成高质量样本方面都取得了最先进的研究成果。然而,这类模型的有效采样仍然是一个难以捉摸的问题。专注于文本到语音的合成(text-to-speech synthesis),我们描述了一组能够缩短采样时间,同时保持高输出质量的通用技术。首先,我们描述一个单层循环神经网络—WaveRNN,它具有与最先进的WaveNet模型质量相匹配的双softmax层。该网络的紧凑形式使得它可以在GPU上以比实时快4倍的速度生成24 kHz 16位音频。其次,我们应用权重修剪技术来减少WaveRNN中的权重数量。我们发现,对于数量恒定的参数来说,大型稀疏网络的性能表现要比小型密集网络好得多,并且对于超过96%的稀疏水平来说,这种关系都能够得以保持。稀疏WaveRNN中的少量权重使得它可以实时在移动CPU上对高保真音频进行采样。最后,我们提出了一种基于子规模(Subscaling)的新一代方案,将长序列折叠成若干个较短的序列,并使得其能够一次生成多个样本。子规模WaveRNN(Subscale WaveRNN)每步生成16个样本,且没有质量损失,为提高采样效率提供了一种正交方法。

序列生成模型在涵盖自然语言、自然图像、视频、语音和音乐在内的多种领域中取得了非常先进的性能表现。模型通过将分布因子分解成每个样本的条件概率乘积来学习数据的联合概率。这种结构可以让模型具有大量的能力对每个条件因素进行估计,使得它们在训练过程中具有鲁棒性并且易于评估。在结构中编码的顺序也使得采样过程得以严格具有串行性(serial):一个样本,只有当它所依赖的样本已按照排序生成后才能得以生成。采样过程的串行性特征可能会让使用这些模型以生成诸如语音和视频等高维数据的过程变得缓慢且不切实际。

具有双softmax层的WaveRNN架构

我们的目标是在不影响质量的情况下,提高从序列模型中进行采样的效率,而不会影响其质量。采样过程所花费的时间T(u)是目标u中的样本数量(例如,语音样本中的音频样本的数量或图像中的像素数量)和产生每个样本所需时间的乘积。后者可以分解为计算时间c(opi)和模型的N层(操作)中的每一层的开销d(opi):

等式1

在以下任何一种情况下,T(u)的值可能变得非常大:由于高保真音频由每秒24,000个16位样本组成而造成| u |很大;由于使用了诸如WaveNet这样非常深的架构而导致N很大;例如在层很宽或存在大量参数的情况下而导致c(opi)很大;或者,由于启动每个单独操作所花费的成本而导致开销d(opi)较高。

对于文本到语音的合成,我们提出了一套方法从而使采样速度能够按照数量级提高。我们减少每个因素N、d(opi)、c(opi)和| u |对生成输出质量的最小损失的影响。我们使用单一说话者北美英语(single-speaker North-American English)文本到语音数据集对所有模型进行基准测试,其中输入由预测的语言特征向量组成,输出为原始24 kHz,16位波形。我们报告了模型在留存数据(held-out data)上达到的负对数似然(NLL),由听众评定和模型样本的平均意见得分(MOS),两个模型之间的A / B比较测试结果。

表:给定模型与WaveRNN-896之间的A / B比较测试结果

首先,我们设计一个序列模型,要求每个样本需要少量的N次操作。我们利用循环神经网络(RNN)的核心性质,即应用于前一状态的单个循环层可以提供一个高度非线性的上下文转换。 WaveRNN模型是具有双softmax层的单层RNN,旨在对16位原始音频样本进行有效预测。我们看到,具有896个单元的WaveRNN所取得的NLL分数可以与最大的WaveNet模型相媲美,根据A / B比较测试结果(表2),音频保真度没有明显的差异,MOS也同样的高。WaveRNN仅通过对每个16位样本序列中要求N = 5的矩阵向量乘积便可实现此性能。为简单起见,我们排除了N的非线性和其他次要操作。这与WaveNet相反,它有30个两层残差块,每个块需要一系列N = 30 * 2 = 60的矩阵向量积。

即使N很小,开销d(opi)仍然看作是从WaveRNN进行采样的常规实施中的一个重要瓶颈。我们通过为采样过程实施自定义GPU操作(来规避这一开销。这使得WaveRNN可以在Nvidia P100 GPU上每秒生成96,000个16位采样,这相当于高保真24kHz 16位音频的4倍实时时间。作为比较,我们用于WaveNet模型的最佳GPU内核在同一平台上能够以大约0.3倍的实时时间运行。

子规模WaveRNN的依赖性方案

减少网络中的参数数量会减少采样所需的计算量c(opi)。考虑到这一点,我们希望能够最大限度地提升从给定数参数中获得的性能。我们使用权重修剪技术对WaveRNN中的权重加以削减。对于固定的参数计数,我们发现大型稀疏WaveRNN的性能表现要明显优于小型密集WaveRNN,并且这种关系在高于96%的高水平稀疏性上面能够得以维持。

稀疏WaveRNN的高质量输出、少量参数和对内存带宽的低要求相结合,使得该模型非常适合在低功耗移动平台(如手机中使用的那些平台)上进行高效实施。我们在移动CPU上对WaveRNN中所使用的稀疏矩阵向量乘积和非线性度进行实施并测试。我们将稀疏WaveRNN中GRU的标准tanh和sigmoid替换为softsign非线性,其性能表现也同样很好,且计算速度更快。尽管移动CPU上的计算量和内存带宽分别比GPU上小三到两个数量级,但我们在现成的移动CPU上的基准测试表明,这些资源足以使用高品质稀疏WaveRNN进行实时设备音频合成。据我们所知,这是第一个能够在广泛的计算平台上进行实时音频合成的序列神经模型,包括现成的移动CPU。

最后,我们考虑等式1中元素| u |对性能所产生的影响。最近有很多种方法都有这样一个目标,即让从序列模型中进行的采样更加具有并行性。然而,这些模型要么在生成的样本之间进行局部独立性假设,从而破坏序列模型的主干,要么需要对具有特定损失的多个特定域网络进行训练,从而限制模型的整体可用性。

我们提出一个基于子规模的生成过程。尺度L的张量被折叠成尺度L / B的B个子张量。B个子张量按顺序生成,每个子张量都以前一个子张量为条件生成。子规模可以让我们一次批量生成多个样本。由于基于前一个子张量的每一个子张量的生成在实践中仅需要相对较小的前瞻性,所以下一个子张量的生成可能在上一个子张量的生成开始后不久便开始了。原则上,有可能在超越前瞻性的情况下恢复远程未来和过去的依赖关系。批量采样的精确成本就是当前批次样本之间的B远程依赖关系。如A / B比较测试(如表)所示,子规模WaveRNN每步可产生B = 16个样本,而音频保真度没有损失。子规模WaveRNN的批量采样开启了许多正交方法以提高采样效率。即使模型的常规Tensorflow实施在Nvidia V100 GPU上实现了实时采样速度。子规模WaveRNN的一个融合变体还通过对WaveRNN-896 GPU内核的轻微修改,在Nvidia P100 GPU上实时提供一个10倍的采样速度。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180226A10FRL00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。

扫码关注云+社区

领取腾讯云代金券