Github link here 👇🏻 ‣
关于音频降噪的开发总结,主要以复现 NSNet2 论文为主,并且配合整个 Pipeline 的经验和 tips 的总结。
音频降噪的AI模型多以编解码器的结构为主,NSNet2 模型结构也不例外。下图可以看出 NSNet2 的模型结构很简单。

模型很简单,实现代码如下:
其实可以把 Log pow 和后面抑制的部分都添加到模型中,有需要的话自行添加。
主要 pipeline 可以概括为:
<aside> 🗣 input → STFT → Encoder → Decoder → ISTFT → output
</aside>

以 NSNet2 的 pipeline 为例,通过 STFT 转换后进行降噪,通过 skip connection 与模型输出相乘来限制抑制增益,最后通过 ISTFT 还原,从而实现降噪。
对于实时音频降噪而言,STFT 这一部分,实际上可以对一个 window 长度的 frame 直接进行 FFT,最后将模型输出的结果进行逆变换即可。这里如何处理输出的结果中重叠的部分,知乎里有一个回答解释的很好。