一种结合了经典信号处理与深度学习的方法,使其足够高效,可在手机上运行。
PercepNet 是某中心语音通话“语音焦点”功能的核心技术之一。它旨在实时抑制语音信号中的噪声和混响,同时不占用过多CPU资源,使其能够在手机和其他功耗受限的设备上使用。在 Interspeech 2020 的深度噪声抑制挑战赛中,PercepNet 在实时处理类别中获得了第二名,仅使用了CPU单核4%的资源。
语音增强的标准方法是使用短时傅里叶变换。然而,这存在两个主要问题:
为了降低复杂度,PercepNet 采用了基于人类听觉系统的表示方法:
因此,PercepNet 使用等效矩形带宽滤波器组来表示语音频谱。它将频谱划分为34个重叠的频带(而非400个频点),这极大地简化了模型。每个频带只需估计一个介于0和1之间的增益值。
仅有谱包络信息还不够。语音中的元音主要由谐波(基频的整数倍)构成,而许多辅音(如 /s/)则更像噪声。为了增强谐波成分,PercepNet 引入了梳状滤波技术。
为了进一步提升感知质量,PercepNet 采用了后置滤波技术,即进一步衰减仍然过于嘈杂的频带。虽然这会使谱包络略微偏离理想状态,但人耳对此不太敏感,却能更明显地感觉到噪声的减少。
在上述感知表示的框架下,深度神经网络的任务被大大简化。它只需要预测34个频带增益和34个梳状滤波强度(均为0到1之间的值)。模型采用跨时间的卷积层和具有长时记忆的循环层(如GRU)。该网络使用添加了各种噪声和混响的干净语音进行训练,以预测最优的增益和滤波强度。
PercepNet 的 DNN 模型包含约800万个权重。通过将所有权重量化为8位,并利用现代CPU的SIMD指令,可以在实时运行中实现高效计算。在一台现代笔记本电脑CPU上,PercepNet 实时运行占用不到一个核心的5%。
算法引入的延迟约为30毫秒(包括STFT重建10毫秒和神经网络前瞻20毫秒),这在大多数实时通信场景中是可接受的。
PercepNet 的设计理念非常通用,可应用于其他问题,如声学回声控制和波束成形后置滤波。未来,该技术还能被进一步优化以在CPU上高效运行,甚至可以作为WebAssembly代码在浏览器中运行,用于基于WebRTC的应用。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。