- Featherwave: An efficient high-fidelity neural vocoder with multi-band linear prediction
- https://arxiv.org/abs/2005.05551
WaveRNN 声码器系列
- LPCNet = WaveRNN + (DSP 线性预测)
- multiband-WaveRNN = WaveRNN + multiband
- FeatherWave = LPCNet + multiband
背景介绍
multi-band LPCNet 允许每步并行生成多个采样点,因此可以有效提高语音合成的效率。4个sub-band的情况下只需要 1.6 GFLOPS 计算量。24kHz 高保真的语音合成可以在CPU 上达到9倍的实时,比 LPCNet 明显更快,而且可以达到比 LPCNet 更好的音质。
1. 其他声码器介绍
WaveNet,计算量太大,没法应用在实时场景。
基于Flow的声码器,比如 Parallel WaveNet, Clarinet 和WaveGlow,能够在GPU上实时生成,但是会存在phase issue (相位问题),忽略了因果性的先验,听起来会比 WaveNet 自回归的声码器要压抑一些。Parallel WaveNet中使用了GAN来解决这个问题。
LPCNet 将WaveRNN 和线性预测相结合,同时采样策略也做了优化,并且使用μ-law量化和预加重方法,但是并不像LPCNet 分别预测 coarse 和 fine 两个部分,所以也没有 dual softmax layer而是单独的一个 softmax layer。LPCNet 16kHz 的计算量是 3 GFLOPS (原文是 2.8 GFLOPS)。multi-band WaveRNN 能够一步生成多个采样点。
LPCNet / multi-band WaveRNN 在 24kHz 的场景下都不能达到5倍以上的实时,所以平均每秒合成音频的延迟为 200 ms,在端上比如移动手机上更难。论文提出的 FeatherWave 将 LPCNet 和 multiband 相结合,进一步提高 LPCNet的效率。
2. 论文的主要贡献
- FeatherWave = multi-band LPCNet,同样也用的是 μ-law 量化方式,相比于传统的LPCNet 模型复杂度显著降低
- 24kHz 下,经过工程化优化的流失推理算子,可以在 2个CPU核上达到10倍实时,同时MOS 还能达到 4.55。
相关知识
1. multiband-WaveRNN
subscale WaveRNN 使用 subscale 策略实现并行生成,但 Multiband-WaveRNN 采用的频率子带 subband 方案。所有的subband 信号是同时生成的,输出网络层是多个 softmax,每个子带一个,所以相当于将生成序列的长度降采样为原来的1/N,N是子带的个数。
multi-band WaveRNN的计算量可以降低至 3.6 GFLOPS。

关于 multiband-WaveRNN,本文参考了 DURIAN 论文的 Section 3 的部分。
先将信号划分成N个子带,每个子带内可以降采样为原来的1/N,每个子带原则上可以用单独的声码器建模,但是单独建模时没有减少声码器合成指定频率的音频的计算量。
multiband-WaveRNN没有单独每个子带一个声码器,而是共享一个WaveRNN,所有子带的采样点作为输入,一次性输入到 multiband-WaveRNN,同时预测多个子带的输出,对应于多个softmax 和输出层。每个子带的采样率是Fs/N,N是子带个数。
序列长度显著降低,因而推理的步长减小;模型共享参数,因此计算复杂度也显著降低。各个子带生成的信号经过升采样和合成滤波器,即可得到整个语音信号。

2. MultiBand LP
- 每个频带的 LP 系数从各个频带的梅尔谱中提取得到
- 不同频带预测的信号和excitation (prediction residual) 从各自的子带中计算

FeatherWave

FeatherWave 整体的结构和LPCNet 一样,包含 Frame Rate Network (Condition Network) 生成 conditioning 向量、Sample Rate Network 两个部分。
对于 multi-band LP,每个采样点同时生成 Nb个子带的Nb的采样点 (dual softmax output layer 也是multiple的对应不同的子带)。类比WaveRNN,sampling network 先预测 coarse 部分的信号,然后基于预测的coarse 和之前的信号再预测 fine part。真正的子带信号是基于预测输出的 e 和线性预测的信号 组合预测得到的。不同子带信号的合并重建,使用的是合成滤波器。
论文实际上在预测 LP 时,也是先做的预加重,使用 8-bit 的 μ-law 应用在所有的子带信号上。论文为了提高合成质量,FeatherWave 使用的是 10-bit 的 μ-law,所以 coarse 和 fine 各占5-bit 即 32 个可能的数值。
condition network 使用的是 5 层 1×3 卷积层,ELU 激活函数。hop size 相当于帧移对应的采样点的个数,则 condition network 输出一次,对应于sample rate network 的 h/Nb 个时间步,相当于重复了 f = h/Nb 次。
其余的操作和 WaveRNN 类似。
| All discretized signals are passed into a trainable embedding layer before fed into a GRU cell. Similar to the WaveRNN vocoder, we use dual softmax layer to predict coarse and fine parts of the discretized signal sequentially after a GRU and affine layers. A block sparse pruning [17] strategy is adopted to sparsify the parameters in the GRU layer for the purpose of speeding up inference. The output of the affine layer is passed into multiple softmax output layers to predict all subband excitations simultaneously. The parameters of model are optimized to minimize the negative log-likelihood (NLL) loss at the training phase. |
|---|
采样时**不同的温度因子调控方式:**
| In FFTNet [18] and iLPCNet [19], lowering temperature in the voiced region with a constant factor is exploited for such purpose. Rather than using voiced information, LPCNet adopts pitch correlation to adjust the temperature factor. Furthermore, the distribution is subtracted with a constant threshold T to prevent impulse noise caused by low probabilities. |
|---|

- 两阶段稀疏化剪枝方法:先低稀疏比,然后慢慢增加稀疏比例。
- 稀疏比从 50% 到 90%,每个稀疏比在100k 次迭代中缓慢增大并且保持 100k 次迭代;
- 稀疏性训练的 block 大小为 16* 1
实验结果
- 训练音频:20小时、24kHz、16bit、80维的梅尔特征
- 计算量:1.6 GFLOPS
- 评测结果


- 本文标题:声码器 | Featherwave:多频带的 LPC 声码器
- 创建时间:2022-06-17
- 本文链接:2022/06/17/2022-06-17_featherwave/
- 版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!