通过上文 噪声抑制ANS原理解析,我们学习了 WebRTC 的一种降噪方案,大致了解了噪声抑制的基本原理。基于对这些原理的了解,我们可以进一步讨论WebRTC 降噪模块存在的一些问题:
1 对非稳态噪声的降噪效果不佳
- 如果噪声的统计特性不稳定,那么基于统计模型的噪声估计效果会大打折扣,也会影响降噪效果
- 因为只有在概率足以判断当前音频帧为噪声时,算法才会更新初始噪声估计。如果噪声经常改变,而且在语音段有变化(比如有人说话的时候),可能就无法被判定出来,影响抑制效果
2 对低信噪比场景的降噪效果不佳
在大噪声/低语音能量的场景下,由于信噪比很低,对语音/噪声的概率判断成功率会下降,可能导致噪声抑制不干净,甚至可能错误抑制了语音造成语音损伤
大家在实际应用中,如果使用了WebRTC降噪、或者基于WebRTC降噪改良的降噪方案,遇到噪声抑制效果差的问题时,也可以参考上面两点进行初步分析。
AI 降噪—弥补传统算法的不足
对于非稳态噪声、低信噪比等复杂场景的降噪效果不佳,其实是传统降噪算法的通病,也是对各大 RTC 厂商的技术挑战。如何弥补传统算法的不足呢?AI,可能是一个正确的答案。
随着深度学习的广泛应用,业界涌现了大量基于神经网络的音频降噪算法,这些算法在降噪效果、泛化能力上都有比较好的表现,但也存在一些无法忽略的问题。比如一些算法的算力要求比较高,很难应用到实际的用户设备上,尤其是一些低端设备来说,将 AI 算法跑起来简直是奢望。即使是在高端设备上,如何合理地分配算力资源避免性能浪费也是个难题。另外,AI 算法在不同场景、尤其是在 Training Data 未涉及的场景下,其降噪效果可能无法保证鲁棒性。
基于这些问题,ZEGO 提出了一个轻量级的神经网络降噪方法 —— ZegoAIDenoise,该算法对于稳态/非稳态噪声都有很好的降噪效果,保证了语音的质量和可懂度,同时将性能开销控制在一个很低的量级:在 1.4G Hz主频的 iPhone 6上,CPU 性能开销为 1% 左右,与 WebRTC 的通用降噪相当,可以覆盖大部分中低端机型。(对于 ZegoAIDenoise 原理感兴趣的同学,可以点击阅读 AI 降噪:消灭非稳态噪音的利器 )。
有 ZegoAIDenoise 加持,再结合原有的自研改良降噪算法,开发者使用 ZEGO SDK 时,可以在良好消除稳态噪声的基础上,同步处理非稳态噪声(包括鼠标点击声、键盘声、敲击声、空调声、厨房碗碟碰撞声、餐厅嘈杂声、环境风声、咳嗽声、吹气声等非人声噪声),为语音聊天、线上会议、连麦开黑等场景带来更好的通话效果。能在不增加性能负担、处理时延的前提下优化实际通话体验,有利于远程通话在更多环境苛刻的场景中发挥作用,拓宽 RTC 的实际应用场景。