在Graphcore智能处理器(IPU)上,百度的Deep Voice 3实现了无与伦比的文本到语音的训练性能表现。IPU的独特架构特点以及与处理器共同设计的Poplar软件栈的优化共同促成了速度大幅提升。
将书面文本转换为语音可以说是语音技术研究中最具挑战性的领域之一。文本语音转换(TTS)建模的早期进展主要是通过对复杂的多阶段、手工管道(pipeline)进行小的迭代实现的。一类称为串联系统的早期方法起源于二十世纪七十年代,专注于基本语音单元的最佳串联。另一类与之竞争的方法属于统计参数语音合成,改为使用诸如隐藏马尔可夫模型和递归神经网络之类的模型来输出低维音频特征,这些特征将被输入到称为声码器的信号处理算法中。
随着深度学习浪潮的到来,通过在大型标签数据集上训练模型,可以以最少的手工制作生成语音。DeepMind的Wavenet模型对语音生成领域有开创性贡献,它大大缩小了以前最先进的TTS系统与人类性能水平之间的差距。Wavenet使用带扩张的因果卷积层堆栈直接生成原始音频样本。
尽管Wavenet成功地以不同的说话者声音生成了自然声语音,但该模型的高频自回归特性使它难以用于低延迟或高通量的推理应用。在Wavenet之后,来自不同研究组的各种模型系列也随之出现。其中最突出的是谷歌的Tacotron,百度的Deep Voice和微软的FastSpeech,它们可以实现高质量的端到端语音合成。
使用Deep Voice 3在IPU上演示文本到语音的生成

百度研究小组于2017年以Deep Voice的名称发布了一系列TTS模型。当时,前两次迭代,即Deep Voice 1和2,遵循了TTS管道的传统结构。两者都有针对各个阶段的独立模型,例如字素到音素转换、分段、音频持续时间和频率预测以及最终波形合成。
Deep Voice 3模型是向前迈出的重要一步,因为整个TTS管道由单个紧凑模型捕获。Deep Voice 3模型是完全卷积的,并使用注意块将输入文本序列解码为输出音频序列表示形式,在这种情况下为梅尔刻度声谱图(mel-scale spectrograms)。
什么是梅尔刻度声谱图?
在我们了解Deep Voice 3架构和训练性能之前,先为有需要的读者简要介绍一下声谱图。
声谱图表示的是通过短时傅立叶变换获得的短重叠窗口上信号的频率内容。许多语音技术应用需要音频信号的低维表示,在这种情况下,需要使用梅尔刻度声谱图。
梅尔刻度声谱图基于这样的思想,即人类在对数刻度上感知频率。举个例子,人类要分辨出10,000赫兹和10,500赫兹的频率之间的差异比分辨500赫兹和1000赫兹的频率要困难得多。梅尔刻度声谱图是通过简单地将对数刻度上更靠近的频率合并在一起、然后对相同合并类中频率的波幅求平均而获得的。
尽管维度较低,但梅尔刻度声谱图通常足以完成语音或话音识别之类的任务。图4显示了梅尔刻度声谱图的可视化示例。
Deep Voice 3模型架构
现在,让我们看一下Deep Voice 3模型架构。图1显示了Deep Voice 3模型的高级示意图,图2显示了该模型的主要构建块(卷积块和注意块)的草图。Deep Voice 3模型有三个主要组件——编码器,解码器和转换器网络。编码器网络的输入是字符序列和说话人身份,它们被转换为内部被学习的表示形式。编码器网络的输出是键和值序列,它们馈入解码器网络的注意块。解码器使用因果卷积块(以对解码器的自回归性质建模)和注意块将从编码器学到的文本表示形式解码为梅尔刻度声谱图。

