博文:https://blog.csdn.net/ljp1919/article/details/52764913
一个经典动态图片:https://img-blog.csdn.net/20161020202303230
博客园:https://www.cnblogs.com/punkcure/p/8610268.html
知乎:https://zhuanlan.zhihu.com/p/28849767(强推,本文内容只要转自此)
内容来源转载,如有侵权,请联系我删除。
一. 绪论
WaveNet是probabilistic and autoregressive的生成,对每个预测的audio sample的分布都基于前面的前面的sample分布。在TTS的应用中,能达到state_of_art的效果,听觉感受上优于parametric and concatenative的系统。同时系统还可以生成音乐,作为discriminative model对phoneme做识别。Wavenet模型是一种序列生成模型,可以用于语音生成建模。在语音合成的声学模型建模中,Wavenet可以直接学习到采样值序列的映射,因此具有很好的合成效果。目前wavenet在语音合成声学模型建模,vocoder方面都有应用,在语音合成领域有很大的潜力。
二. Wavenet原理
Wavenet模型可以根据一个序列的前 t-1 个点预测第 t 个点的结果,因此可以用来预测语音中的采样点数值。基本公式如下:
![](https://i-blog.csdnimg.cn/blog_migrate/69ba56f38e862d9f101b1eb71d28d16e.png)
在该模型中,我们使用softmax层作为输出层,把采样值的预测作为分类任务进行。Dilated Casual Convolutions
![](https://i-blog.csdnimg.cn/blog_migrate/67b7b2f18923ee80e479f932690a7bfb.png)
Wavenet模型主要成分是这种卷积网络,每个卷积层都对前一层进行卷积,卷积核越大,层数越多,时域上的感知能力越强,感知范围越大。在生成过程中,每生成一个点,把该点放到输入层最后一个点继续迭代生成即可。
由于语音的采样率高,时域上对感知范围要求大,我们采用了Dilated convolutions这种模型。Dilated convolutions加入了dilation这个概念,根据dilation大小选择连接的节点。比如dilation=1的时候,第二层只会使用第t,t - 2,t - 4......这些点。
既然这篇论文中用到了 dilate convolution, 而 dilate conv 又是我很喜欢的一种操作, 那就先来说明一下什么是 dilate conv.
其实, 一张图就足以解释什么是 dilate conv 了. 对于好奇心比较强的同学, 可以看这篇文章. 下图也是来自这篇文章.
![](http://shuokay.com/content/images/wavenet/dilate-conv.png)
上图的说明已经足够解释什么是 dilate convolution 了. 简单来说, dilate convolution 引入一个新的 hyper-parameter, dilate, 这个 hyper-parameter 的涵义是,
每隔 dilate-1 个像素取一个” 像素”, 做卷积操作
2. Softmax Distributions
Wavenet在输出层使用了softmax,求取每个采样点的概率。由于16位的采样点就有65536种采样结果,所以我们使用 律对采样值进行转换。其公式如下:
转换后,65536个采样值会转换成256个值,而且实验证明该转换方法没有对原始音频造成明显损失。
3. 激活函数
激活函数使用了门单元
4. Residual and skip connections
![](https://i-blog.csdnimg.cn/blog_migrate/dff4a1e06151a9ddb64ac2237841caec.png)
如图,隐层中每一层的节点都会把该原来的值和通过激活函数的值相加后传递给下一层,其中1x1的卷积核用来实现降通道数的操作。然后每一个隐层的过激活函数后的结果相加做一系列操作后传给输出层。
5. conditional wavenets
加条件特征主要是在激活函数处增加,分为两种形式,global condition 和 local condition。两者公式一致,但local的特征需要升采样。
升采样有两种方式,第一种是自己学习升采样的模型,可在模型中添加。另一种就是手动升采样,自己将特征复制多次。