摘要:轻量级神经网络降噪方法,解析 ZegoAIDenoise 的算法实现!

文|即构引擎开发团队

一、轻量级神经网络降噪——ZegoAIDenoise

当下,用户在进行音频通话时常常置身于各种不同的场景中,嘈杂的背景声音以及非稳态噪音往往会对通话产生干扰,其中非稳态噪音是指在时间分布上不连续,并有其形态特征的噪声,是相对稳态噪声而言的,例如,鼠标点击声、键盘声、敲击声、空调声、厨房碗碟碰撞声等都属于非稳态噪音。

而基于信号处理的传统音频降噪算法对于平稳噪声有比较好的降噪效果,但是对于非平稳噪声,低信噪比等复杂场景,降噪效果较差,甚至失效。

随着目前深度学习的广泛应用,基于神经网络的音频降噪算法大量涌现,这些算法无论在降噪效果上,还是泛化能力上,都能取得比较好的结果,很好的弥补了传统算法的不足。

但是,这些方案大多是直接基于短时傅里叶变换后的频域信号或者时域信号的端到端方案,存在网络模型过于复杂,性能消耗巨大等问题,给实时场景交付提出了很大的挑战。

基于上述挑战,ZEGO 即构科技提出了一个轻量级的神经网络降噪方法 —— ZegoAIDenoise,对于平稳和非平稳噪声都有很好的降噪效果,保证了语音的质量和可懂度,同时将性能开销控制在一个很低的量级,与传统降噪算法相当,成功覆盖大部分中低端机型。

那么今天将详细为大家介绍 ZegoAIDenoise 的实现原理,及如何在低性能开销的前提下,提高深度学习算法的降噪效果及泛化能力。

二、ZegoAIDenoise 算法原理解析

ZegoAIDenoise 采用传统算法和深度学习相结合的 Hybrid 方法,为了降低性能开销,采用频域分成子带方案,并无限缩小深度学习网络模型,用尽量小的网络模型达到更好的降噪效果。

1、信号模型

如图 1 所示,传统降噪基本原理多采用谱减法,即根据谱能量估算噪声能量及各频点增益,得到干净语音。所以,只要 ZegoAIDenoise 能准确估算出频点增益 G,就能从带噪的麦克风信号中得到期望的干净语音信号 x(n)。

频点增益 G 的推导过程如下:

y(n) = x(n) + d(n) ……… (1)

公式(1) 中,x(n)代表干净语音信号,d(n)代表噪声信号,y(n)代表麦克风采集的信号。

对公式 (1) 做 STFT 之后,得到公式 (2):

Y(i, k) = X(i, k) + D(i, k) ……… (2)

其中,Y(i, k),X(i, k) 和 D (i, k) 分别代表 y(n),x(n),d(n)的频域信号,i代表第i个时域帧,k代表频点,由此,得到公式(3):

G(i, k) = |S(i, k)| / |Y(i, k)| ……… (3)

G(i, k) 代表的是估算的频点增益。所以,只要估算出 G(i, k),就能通过带噪信号Y(i, k),估算出语音信号 S(i, k)。

2、 特征值

为了避免大量的输出,避免使用大量神经元,ZegoAIDenoise 决定不直接使用语音样本或者能量谱。作为代替,ZegoAIDenoise 考虑一种符合人类听觉感知的频率尺度 —— 巴克频带尺度,总共用了 22 个子带。

为了更好估算 G(i, k),需要选择更能代表语音特性的特征,从而区分语音和噪声,ZegoAIDenoise 引入了基于基因周期的梳状滤波器 (4)。式中,M 是中心抽头两侧的周期数,通过调整 M 值,改变时延。

……… (4)

自适应目标增益,如果通过梳状滤波器得到的相干性能量低于干净语音的相干性能量,则调整目标增益,限制最大衰减量,能有效地解决在大嘈杂的场景的过抑制问题。

使用梳状滤波器,能有效地提高语音的谐波特性,降低谐波间噪声,用一定时延的代价,换取更好的降噪效果。

3、CRNN网络模型

如图 2 所示,ZegoAIDenoise 采用传统算法和深度学习相结合的 Hybrid 方法,传统算法对实时数据进行特征提取及后处理,深度学习估计子带增益,Hybrid 不仅能满足实时性要求,同时能适应场景复杂的噪声环境,给实时通信带来良好的用户体验。

如图 3 所示,CRNN 模型使用两个卷积层和多个 GRU 层。卷积层的使用能进一步地提高特征提取的有效性及泛化能力。