左侧的块是带有门控和一个残留连接的一维卷积块。
右侧的块是一个基于点积的注意块。
在训练期间,解码器接收ground truth的梅尔刻度声谱图和说话者身份,并学习重建梅尔刻度声谱图。因果卷积块迫使解码器网络学习从声谱图的先前帧中预测声谱图的第i帧。这意味着在推理过程中,解码器网络仅根据文本编码和说话者身份就可以逐帧构造整个声谱图。
转换器网络处理从解码器生成的隐藏状态,并生成完整的线性刻度声谱图。也可以将转换器设计为生成其他声码器参数,但在这项工作中,我们训练转换器以生成线性刻度声谱图。然后,将由转换器生成的线性刻度声谱图送入称为Griffin-Lin算法的经典信号处理算法中,以合成最终的音频。用于训练整个网络的损失函数是梅尔刻度和线性刻度声谱图重建的L1损失之和。通过使用Poplar高级运行时(PopARTTM),已经实现了Deep Voice 3模型,该模型可在Graphcore IPU处理器上运行,可在我们的公共示例知识库,https://github.com/graphcore/examples/tree/master/applications/popart/deep_voice中获取。
与GPU的对比估测
我们使用VCTK语料库(一个多扬声器数据集,包含44个小时的录音),针对用于Deep Voice 3训练的领先的12纳米GPU,对第一代(Mk1)和第二代(Mk2)IPU进行了基准测试。图3比较了IPU和GPU备选方案在训练期间的吞吐量数字。通过在具有2个Mk1 IPU(批处理大小为4)的C2卡上进行数据并行训练,可以实现每秒1260个查询(QPS)的吞吐量,相比GPU实现了6.8倍加速(使用与C2卡相同的功率)。换言之,要在VCTK语料库上完成一个训练阶段,使用Mk1 C2卡大约需要35秒,而使用GPU大约需要4分钟。
通过IPU-M2000中的单个Mk2 IPU和16的批处理大小,我们获得了每秒2744个查询的吞吐量,比GPU快14.8倍。
即使发布了最新的GPU,基于已发布的GPU对比结果,我们预估第二代IPU仍然有大约10倍的优势。

对比图
IPU如何实现Deep Voice 3训练加速?
因为多方面的原因,包括其独特的内存组织和大规模并行性(详情见最近的计算机视觉博客),IPU在处理卷积模型方面特别有效。在训练诸如Deep Voice 3之类的卷积模型时,这些架构上的优势实现了令人印象深刻的加速。
我们的Poplar软件栈也是专门为IPU设计的。Poplar为主导Deep Voice 3模型的一维卷积和矩阵乘法提供了高度的并行性。
IPU颠覆性的内存组织同样是关键因素。Mk1 IPU包含1216个核,可在处理器自己的300MB分布式片上内存执行计算,从而限制了访问外部内存以获取数据的需求。与受外部内存带宽限制的GPU相比,这是IPU的巨大优势。
样本合成音频
以下是使用在IPU上实施Deep Voice 3生成的一些音频样本。有趣的是,即使用于生成语音样本的某些单词不在原始训练数据集中,该模型仍能够有效地合成对应的语音。
女性声音
男性声音
图4显示了为文本”She demonstrated great leadership on the field.”生成的梅尔刻度声谱图。接下来是Griffin-Lin算法生成的音频信号的可视化,作用于转换器网络的输出。

借助IPU的真实文本语音转换应用程序
在TTS应用程序中使用IPU的潜在好处是什么?
对于诸如在作者声音中生成的有声读物之类的用例,语音合成模型的快速训练可以节省花费在计算资源上的时间、金钱和精力。在教育和消费互联网应用以及残疾人辅助技术中,使用与TTS模型相关的话音克隆模型具有巨大潜力。使用IPU加速这些应用程序可提供与之前提到的优点类似的优点,同时可改善用户体验和生活质量。
在低时延很重要的实时应用中,TTS模型的有效推理至关重要,这是另一个IPU可以带来巨大好处的领域,因为IPU对训练和推理都有效。
IPU能够加速诸如Deep Voice 3之类的TTS模型,从而为创建全新的TTS模型等级提供了机会。这些模型可以充分利用IPU独特的处理器架构。我们期待看到随着这一领域的发展,这些创新在不久的将来会带来什么改变。