DeepMind 提出的 WaveNet 是目前顶级的语音生成模型,论文最初于 2016 年 9 月发表,雷锋网 AI 科技评论也立即跟进报道 DeepMind 发布原始音频波形深度生成模型 WaveNet 。WaveNet 抛弃了以往通过声学模型拼接语音音素的做法,完全通过深度神经网络生成原始音频波形,并且大幅提高了语音生成质量。
今年 10 月,我们也报道过 WaveNet 正式商用:效率提高 1000 倍,仅一年时间就走出实验室,在 Google Assistant 中落地。在庆贺深度学习又一次完全颠覆传统做法的同时,大家想必也会好奇,到底 DeepMind 做了哪些改进才得以实现这样数量级的效率提升呢?DeepMind 自己最近就发布了介绍商业化改进后的 WaveNet 的论文,并撰写了一篇博文通俗地介绍了其中的改进点。雷锋网 AI 科技评论把这篇博文翻译如下。
自 DeepMind 在 2016 年发表 WaveNet 论文后,这一顶级表现的语音生成模型已经于今年 10 月开始用在 Google Assistant 中,为全球的用户生成逼真的日语和美国英语语音。现在这个用于生产环境的模型称作“并行 WaveNet”,它的运行速度要比最初发布的模型快一千多倍,而且生成的语音质量也更高。
在近期的论文(https://deepmind.com/documents/131/Distilling_WaveNet.pdf )中,DeepMind 的研究人员们就介绍了新模型的一些细节;以及为了让这个系统能在大规模并行化的计算环境中运行,DeepMind 还开发了一个新技术“概率密度蒸馏”。
WaveNet 的演进史
最初版本的 WaveNet 在生成语音时用了很激进的连接方式,每次生成一个采样点,而且每个新生成的采样点都需要把前一个采样点作为输入(条件生成)。虽然这种做法能够生成高质量的音频,每秒最高也能生成 2 万 4 千个采样点,但这种顺序生成的方式对于生产环境来说还是太慢了。
最初版本的模型中,生成每个新的样本都需要把前一个生成的样本作为条件
为了解决这个问题,DeepMind 的研究人员们认为他们需要一种新的方案,它应当能一次生成一个长序列中的所有采样点,而且没有生成质量的损失。他们的想到的办法叫做 probability density distillation,“概率密度蒸馏”。它的做法是,用一个完全训练好的 WaveNet 模型教另一个“学生”网络如何推理;这个学生网络更小、并行度更高,从而也就更适合运行在现代计算硬件上。这个学生网络的架构是一个规模不大的卷积神经网络的拓展,跟原来的 WaveNet 很相似,但它有一点根本性的不同,就是生成新的采样点时不需要依赖任何之间生成的采样点。这也就意味着,语音生成时可以把第一个单词、最后一个单词、以及所有当中的单词全部同时生成出来,就像下面的动图里这样。
新的 WaveNet 把白噪音作为输入,然后一次同步生成所有的输出采样点。
训练的时候,学生网络是从一个随机状态开始的。它的输入是随机白噪声,要训练它做的任务就是产生连续的音频波形作为输出。学生网络生成的输出会被交给训练过的 WaveNet 模型,它会给每个采样点打分,作为提供给学生网络的信号,让它了解它的输出和理想输出之间的差距。随着训练过程进行,学生网络就可以根据反向传播不断调节、更新,从而学会产生理想的输出。从另一个角度说,“老师”网络和“学生”网络都会给每一个音频采样点的取值输出一个概率分布,然后训练的目标就是让老师的分布和学生的分布之间的 KL 距离最小化。
这样的训练过程和生成式对抗性网络(GANs)的设定有不少相似之处,学生网络就像是 GANs 中的生成器,老师网络就像是鉴别器。不过与 GANs 不同的是,学生的目标并不是像 GANs 中那样“骗过”老师,而是与老师合作,尝试学习、达到老师的表现水平。
虽然这种训练技巧有不错的表现,DeepMind 的研究人员们还是需要增加几个额外的损失函数,引导学生更好地向理想的行为前进。具体来说,他们增加了一个感知损失来避免模型产生糟糕的发音,增加了一个对比度损失来进一步减少噪声,以及一个能量损失来让网络的音频输出与人类语音的能量相匹配。能量损失的作用是,如果没有它的话,模型的音量很小,更像窃窃私语而不是朗声说话。
应用了以上所有这些方法之后,DeepMind 就得以让训练出的并行 WaveNet 达到与最初的 WaveNet 同等的语音质量,人类测试者听过之后的平均意见打分(MOS,5 分为满分)结果如下。值得一提的是,真正的人类语音也只有 4.667 的 MOS 分数。
当然,概率密度蒸馏仅仅是让 WaveNet 达到生产化系统的速度和质量的众多必须手段之一。为了把并行 WaveNet 集成到 Goolge Assistant 的服务流水线中,DeepMind 的技术应用团队和谷歌语音团队也同样在工程方面付出了大量努力。也正是靠着这样的紧密协作,最初是基础性研究的技术只花了 12 个月多一点点的时间就成为了谷歌规模、能够服务全球用户的正式产品。
并行 WaveNet 论文地址:https://deepmind.com/documents/131/Distilling_WaveNet.pdf
via DeepMind Blog