深度学习与人类语言处理学习笔记(四)—— Vocoder(理论篇)
Vocoder
vocoder就是通过模型或方法将语音特征转换成对应的声音信号。
1. Spectrogram
频谱图的计算过程如下,和振幅相位有关,一段完整的声音包含振幅和相位的信息,因此要还原出原始声音不能仅包含频率信息,还应该包含相位信息,而且二者对于声音的还原都是很重要的:
S
T
F
T
x
=
X
(
t
,
f
)
=
A
t
,
f
e
i
θ
t
,
f
STFT{x}=X(t,f)=A_{t,f}e^{i\theta_{t,f}}
STFTx=X(t,f)=At,feiθt,f

2. Neural Vocoder
2.1 WaveNet
WaveNet的架构如下:

在wavenet中输入输出都是one-hot向量,不是数值的,为了减小模型参数,因此将数值范围进行规范化,约束在[0,255]之间:

Casual Convolution,当前第t个时间点的预测结果和历史信息有关,不会涉及到后续的信息:

Dialated Convolution,kernel中的点是有间隔的:

Dialated Casual Convolution,将上述两个方法结合起来:

加入dialation操作,预测当前时间的结果时能够根据更多的历史信息进行判断。
Gated Actication Unit:

Conditional WaveNet:

生成速度比较慢
2.2 FFTNet
目的就是优化使得生成运算速度加快:

Zero padding技巧:增加稳定性;
Conditional sampling:根据情况sample阈值来判断预测结果;
Injected noise:训练时注入噪声,从而生成更稳定的噪声;
Post-synthesis denosing:对生成的声音进行降噪处理;

2.3 WaveRNN
Dual Softmax Layer,两个softmax层,将16bit的问题转换成两个8bit的问题:

其中,Coarse的运算过程如下:

Fine的运算过程如下:

加速简化模型的方法:

2.4 WaveGlow
Autoregressive的方法会存在速度较慢的问题,需要考虑优化过程,因此就有人提取了Flow-Based的模型:



WaveNet架构:

更多推荐
所有评论(0)