训练时,通过对语音和噪声应用不同的随机二阶零极点滤波器,ZegoAIDenoise 改进了模型的泛化性。ZegoAIDenoise 还对两个信号应用相同的随机频谱倾斜,以便更好地概括不同的麦克风频率响应。为了实现带宽独立性,ZegoAIDenoise 采用了一个低通滤波器,其随机截止频率在 3 kHz 和 16 kHz 之间。这使得在窄带到全波段音频上使用同一型号成为可能。

训练过程中,损失函数的设计也尤为重要。除了平方误差,ZegoAIDenoise 还引入四次方误差来强调训练估计错误的代价。同时,还增加了注意力机制,用以减少对语音的损伤。

三、ZegoAIDenoise 效果及性能对比

在对比项上,ZegoAIDenoise 主要和传统降噪及 RNNoise 降噪进行了对比,无论在 MOS,还是在可懂度上都有明显提升。

如上效果展示,ZegoAIDenoise 针对不同的噪声类型及场景,均取得比较理想的降噪效果。在实时处理的性能测试方面,默认采样率 32kHz,帧长 10ms,在 1.4G Hz主频的 iPhone 6上,CPU 性能开销为 1% 左右,与 WebRTC 的通用降噪相当。所以,ZegoAIDenoise 无论在降噪效果、泛化能力,还是性能开销上,都取得了长足的进步,实现了机型和场景的全覆盖。

ZEGO

综上所述,ZegoAIDenoise 实现了一个轻量级的神经网络降噪方法,无论是在稳态还是非稳态的噪声环境,都能取得比较好的降噪效果,高质量的音频降噪能够有效提升用户实时互动体验。

目前,ZEGO Express SDK 已正式提供 AI 降噪功能,开发者可以在使用麦克风采集声音时,对声音进行降噪处理,并在传统降噪(详情请参考 噪声抑制)消除稳态噪声的基础上,同步处理非稳态噪声(包括鼠标点击声、键盘声、敲击声、空调声、厨房碗碟碰撞声、餐厅嘈杂声、环境风声、咳嗽声、吹气声等非人声噪声),保留纯净语音,提升用户的通话体验。

未来,我们会结合具体行业和场景,引入更多的深度学习算法,提升产品的场景适应能力,给用户提供更好的音频体验!

 
 

消灭非稳态噪音的利器 - AI 降噪的更多相关文章

  1. 主动降噪,通话降噪及AI降噪之辨

    近日,三星发布的Buds Pro 耳机中,宣传有以下功能.其中涉及到噪声的,有主动降噪,通话降噪及智能降噪,很多人对他们的具体用途容易混淆,今天我们来辨析一下. 主动降噪和通话降噪完全不是一个概念,无 ...

  2. 声网AI降噪测评系统初探

    作者:孟赛斯 前言 音频质量的优化是一个复杂的系统工程,而降噪是这个系统工程中的一个重要环节,传统的降噪技术经过几十年的发展已经陷入了瓶颈期,尤其是对非平稳噪声的抑制越来越不能满足新场景的需求.而近几 ...

  3. 微软发布云端基因服务:推动AI驱动的精准医疗

    微软发布云端基因服务:推动AI驱动的精准医疗 2018年03月07日 00:00:00 微软研究院AI头条 阅读数:117    版权声明:本文为博主原创文章,未经博主允许不得转载. https:// ...

  4. App 用户新体验——Agora Native SDK 3.4.0

    声网Agora Native SDK 3.4.0 本月已正式上线.新版本不仅增加了更丰富的实时美声音效.屏幕共享.虚拟节拍器等功能,同时在 SDK 的稳定性.兼容性及安全合规上做了大幅度升级,希望为 ...

  5. 声网 X Yalla:面对面不如线上见,中东年轻人最偏爱的语聊房是怎样“炼”成的?

    "实时互动的本质是服务,而非功能."这是声网一直以来坚信的理念. 功能上线之后,服务才真正开始.实时互动的每一秒,甚至每一毫秒的体验都需要得到稳定.可靠的保证.而广大用户之所以能够 ...

  6. 基于机器学习的语音编解码器声网Agora Silver:支持超低码率下的高音质语音互动

    从 1860 年电话发明,到现如今通过网络进行语音互动,语音始终是最自然.最基础的实时互动方式.过去几年,语音实时互动成为越来越多人日常生活的一部分.但是每个人都会遇到弱网环境,这会直接影响语音通话体 ...

  7. 一起听、一起看、一起唱掀起Z世代青年社交浪潮

    6月5日,声网Agora 联合人人都是产品经理在成都举办了主题为"社交泛娱乐APP运营增长力和新玩法解析"的沙龙.现场围绕社交泛娱乐新玩法解析以及出海的新机遇.支付痛点.增长.运营 ...

  8. 探究光线追踪技术及UE4的实现

    目录 一.光线追踪概述 1.1 光线追踪是什么 1.2 光线追踪的特点 1.3 光线追踪的历史 1.4 光线追踪的应用 二.光线追踪的原理 2.1 光线追踪的物理原理 2.2 光线追踪算法 2.3 R ...

  9. 深入GPU硬件架构及运行机制

    目录 一.导言 1.1 为何要了解GPU? 1.2 内容要点 1.3 带着问题阅读 二.GPU概述 2.1 GPU是什么? 2.2 GPU历史 2.2.1 NV GPU发展史 2.2.2 NV GPU ...

  10. RTC为何这么火?

    国内疫情已经接近尾声,有疫情的原因孵化的音视频互动类 App数量出现井喷式增长,通讯场景被资本关注,市场持续走高.在线教育.娱乐社交.直播带货等领域逆势增长,也带动了开发者们对于 IM 和RTC能力的 ...

