【声码器】神经网络声码器

neural vocoder

Posted by 朱晓旭 on October 14, 2020

语音信号的重建

语音信号特点是:高分辨率且短时平稳,因此通过神经网络直接预测语音信号的采样点比较困难,但是其在频域分辨率较低且完整表达了语音信号的特征。因此通常我们把通过stft把语音信号从时域转化到频域,得到其幅度频率普和相位频率谱,此两者是语音信号的完整表达。我们可以通过逆变换得到原始的语音信号。这是通常的语音信号的重建。如果我们有完整的幅度谱和相位谱,就可以生成完整的声音。

通过神经网络重建语音信号的难点

理论上讲,我们可以通过构建神经网络预测幅度谱和相位谱,得到完整的语音表达,然后通过逆变换重建语音信号。其难度在于相位谱和高斯噪声类似,预测困难,因此我们只能通过神经网络预测幅度谱,无法预测语音信号的完整表达。从幅度谱重建语音信号(通过也会有一些附件的其他特征,比如基频),这便是神经网络声码器的工作。

声码器

从幅度谱重建信号,通常有两种方法。一种是通过幅度谱去拟合相位谱,然后重建语音信号,例如迭代Griffi-lim算法;另一种是把幅度谱作为condition通过神经网络直接拟合语音信号,也就是把整个反变换的过程看作是一个黑盒。它本身是一个生成模型:可以有自回归,GAN,flow-based等方法。

自回归

WaveNet

WaveNet paper
简单介绍:把mel谱作为local condition,通过dilated causal convolution构建自回归神经网络,把问题归结为分类概率预测问题,通过多项式采样。dilated扩大感受野,casual符合序列特点。
核心:自回归,casual dialated cnn
技术处理:u-law变换,gated activation function,global condition and local condition
WaveNet

WaveRNN

WaveRNN paper 简单介绍: 对WaveNet的改进,用单GRU来处理语音信号的时序,通过稀疏化和bit拆分策略实现加速,手机实时重建。
核心:用GRU处理时序
技术处理:GRU的稀疏化,16bit拆成2个8bit,subscale技巧,GRU的非循环单元和embedding层的pre-computed
WaveRNN

LPCNet

LPCNet paper
简单介绍:对WaveRNN的改进,通过LPC filter 预测语音的线性部分,以bfcc作为local condition通过GRU预测激励信号。
核心:预测激励信号,LPC
技术处理:bfcc,加噪训练,u-law,GRU的非循环单元和embedding层的pre-computed
LPCNet

Gaussian LPCNet

简单介绍:对LPCNet的改进,把分类概率转移到标准差和均值的预测,通过高斯算法采样。
核心:Gaussian算法采样
技术处理:GRU后每次采两个采样点,标准差选取策略,16bit预测
Gaussian LPCNet

MDN LPCNet

MDN LPCNet paper
简单介绍:对LPCNet的改进,把分类采样概率转移到分类高斯kernel概率,通过高斯算法采样。
核心:多个Gaussian kernels,Gaussian算法采样
技术处理:标准差选取策略,16bit预测,STFT loss
MDN LPCNet

Bunched LPCNet

Bunched LPCNet paper
简单介绍:对LPCNet的改进,采取分bit以及每个step采多个采样点的策略
核心:网络结构改动
技术处理:GRU后每次采两个采样点,11 bit u-law后分7和4bit
Bunched LPCNet

GAN

WaveGAN

MelGAN

PARALLEL WAVEGAN

flow-based

WaveGlow

WaveGlow paper
简单介绍:基于流嵌入使用WaveNet模型
核心:flow-based设计的网络结构
技术处理:affine coupling layer,WaveNet
WaveGlow