基于Tacotron模型的语音合成实践

2018 年 12 月 25 日 深度学习每日摘要

参考论文:《Storytime - End to end neural networks for audiobooks

语音合成的目标是使得计算机能够发出跟人一样自然流畅且带有感情的声音,斯坦福的学者尝试基于Tacotron实现了一个StoryTime模型,该模型依赖于一个编码器、解码器、以及注意力机制来模拟生成人类水平的频谱,期望它可以替代成为说书的。

在谷歌发布Tacotron模型之前,wavenet也是完全用神经网络来合成语音的模型,它采用自回归的方法生成了让人印象深刻的音频,不过正是由于其自回归的方法需要依赖于过去生成的所有样本来生成新的样本,因此其生成的速度十分缓慢,但是它可以捕捉不同说话人的特征,并且可以在他们之间随意切换。

后来百度研究院发布了Deep Voice语音合成系统,不同于wavenet一体式的做法,DeepVoice的做法是将传统的基于参数合成系统的各个组件均替换成了神经网络,并且让每个模块各自进行训练,该方法的缺点就是需要对每个模块进行精细调参,这样会出现错误累积的问题。

而Tacotron是一个完全端对端的语音合成模型(除了最后一步神经网络没有直接生成波形信号之外),它不需要额外的音素信息或语言模型,而是直接可以将文本转化成语音,这也是本文StoryTime所采取的模型。

1. 预处理阶段

首先要处理的就是收集音频语料以及所对应的文本标签,这里作者下载的是哈利波特的听书音频,以及对应的文本材料。接下来要做的就是对这个音频进行分割以及赋予每个小音频正确的文本标签。对于文本其实比较好处理,因为章节之间的格式很明显,很容易可以使用正则表达式来得到想要的分割。

对于音频的分割就麻烦一些,因为目标是得到音频与文字之间的大致对齐。由于章节与章节之间一般情况下都会出现大约3秒钟的停顿,所以作者首先基于停顿大于3秒钟进行分割,默认会得到不同的章节,然后有些章节与章节之间的停顿小于3秒,所以按上面方法分割的文件中会有包含了多个章节的情况,而这个又是无法自动分割的,因为容易与句子之间的停顿混淆。无奈之下,作者最终采用了声学软件Audible来手动对它们进行进一步的划分,最终将划分后的片段 放入开源的对齐软件Gentle中,就可以得到 样本对。整个流程如下图所示。

2.模型细节

这里采用的就是谷歌发布的Tacotron模型,如下图所示,总的来说由五个部分构成,分别是文本编码器、音频特征编码器、注意力、解码器、合成器。下面我将逐一介绍每个部分。

首先,对于文本编码器部分,将词向量作为两个带ReLU激活函数的全连接层的输入,并在这里采取了50%的dropout以提高模型的泛化能力,这一部分是对输入的预训练,论文中称之为prenet。prenet的输出作为CBHG网络的输入,其中CBHG网络是由Convolutional Bank+Highway Network+GRU组成。这里作者使用了16层一维卷积网络,因为输入是单词的embedding矩阵,一维卷积纵向作用到矩阵上面,16层卷积网络分别拥有大小从1到16的不同的卷积核,通过这种不同大小卷积核的方式来提高模型泛化能力,并且每一层卷积都可以认为是一个起到k-gram的作用。然后经过池化层和highway network以得到更高维的特征,并输入到双向GRU网络中得到序列层面特征,并将从prenet出来的输出与这里进行连接,构成一个residual connection,最终得到的输出就是作为注意力模型的上下文特征。

另一个模块就是注意力和RNN解码器,注意到对于每一帧频谱的输入,解码器输出的是r帧频谱,这种做法可以加速执行时间,不过给训练和生成的实现方法上带来了差异。在训练过程中,当预测了r帧梅尔频谱以后,第r个时间点的频谱标签将作为模型的输入,模型基于这个预测下一批r帧梅尔频谱;在生成阶段,除了一开始模型使用0填充的帧作为输入以外,后面的时刻将会使用前一时刻输出的r帧中的最后一帧梅尔频谱作为输入。如下图所示,解码器和注意力层中所用的均为GRU,注意力层是一个带有Bahdanau注意力机制的GRU,解码RNN由两个带有residual connection的GRU层构成,解码器自始至终都是每步产生r帧输出,最终解码器的输出作为CBHG网络的输入。这种解码器只需要执行T/r步,假设T为输入的总帧数。

