2020年,有没有一种结合DSP和深度学习的实时全频带语音增强方法叫RNNoise?
摘要:网上已经有很多人翻译了,但我做这工作只是想让自己印象更深刻 论文地址:基于DSP深度学习的实时全频带语音增强方法 博客地址:https:www.cnblogs.comLXP-Neverp15144882.html 论文代码:ht
网上已经有很多人翻译了,但我做这工作只是想让自己印象更深刻
论文地址:基于DSP/深度学习的实时全频带语音增强方法
博客地址:https://www.cnblogs.com/LXP-Never/p/15144882.html
论文代码:https://github.com/xiph/rnnoise
主页:https://jmvalin.ca/demo/rnnoise/
摘要
尽管噪声抑制已经是信号处理中一个成熟的领域,但仍然需要对它的估计算法和参数进行调优。文章演示了一种融合DSP和深度学习的方法来抑制噪声。该方法在保持尽可能低的计算复杂度的同时,实现了高质量的增强语音。使用具有四个循环神经网络来估计理想临界频带增益(ideal critical band gains),并用传统的pitch滤波器抑制谐波(pitch)之间的噪声。与传统的最小均方误差谱估计器相比,该方法可显着提高语音质量,同时将复杂度保持在足够低的水平。
关键词:噪声抑制,循环神经网络
1 引言
至少从 70年代开始,噪声抑制就成为了人们关注的话题。尽管质量有了显著提升,但算法结构基本保持不变。一些谱估计技术依赖于噪声谱估计器,而噪声谱估计器由语音活动检测器( VAD)或类似的算法驱动,如图1所示。 3个模块中的每个模块都需要准确的估计器,并且很难去调。尽管研究者们改进了这些估计器,但仍然很难设计它们,并且该过程需要大量的人工调优。这就是为什么最近深度学习技术上的进展对噪声抑制具有吸引力的原因。
图1 大多数噪声抑制算法的高级结构
深度学习技术已被用于噪声抑制。许多方法都针对不需要低延迟的自动语音识别(ASR)应用。而且,在许多情况下,如果没有GPU,神经网络的庞大规模将使得实时变得困难。文章专注于低复杂度的实时应用(例如视频会议),并且专注于全频带(48 kHz)语音。为了实现这些目标,文章选择了一种混合的方法,该方法依靠信号处理技术并使用深度学习来替代传统上难以调优的估计器。该方法与所谓的端到端系统形成鲜明对比,在端到端系统中,大多数或所有信号处理操作 都被机器学习取代。这些端到端系统已经明确地展示了深度学习的能力,但是它们通常以显著地增加复杂度为代价。
我们提出的方法具有可接受的复杂性(第4节),并且它提供了比更传统的方法更好的质量(第5节)。我们在第6节总结了进一步改进该方法的方向。
2 信号模型
我们提出了一种混合的噪声抑制方法。我们的目标是在需要仔细调整的噪声抑制方面使用深度学习,而在不需要调整的部分使用传统的信号处理模块。
算法使用20ms的帧长,10ms的帧移。分析窗(analysis)和合成窗(synthesis)都使用Vorbis窗,它满足Princen-Bradley准则。该窗定义如下:
$$公式1:w(n)=\sin \left[\frac{\pi}{2} \sin ^{2}\left(\frac{\pi n}{N}\right)\right]$$
其中$N$是窗长
系统框图如图2所示。大部分的抑制是在低分辨率的谱包络上进行的,使用循环神经网络计算出频谱增益(maks,理想比值掩模IRM的平方根)。后面还使用梳状滤波器(pitchcomb filter)来抑制谐波(pitch harmonics)之间的噪声以达到更加精细的抑制。
图2 框图
Pitch analysis:基音追踪,追踪得到的基音周期一方面用于Feature extraction作为一个特征,另一方面利用其得到$x(n−pindex)$进而进行后面的基音滤波(pitch filtering)操作。
feature extration:论文中求取42维特征的部分,将其作为输入送入RNN,RNN输出22位数据
band gain interpolation:每一帧的增益为22维,因而为了将其作用于点数为481(帧长+1)的$X(k)$上,需要对其进行插值,
A 带(band)结构
在[5]的方法中,使用神经网络直接估计频率Bin的大小,共需要6144个隐藏单元和近1000万个权重来处理8 kHz的语音。使用20ms帧扩展到48kHz语音需要400个输出(0到20kHz)的网络,这显然会导致我们无法承受的更高复杂性。
为了避免产生大量输出——从而产生大量神经元——我们决定不直接处理样本或频谱。我们假设语音和噪声的频谱包络足够平坦,使用比频率bin更粗糙的分辨率——bark scale 频段,这是一种与人耳对声音感知相匹配的频率刻度。我们总共使用 22 个band,而不是我们必须考虑的 480 个(复数)频谱值。