随机推荐

  1. $\Beta$分布推导与可视化

    $\Gamma$函数 $\Gamma$函数(Gamma函数)是阶乘函数在实数和复数域的扩展.对于正整数$n$,阶乘函数表示为$n! = 1 \times 2 \times ... \times n$. ...

  2. php正则表达式大全/php正则表达式使用方法整理集合

    匹配数字 "^\d+$" //非负整数(正整数 + 0) "[1][1-9][0-9]$" //正整数 "^((-\d+)|(0+))$" ...

  3. ES6模块化之import的使用方式

    1.引入外部文件: <script src='文件路径' type='module'><!--PS:这个type="module" 必须要写,否则浏览器会报错-- ...

  4. SPSS计算极值、平均值、中位数、方差、偏度、峰度、变异系数

      本文介绍基于SPSS软件的经典统计学分析与偏度.峰度等常用统计学指标的计算方法.   首先需要说明,本文所述数据的经典统计学分析,包括计算数据的极值.平均值.中位数.标准差.方差.变异系数.偏度与 ...

  5. 推荐一个.Net Core开发的Websocket群聊、私聊的开源项目

    今天给大家推荐一个使用Websocket协议实现的.高性能即时聊天组件,可用于群聊.好友聊天.游戏直播等场景. 项目简介 这是一个基于.Net Core开发的.简单.高性能的通讯组件,支持点对点发送. ...

  6. 2023-03-16:给定一个由 0 和 1 组成的数组 arr ,将数组分成 3 个非空的部分, 使得所有这些部分表示相同的二进制值。 如果可以做到,请返回任何 [i, j],其中 i+1 < j

    2023-03-16:给定一个由 0 和 1 组成的数组 arr ,将数组分成 3 个非空的部分, 使得所有这些部分表示相同的二进制值. 如果可以做到,请返回任何 [i, j],其中 i+1 < ...

  7. 2020-10-22:谈谈java中的LongAdder和LongAccumulator的相同点和不同点。

    福哥答案2020-10-22: 简单回答:相同点:都是多个单元操作.不同点:LongAdder相加,LongAccumulator自定义计算规则. 中级回答:相同点: LongAddr与LongAcc ...

  8. 2022-06-17:给定一个数组arr,含有n个数字,可能有正、有负、有0, 给定一个正数k。 返回所有子序列中,累加和最大的前k个子序列累加和。 假设K不大,怎么算最快? 来自Amazon。

    2022-06-17:给定一个数组arr,含有n个数字,可能有正.有负.有0, 给定一个正数k. 返回所有子序列中,累加和最大的前k个子序列累加和. 假设K不大,怎么算最快? 来自Amazon. 答案 ...

  9. 2021-01-06:mysql中,我存十亿个手机号码,考虑存储空间和查询效率,用什么类型的字段去存?

    福哥答案2021-01-06: [答案来自此链接:](https://www.zhihu.com/question/438078173)首先提出假设:考虑一下这几个问题:手机号码都是数字吗?都是中国的 ...

  10. 2021-12-31:给定一个arr,里面的数字都是0~9, 你可以随意使用arr中的数字,哪怕打乱顺序也行, 请拼出一个能被3整除的,最大的数字,用str形式返回。 来自去哪儿网。

    2021-12-31:给定一个arr,里面的数字都是0~9, 你可以随意使用arr中的数字,哪怕打乱顺序也行, 请拼出一个能被3整除的,最大的数字,用str形式返回. 来自去哪儿网. 答案2021-1 ...