博客地址:凌逆战
论文地址:DeepFilternet2: 面向嵌入式设备的全波段音频实时语音增强
论文代码:https://github.com/Rikorose/DeepFilterNet
引用格式:Schröter H, Rosenkranz T, Maier A. DeepFilterNet2: Towards Real-Time Speech Enhancement on Embedded Devices for Full-Band Audio[J]. arXiv preprint arXiv:2205.05474, 2022.
基于深度学习的语音增强技术已经取得了巨大的进步,最近还扩展到了全频带音频(48 kHz)。然而,许多方法都有相当高的计算复杂度,需要大的时间缓冲来实时使用,例如由于时间卷积或注意力。这两者都使得这些方法在嵌入式设备上不可行。这项工作进一步扩展了DeepFilterNet,利用语音的谐波结构实现了有效的语音增强。训练过程、数据增强和网络结构中的几项优化使SE性能达到了最先进的水平,同时在笔记本Core-i5 CPU上将实时因子降低到0.04。这使得算法可以在嵌入式设备上实时运行。DeepFilterNet框架可以在开源许可下获取。
索引术语:DeepFilterNet,语音增强,全波段,两级建模
1 引言
最近,基于深度学习的语音增强已经扩展到全频带(48 kHz)[1,2,3,4]。大多数SOTA方法通过对噪声音频信号进行短时傅里叶变换(STFT)在频域进行SE,并在类似于深度神经网络(DNN)的U-Net中对信号进行增强。然而,许多方法在乘法累积操作(MAC)和内存带宽方面有相对较大的计算需求。也就是说,较高的采样率通常需要较大的FFT窗口,从而产生大量的频率bin,这直接转化为更多的MAC。
PercepNet[1]通过使用三角形ERB(等效矩形带宽)滤波器组解决了这个问题。在这里,基于STFT的频率bin被对数压缩到32个ERB波段。然而,这只允许实值处理,这就是为什么PercepNet额外应用梳状过滤器来更好地增强语音的周期性成分。相反,FRCRN[3]将频率bin分成3个通道,以减少频率轴的大小。这种方法允许对复数比例掩码(CRM)进行复数的处理和预测。类似地,DMF-Net[4]使用多波段方法,其中频率轴被分成3个波段,由不同的网络分别处理。一般来说,与单阶段方法相比,像DMF-Net这样的多阶段网络最近展示了它们的潜力。例如,GaGNet[5]在特征提取阶段之后使用两个所谓的glance和gaze阶段。glance模块在粗量级域上工作,而gaze模块在复数域上处理频谱,允许以更精细的分辨率重建频谱。
在这项工作中,我们扩展了[2]的工作,[2]也分为两个阶段。DeepFilterNet利用了由一个周期分量和一个随机分量组成的语音模型。第一阶段在ERB域中工作,只增强语音包络,而第二阶段使用深度滤波[6,7]来增强周期性成分。在本文中,我们描述了在Voicebank+Demand[8]和深度噪声抑制(DNS) 4盲测挑战数据集[9]上实现SOTA性能的几个优化。此外,这些优化提高了运行时性能,使得在树莓派4上实时运行模型成为可能。
2 方法
2.1 信号模型和DeepFilterNet框架
我们假设噪音和语音是不相关的,比如
$$公式1:x(t)=s(t)*h(t)+n(t)$$
其中$s(t)$是纯净语音信号,$n(t)$是加性噪声,$h(t)$是模拟混响环境的房间脉冲响应,产生噪声混合物$x(t)$。这直接转化为频域
$$公式2:X(k,f)=S(k,f)*H(k,f)+N(k,f)$$
其中$X(k, f)$为时域信号$X(t)$的STFT表示,$k, f$为时间和频率指标。
在本研究中,我们采用了DeepFilterNet[2]的两阶段去噪过程。也就是说,第一阶段在量级范围内运行,并预测实值增益。整个第一阶段在一个压缩的ERB域内进行,目的是在模拟人耳听觉感知时减少计算复杂性。因此,第一阶段的目的是在粗频率分辨率下增强语音包络。第二阶段利用深度滤波在复数域内工作[7,6],试图重构语音的周期性。[2]表明,深度滤波(DF)通常优于传统的复数比掩模(CRMs),特别是在very noisy的条件下。
组合SE过程可以表述如下。编码器$F_{enc}$将ERB和复数特征编码到一个embedding $\varepsilon$中。
$$公式3:\varepsilon (k)=F_{enc}(X_{erb}(k,b),X_{df}(k,f_{erb}))$$
接下来,第一阶段预测实值增益$G$并增强语音包络,从而得到短时频谱$Y_G$。
$$公式4:\begin{aligned}
G_{erb}(k, b) &=\mathcal{F}_{erb\_dec}(\mathcal{E}(k)) \\
G(k, f) &=\operatorname{interp}(G_{{erb }}(k, b)) \\
Y_G(k, f) &=X(k, f) \cdot G(k, f)
\end{aligned}$$
最后在第二阶段,$F_{df\_dec}$预测了$N$阶的DF系数$C_{df}^N$,然后将其线性应用于$Y_G$。
$$公式5:\begin{aligned}
C_{\mathrm{df}}^N\left(k, i, f_{\mathrm{df}}\right) &=\mathcal{F}_{\mathrm{df} d e c}(\mathcal{E}(k)) \\
Y\left(k, f^{\prime}\right) &=\sum_{i=0}^N C\left(k, i, f^{\prime}\right) \cdot X(k-i+l, f)
\end{aligned}$$
$l$是DF look-ahead。如前所述,第二级只工作在频频谱的较低部分,频率为$f_{df}$= 5 kHz。DeepFilterNet2框架如图1所示。
图1所示 DeepFilterNet2语音增强过程的概述
2.2 训练流程
在DeepFilterNet[2]中,我们使用了exponential learning rate schedule和fixed weight decay。在这项工作中,我们还使用了一个学习率warmup 3个epoch,然后是cosine decay。最重要的是,我们在每次迭代时更新学习率,而不是在每个阶段之后更新。类似地,我们用不断增加的cosine schedule来安排权值衰减,从而为训练的后期阶段带来更大的正则化。最后,为了实现更快的收敛,特别是在训练的开始阶段,我们使用batch scheduling[10],batch size从8开始,逐渐增加到96。调度方案如图2所示。
图2所示 用于训练的学习率、权重衰减和batch size
2.3 多目标损失
我们采用[2]的频谱损失$L_{spec}$。此外,使用多分辨率(MR)频谱损失,其中增强频谱$Y(k, f)$首先转换为时域,然后计算多个stft,窗口从5 ms到40 ms[11]。为了传播这种损失的梯度,我们使用pytorch STFT/ISTFT,它在数值上足够接近于Rust中实现的原始DeepFilterNet处理循环。
$$公式6:\mathcal{L}_{\mathrm{MR}}=\sum_i\left\|\left|Y_i^{\prime}\right|^c-\left|S_i^{\prime}\right|^c\right\|^2\left\|\left|Y_i^{\prime}\right|^c e^{j \varphi_Y}-\left|S_i^{\prime}\right|^c e^{j \varphi_S}\right\|^2$$
其中$Y_i'= STFT_i(y)$为预测TD信号y的第$i$个窗口大小为{5,10,20,40}ms的STFT, $c = 0.3$为压缩参数[1]。与DeepFilterNet[2]相比,我们去掉了$\alpha$损失项,因为所使用的启发式仅是局部语音周期性的较差近似。此外,DF可以增强非语音部分的语音,并可以通过将系数$t_0$的实部设置为1,将其余系数设置为0来禁用其效果。多目标综合损失为:
$$公式7:L=\lambda_{spec}L_{spec}+\lambda_{ML}L_{ML}$$
2.4 数据增强
DeepFilterNet在深度噪声抑制(DNS) 3挑战数据集[12]上进行训练,而我们在DNS4[9]的英语部分上对DeepFilterNet2进行训练,因为DNS4[9]包含更多的全波段噪声和语音样本。
在语音增强中,通常只减少背景噪声,在某些情况下还会减少混响[1,11,2]。在这项工作中,我们将SE的概念进一步扩展到下降。因此,我们区分了动态数据预处理管道中的增强和失真。增强应用于语音和噪声样本,目的是进一步扩展网络在训练中观察到的数据分布。另一方面,失真只应用于语音样本,用于噪声混合的创建。清晰语音目标不受失真变换的影响。因此,DNN学会重建原始的、未失真的语音信号。目前,DeepFilterNet框架支持以下随机增强
- 随机二阶滤波[13]
- 改变Gain
- 通过二阶滤波器的均衡器
- 重采样的速度和音高变化[13]
- 添加彩色噪声(不用于语音样本)
除去噪外,DeepFilterNet还将尝试恢复以下失真:
- 混响:通过衰减房间传递函数,目标信号将包含更少的混响。
- 裁剪信噪比为[20,0]dB的伪影。
2.5 DNN
我们保留了DeepFilterNet[2]的一般卷积U-Net结构,但做了以下调整。最终的架构如图3所示。
1、Unification of the encoder。ERB和复数特征的卷积现在都在编码器中处理,连接,并传递到分组线性(GLinear)层和单个GRU。
2、Simplify Grouping。以前,线性层和GRU层的分组是通过独立的更小的层实现的,这导致了相对较高的处理开销。在DeepFilterNet2中,只有线性层在频率轴上分组,通过单一矩阵乘法实现。GRU hidden dim被减少到256。我们还在DF解码器的输出层应用分组,激励相邻频率足以预测滤波器系数。这大大减少了运行时间,而只增加了少量flop的数量。
3、Reduction of temporal kernels。虽然时间卷积(TCN)或时间注意已经成功地应用于SE,但它们在实时推理时需要时间缓冲。这可以通过环形缓冲区有效地实现,然而,缓冲区需要保存在内存中。这种额外的内存访问可能会导致带宽成为限制瓶颈,尤其对于嵌入式设备来说可能是这种情况。因此,我们减小了卷积的核大小并将卷积从2*3转置到1*3,即频率轴上的1D。现在只有输入层通过因果3*3卷积合并了时间上下文。这大大减少了实时推理期间使用的时间缓冲区。
4、Depthwise pathway convolutions。当使用可分离卷积时,大量的参数和flop位于1*1卷积处。因此,在路径卷积(PConv)中添加分组可以大大减少参数,同时不会损失任何显著的SE性能。
图3 DeepFilterNet2架构
2.6 后处理
我们采用了Valin等人[1]首先提出的后滤波器,目的是略微过衰减有噪声的TF bin,同时为噪声较小的频点增加一些增益。我们在第一阶段的预测gains上执行此操作
$$公式8:\begin{aligned}
G^{\prime}(k, b) &\leftarrow G(k, b)) \cdot \sin \left(\frac{\pi}{2} G(k, b)\right) \\
G(k, b) & \leftarrow \frac{(1+\beta) \cdot G(k, b)}{1+\beta+G^{\prime}(b, k)}
\end{aligned}$$
3 实验
3.1 实现细节
如2.4节所述,我们在DNS4数据集上训练DeepFilterNet2,总共使用超过500小时的全波段纯净语音(大约)。150 H的噪声以及150个真实的和60000个模拟的HRTFs。我们将数据分为训练集、验证集和测试集(70%、15%、15%)。Voicebank集是分离说话人独占,与测试集没有重叠。我们在Voicebank+Demand测试集[8]和DNS4盲测试集[9]上评估了我们的方法。我们用AdamW对模型进行了100个epoch的训练,并根据验证损失选择最佳模型。
在这项工作中,我们使用20毫秒的窗口,50%的重叠,以及两个帧的look-ahead,导致总体算法延迟40毫秒。我们取32个ERB波段,$f_{DF}$= 5kHz,DF阶数$N = 5$,look-ahead = 2帧。损失参数$\lambda_{spec}=1e3$和$\lambda_{spec}=5e2$的选择使两个损失的数量级相同。源代码和一个预先训练的DeepFilterNet2可以在https://github.com/Rikorose/DeepFilterNet获得。
3.2 结果
我们使用Valentini语音库+需求测试集[8]来评估DeepFilterNet2的语音增强性能。因此,我们选择WB-PESQ [19], STOI[20]和综合指标CSIG, CBAK, COVL[21]。表1显示了DeepFilterNet2与其他先进(SOTA)方法的比较结果。可以发现,DeepFilterNet2实现了sota级别的结果,同时需要最小的每秒乘法累积运算(MACS)。在DeepFilterNet(第2.5节)上,参数的数量略有增加,但该网络能够以两倍多的速度运行,并获得0.27的高PESQ评分。GaGNet[5]实现了类似的RTF,同时具有良好的SE性能。然而,它只在提供整个音频时运行得很快,由于它使用了大的时间卷积核,需要大的时间缓冲区。FRCRN[3]在大多数指标上都能获得最好的结果,但具有较高的计算复杂度,这在嵌入式设备上是不可实现的。
表1 Voicebank+Demand测试集的客观结果。实时因子(RTF)是在笔记本Core i5-8250U CPU上通过5次运行的平均值来测量的。
未报告的相关工作表示为 -
- a、度量和RTF测量的源代码和权重提供在https://github.com/xiph/rnnoise
- b、注意,RNNoise运行单线程
- c、RTF测量的源代码提供在https://github.com/huyanxin/DeepComplexCRN
- d、复合和STOI指标由相同的作者在[16]中提供
- e、度量和RTF测量的源代码和权重提供在:https://github.com/hit-thusz-RookieCJ/FullSubNet-plus
- f、RTF测量的源代码提供在:https://github.com/Andong-Li-speech/GaGNet
表2显示了DNSMOS P.835[22]在DNS4盲试验集上的结果。虽然deepfilternet[2]不能提高语音质量平均意见评分(SIGMOS),但使用DeepFilterNet2我们也获得了良好的结果,对于背景和总体MOS值。此外,DeepFilterNet2相对接近用于选择纯净语音样本来训练DNS4基线NSNet2 (SIG=4.2, BAK=4.5, OVL=4.0)[9]的最小DNSMOS值,进一步强调了其良好的SE性能。
4 结论
在这项工作中,我们提出了一个低复杂度的语音增强框架DeepFilterNet2。利用DeepFilterNet的感知方法,我们能够进一步应用一些优化,从而提高SOTA SE的性能。由于其轻量级的架构,它可以在树莓派4上以0.42的实时系数运行。在未来的工作中,我们计划将语音增强的想法扩展到其他增强,比如纠正由于当前房间环境造成的低通特性。
5 参考
[1] Jean-Marc Valin, Umut Isik, Neerad Phansalkar, Ritwik Giri, Karim Helwani, and Arvindh Krishnaswamy, A Perceptually-Motivated Approach for Low-Complexity, Real-Time Enhancement of Fullband Speech, in INTERSPEECH 2020, 2020.
[2] Hendrik Schr oter, Alberto N Escalante-B, Tobias Rosenkranz, and Andreas Maier, DeepFilterNet: A low complexity speech enhancement framework for fullband audio based on deep filtering, in IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP). IEEE, 2022.
[3] Shengkui Zhao, Bin Ma, Karn N Watcharasupat, and Woon-Seng Gan, FRCRN: Boosting feature representation using frequency recurrence for monaural speech enhancement, in IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP). IEEE, 2022.
[4] Guochen Yu, Yuansheng Guan, Weixin Meng, Chengshi Zheng, and Hui Wang, DMF-Net: A decoupling-style multi-band fusion model for real-time full-band speech enhancement, arXiv preprint arXiv:2203.00472, 2022.
[5] Andong Li, Chengshi Zheng, Lu Zhang, and Xiaodong Li, Glance and gaze: A collaborative learning framework for single-channel speech enhancement, Applied Acoustics, vol. 187, 2022.
[6] Hendrik Schr oter, Tobias Rosenkranz, Alberto Escalante Banuelos, Marc Aubreville, and Andreas Maier, CLCNet: Deep learning-based noise reduction for hearing aids using complex linear coding, in IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP), 2020.
[7] Wolfgang Mack and Emanu el AP Habets, Deep Filtering: Signal Extraction and Reconstruction Using Complex Time-Frequency Filters, IEEE Signal Processing Letters, vol. 27, 2020.
[8] Cassia Valentini-Botinhao, Xin Wang, Shinji Takaki, and Junichi Yamagishi, Investigating RNN-based speech enhancement methods for noise-robust Text-toSpeech, in SSW, 2016.
[9] Harishchandra Dubey, Vishak Gopal, Ross Cutler, Ashkan Aazami, Sergiy Matusevych, Sebastian Braun, Sefik Emre Eskimez, Manthan Thakker, Takuya Yoshioka, Hannes Gamper, et al., ICASSP 2022 deep noise suppression challenge, in IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP). IEEE, 2022.
[10] Samuel L Smith, Pieter-Jan Kindermans, Chris Ying, and Quoc V Le, Don t decay the learning rate, increase the batch size, arXiv preprint arXiv:1711.00489, 2017.
[11] Hyeong-Seok Choi, Sungjin Park, Jie Hwan Lee, Hoon Heo, Dongsuk Jeon, and Kyogu Lee, Real-time denoising and dereverberation wtih tiny recurrent u-net, in International Conference on Acoustics, Speech and Signal Processing (ICASSP). IEEE, 2021.
[12] Chandan KA Reddy, Harishchandra Dubey, Kazuhito Koishida, Arun Nair, Vishak Gopal, Ross Cutler, Sebastian Braun, Hannes Gamper, Robert Aichner, and Sriram Srinivasan, Interspeech 2021 deep noise suppression challenge, in INTERSPEECH, 2021.
[13] Jean-Marc Valin, A hybrid dsp/deep learning approach to real-time full-band speech enhancement, in 2018 IEEE 20th international workshop on multimedia signal processing (MMSP). IEEE, 2018.
[14] Sebastian Braun, Hannes Gamper, Chandan KA Reddy, and Ivan Tashev, Towards efficient models for realtime deep noise suppression, in IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP). IEEE, 2021.
[15] Yanxin Hu, Yun Liu, Shubo Lv, Mengtao Xing, Shimin Zhang, Yihui Fu, Jian Wu, Bihong Zhang, and Lei Xie, DCCRN: Deep complex convolution recurrent network for phase-aware speech enhancement, in INTERSPEECH, 2020.
[16] Shubo Lv, Yihui Fu, Mengtao Xing, Jiayao Sun, Lei Xie, Jun Huang, Yannan Wang, and Tao Yu, SDCCRN: Super wide band dccrn with learnable complex feature for speech enhancement, in IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP). IEEE, 2022.
[17] Shubo Lv, Yanxin Hu, Shimin Zhang, and Lei Xie, DCCRN+: Channel-wise Subband DCCRN with SNR Estimation for Speech Enhancement, in INTERSPEECH, 2021.
[18] Jun Chen, Zilin Wang, Deyi Tuo, Zhiyong Wu, Shiyin Kang, and Helen Meng, FullSubNet+: Channel attention fullsubnet with complex spectrograms for speech enhancement, in IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP). IEEE, 2022.
[19] ITU, Wideband extension to Recommendation P.862 for the assessment of wideband telephone networks and speech codecs, ITU-T Recommendation P.862.2, 2007.
[20] Cees H Taal, Richard C Hendriks, Richard Heusdens, and Jesper Jensen, An algorithm for intelligibility prediction of time frequency weighted noisy speech, IEEE Transactions on Audio, Speech, and Language Processing, 2011.
[21] Yi Hu and Philipos C Loizou, Evaluation of objective quality measures for speech enhancement, IEEE Transactions on audio, speech, and language processing, 2007.
[22] Chandan KA Reddy, Vishak Gopal, and Ross Cutler, Dnsmos p. 835: A non-intrusive perceptual objective speech quality metric to evaluate noise suppressors, in IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP). IEEE, 2022.