WaveNet(波网)是一个用于直接生成声音讯号的人工神经网络。由伦敦人工智能公司DeepMind的研究人员于2016年9月的一篇论文[1]中提出。
WaveNet通过使用用真实语音记录训练的神经网络方法直接模拟波形,能够生成听起来相对真实的人类声音。除了语音合成外,WaveNet也能应用在音乐生成以及语音辨识等领域。[2]
2018年,Google在其云端语音合成服务Google Cloud Text-to-Speech[3]中提供了基于WaveNet的语音合成API[4]。截至2019年,该产品提供了32种语言以及多种不同音色的语音合成服务,且基于WaveNet的合成结果在自然度上相比传统方法更接近人类语音[5]。
在WaveNet被提出之前,传统上常见语音合成的方法有串接生成(Concatenative synthesis)及参数化法(Parametric method)等。串接生成是透过录制多段声音来拼接合成目标语句;参数化法则是用模型生成声音特征的参数,再经由声码器合成声音。
近年,随着深度学习兴起,使用人工神经网络合成语音的方法也被提出,如Tacotron[6]。该模型利用人工神经网络生成目标声音的时频谱或特征参数,再透由Griffin-Lim算法或其他声码器合成声音。
然而无论上述何种方法,皆无法直接生成声音讯号。原因在于即便仅仅一秒的声音讯号,就可能包含了数万个样本点,要对庞大的样本点之间的关联性建模是相当困难的。
WaveNet结合了自回归特性和空洞卷积神经网络(Dilated Convolutional Neural Network)架构,成功的提出第一个能够生成高品质声音样本点的人工神经网络模型。
WaveNet采用和PixelCNN[7]相似的自回归特性模型。
设声音讯号,WaveNet将其几率建模成:
即在时间点t生成的样本点,模型会以为输入,其输出是基于前几个时间点的样本点作为条件的条件几率分布。而模型训练目标便是让愈大愈好。
WaveNet模型的输出是下个样本点的几率分布,而声音讯号的样本点通常会以16位元的整数储存,这使模型在每个时间点,要输出65536个几率来表示所有可能的样本点的几率分布。为了降低建模难度,WaveNet使用µ律算法(µ-law algorithm, G.711)将样本点量化成8位元,即256种可能的数值:
其中是在时间点t的声音讯号样本点,,是0~255的整数。
研究中显示这种非线性量化方法的表现结果比单纯线性量化好上许多,且透过重建的语音在人类听觉上与原始语音非常相似。
因果卷积神经网络是WaveNet组成的主要部分,透过因果卷积,可以确保对资讯正确地建模。
在预测时,不会参考到的资讯。
一卷积神经网络的感受野(receptive field)会随着网络的加深而加大。然而对于动辄数万个样本点的声音讯号而言,一般的因果卷积神经网络仍需堆叠相当多的层数来使感受野大到足以抽取出有用的资讯。
下图为堆叠数层的因果卷积神经网络感受野示意图,每一个输出结果(橘色点)参考了五个输入资料(蓝色点)的资讯。
为了解决此一问题,WaveNet使用了多层空洞因果卷积神经网络,如下图所示,在同样层数的情况下,每一个输出点参考了16个输入点,模型的感受野随层数加深而指数增长。
这样的架构能让WaveNet很好地从输入样本点中抽取资讯,并预测下一个时间的样本点的几率分布。
WaveNet中使用了和PixelCNN相同的门激励单元:
其中代表折积运算,代表逐点乘法,是S函数,和代表在第k层的两种折积核(convolutional kernel)。
研究中表明,使用门激励单元作为非线性激励函数,相比线性整流函数有更好的表现。
在过往的语音生成任务,如文字转语音、语者转换等,模型往往会先生成声音特征参数或时频谱,再使用声码器或Griffin-Lim算法合成声音讯号。在Tacotron2[8]中,首次将WaveNet用作神经声码器来补足从时频谱或梅尔刻度时频谱重建声音讯号所缺失的资讯(如相位等)。研究人员发现使用神经声码器所重建的声音讯号,比起使用传统声码器或算法生成的声音更为自然。此后,除了大量被使用在语音生成研究中来提高声音品质外,神经声码器也逐渐被应用在许多产品当中[4]。
尽管WaveNet作为语音合成模型或类神经声码器,能够生成与人类自然语音接近的声音品质,然而其自回归特性也带来不少明显缺点。
其一是生成速度十分缓慢,由于样本点是逐一生成,因此生成一秒的声音讯号可能就要花上数分钟的时间[9],使其在实际应用上受到限制。
此外,模型以之前生成的样本点作为输入来生成下一个样本点,因此当生成较差的样本点时,错误可能会不断累积下去,影响声音讯号品质[10]。
WaveNet提出之后,作为类神经声码器使基于深度学习语音合成模型能够进一步生成更为接近自然的语音,后续的研究皆着重于改良WaveNet架构或训练方式,使其能够实时生成高品质语音。
- Parallel WaveNet[11]
- FFTNet[10]: 简化WaveNet架构,能以更快的速度自回归地生成声音样本点,并提出一些优化自回归类神经声码器的方法。
- WaveRNN[12]: 引入RNN和双重Softmax层(dual softmax layer)来简化WaveNet模型运算的复杂度,并提出多个优化生成速度的方法,使模型甚至能在手机CPU上实时生成语音。
- WaveGlow[9]: 不采用自回归模型,而是以基于流(flow-based)的模型来达到实时生成高品质语音。
Oord, Aaron van den, et al. "Wavenet: A generative model for raw audio." arXiv preprint arXiv:1609.03499 (2016).
存档副本. [2020-01-15]. (原始内容存档于2021-10-27).
存档副本. [2020-01-15]. (原始内容存档于2022-05-10).
存档副本. [2020-01-15]. (原始内容存档于2021-01-26).
存档副本. [2020-01-15]. (原始内容存档于2022-04-22).
Wang, Yuxuan, et al. "Tacotron: Towards end-to-end speech synthesis." arXiv preprint arXiv:1703.10135 (2017).
Van den Oord, Aaron, et al. "Conditional image generation with pixelcnn decoders." Advances in neural information processing systems. 2016.
Shen, Jonathan, et al. "Natural tts synthesis by conditioning wavenet on mel spectrogram predictions." 2018 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP). IEEE, 2018.
Prenger, Ryan, Rafael Valle, and Bryan Catanzaro. "Waveglow: A flow-based generative network for speech synthesis." ICASSP 2019-2019 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP). IEEE, 2019.
Jin, Zeyu, et al. "FFTNet: A real-time speaker-dependent neural vocoder." 2018 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP). IEEE, 2018.
Oord, Aaron van den, et al. "Parallel wavenet: Fast high-fidelity speech synthesis." arXiv preprint arXiv:1711.10433 (2017).
Kalchbrenner, Nal, et al. "Efficient neural audio synthesis." arXiv preprint arXiv:1802.08435 (2018).