对于解码器的CBHG网络,与前面编码器CBHG唯一的不同之处在于这里使用的k是8而不是16,这是因为在这里数据的维度有所降低,经过卷积层得到输出维度为80,刚好就是梅尔频谱特征的维度。最后经过highway network和双向GRU即可得到频谱图,利用griffin lim算法即可将该频谱图转化成音频。至于griffin lim算法的转化效果,不是特别理想,因为即使是将一段清晰的音频,提取其频谱特征,通过griffin lim算法转化出来的音频相比于原始音频还是多了一些噪音。

总结一下,这是一篇实践性的文章,在谷歌的Tacotron论文发布以后,利用自己的数据来一步步调参优化进而搭建一个自己的语音合成系统。

深度学习每日摘要|坚持技术,追求原创

微信ID:deeplearningdigest
长按二维码关注我
登录查看更多
15

相关内容

语音合成(Speech Synthesis),也称为文语转换(Text-to-Speech, TTS,它是将任意的输入文本转换成自然流畅的语音输出。语音合成涉及到人工智能、心理学、声学、语言学、数字信号处理、计算机科学等多个学科技术,是信息处理领域中的一项前沿技术。 随着计算机技术的不断提高,语音合成技术从早期的共振峰合成,逐步发展为波形拼接合成和统计参数语音合成,再发展到混合语音合成;合成语音的质量、自然度已经得到明显提高,基本能满足一些特定场合的应用需求。目前,语音合成技术在银行、医院等的信息播报系统、汽车导航系统、自动应答呼叫中心等都有广泛应用,取得了巨大的经济效益。 另外,随着智能手机、MP3、PDA 等与我们生活密切相关的媒介的大量涌现,语音合成的应用也在逐渐向娱乐、语音教学、康复治疗等领域深入。可以说语音合成正在影响着人们生活的方方面面。
【硬核书】不完全信息决策理论,467页pdf
专知会员服务
336+阅读 · 2020年6月24日
【干货书】流畅Python,766页pdf,中英文版
专知会员服务
223+阅读 · 2020年3月22日
【论文推荐】小样本视频合成,Few-shot Video-to-Video Synthesis
专知会员服务
23+阅读 · 2019年12月15日
SFFAI分享 | 连政:端到端语音合成【附PPT与视频资料】
人工智能前沿讲习班
14+阅读 · 2019年6月16日
已删除
将门创投
7+阅读 · 2018年10月12日
漫谈语音合成之Char2Wav模型
深度学习每日摘要
8+阅读 · 2017年12月31日
SampleRNN语音合成模型
深度学习每日摘要
4+阅读 · 2017年7月3日
详述DeepMind wavenet原理及其TensorFlow实现
深度学习每日摘要
12+阅读 · 2017年6月26日
Teacher-Student Training for Robust Tacotron-based TTS
Neural Speech Synthesis with Transformer Network
Arxiv
5+阅读 · 2019年1月30日
Arxiv
3+阅读 · 2018年11月13日
VIP会员
相关资讯
SFFAI分享 | 连政:端到端语音合成【附PPT与视频资料】
人工智能前沿讲习班
14+阅读 · 2019年6月16日
已删除
将门创投
7+阅读 · 2018年10月12日
漫谈语音合成之Char2Wav模型
深度学习每日摘要
8+阅读 · 2017年12月31日
SampleRNN语音合成模型
深度学习每日摘要
4+阅读 · 2017年7月3日
详述DeepMind wavenet原理及其TensorFlow实现
深度学习每日摘要
12+阅读 · 2017年6月26日
Top
微信扫码咨询专知VIP会员