打破传统降噪算法|AliDenoise的背后技术

简介: 近年电商直播越来越火热,同时移动端直播变得越来越普及,直播场景也越来越多样化,不再限于传统的直播间,开阔喧嚷的户外、喧闹的商场甚至是市场都可以变成主播直播的根据地。影响直播最终观感最直接的两个因素就是画面和声音,场景的复杂化对传统的实时音频信号处理算法提出了更大的挑战,其中最直观的一个现象就是,场景变吵了,声音听起来不干净,这就是音频3A算法中的降噪算法需要处理的问题。

原创 庄恕、七琦 淘系技术  2020-09-01


背景介绍


image.png

                     

户外旅行&户外代购&玉石市场

 

传统降噪算法可以部分处理这种噪声,它的方法是:


  1. 对时域信号做短时傅里叶变换,就得到了信号的频域表现形式,对幅度谱平方得到信号能量;
  2. 在计算了带噪语音的幅度谱后,会借助vad模块的结果进行噪声谱N的估计,由计算出的功率谱和估计出的噪声谱来计算先验信噪比;
  3. 再经过变换得到增益函数,一般取维纳增益,将计算得到的增益函数乘以带噪语音的频域形式 再经过反变换,就得到了增强后的语音的时域信号。

 

不难看出,这是一个比较复杂的信号分离任务,传统的信号处理方法通过一系列条件约束求得了最终的解析解或迭代解,一般假设噪声信号和语音信号之间相互独立,cosq为0,但这通常是不合理的假设,也影响了算法效果的上限;

 

image.png


 

问题与挑战

 

传统降噪算法面临的挑战如下:


  1. 非平稳突发性噪声抑制能力差,比如户外直播场景中突然出现的汽车鸣笛声,传统降噪算法就难以消除干净
  2. 传统算法增强后会有很多残留噪声,这些噪声会导致主观听感差,甚至影响语音信息传达的可懂度;
  3. 目前传统算法中求得解析解的过程中存在很多假设,难以适应复杂多变的实际场景,特别是瞬态噪声;
  4. 在低信噪比情况下,传统方法的降噪效果几乎是失效的,其中VAD模块误判的可能性大大增加,尤其在噪声的能量大于语音的能量时,几乎无法将语音谱恢复出来,而这对天然能量就比较低的辅音结构来说是毁灭性的

 

 

业界做法


针对传统算法存在的弊端,业界在2014年开始探索数据驱动类算法,也就是深度学习相关的算法,比较典型的是RNN Noise和 CRNN方法。

 

RNN Noise是一种基于传统算法改进的混合方法。整个算法为了保证实时性,训练特征主要以传统信号的特征为主,(涉及bark域的能量和pitch域的相关能量系数、pitch_index的值、带噪语音bark域的能量和带噪语音bark域倒谱相关的信息),一共42个,并没有采用深度学习算法中主流的自动提取特征机制,网络结构以GRU为主,同时有一个副产物VAD保证有效收敛,最终的输出为bark域的22个增益,经过插值平滑处理后与带噪信号的频域信号相乘,反变换后得到降噪后的时域语音信号。

 

image.png


这个算法的核心优势是可实时,性能消耗低,降噪能力也有所增强,但语音损伤比较严重,经过分析,认为原因主要有三个:


  1. 数据集问题,rnnoise的训练数据集中噪声质量是不高的,噪声中含有较多人声部分,这在一定程度上会导致语音损伤大的问题
  2. vad label制作的不准确性,简单的采用一些能量判断法当做vad模块的groundtruth,也会影响最终效果
  3. feature只有42个,网络输出只有22个,这样的设计在降低运算量的同时会损失部分详细信息,是会影响最终的效果;

  

CRNN方法一个典型的end2end的解决方案,输入是noisy的频域幅度谱,输出直接是降噪后的频域幅度谱,然后结合noisy的相位谱,进行时域数据的合成。网络模型采用了encoder+lstm+decoder的架构,无论是语音分离还是增强,这都是比较主流的一种网络结构,同时为了做到原理上可实时,卷积全部使用了因果卷积,CRNN在整段增强时效果是非常好的,增强后的主观听感也很好。


 

image.png

但存在的问题也比较大的问题:、


  1. 整段处理的输入无法满足流式处理的要求,在模型分帧后效果下降比较明显;
  2. 即使采用cache buffer的策略保证分帧后的效果,由于模型的感受野较大,性能开销也无法达到移动端实时的要求,同时,模型整段增强时本身消耗就比较大
  3. 中间存在lstm层,模型的轻量化比较困难;

 

▐  AliDenoise


AliDenoise是综合RNNNoise和CRNN的一种自研算法,首先为了可实际部署,去除了中间的lstm层,此时如果训练目标还是具有时序关系的降噪后频谱,效果会大大受到影响,所以我们更改了降噪策略,进行反向降噪,改为speech_based denoise method,只利用CNN较强的提取特征能力,学习比较有特色的语谱纹路,将输出抽象为传统信号处理中的先验信噪比这一概念,本质上也是一种增益,这一转化也有益于提升模型对未见噪声的泛化能力,可以通过大量纯净语音的训练反向应对未见过的噪声达到降噪的目的,在保证可实时处理方面,首先更改了模型norm的方式,由layer norm变为frame norm,从原理上保证可实时处理,同时客观指标并没有下降,还有轻微的提升;然后在工程实践中,采用cache buffer策略,实现了CNN的流式处理,同时保证分帧后的效果,可以支持任意延时,这也是目前线上应用的版本。


网络结构以1D卷积为主,同时加入了res结构,在每一个blocks中实现了三个卷积单元,通过调整kernel size实现不同维度的特征提取,将不同blocks连接起来,达到推进抽象特征的深入过程,最终得出期望的时频域上的先验信噪比。除此之外,我还进行了去除seq_len,添加highpass,更改数据混合方式,调整训练集中的噪声分布等改进项,从不同角度提升模型的训练效果


  

image.png

 

为了节省计算资源,我们采用了模型裁剪手段:


  1. 把neuron或weight剪掉,使得网络变小。通过对网络的分析会发现有些weight基本为0,对输出影响不大或有些neuron的output总是为0,那这种情况下就可以把它移除。
  2. 使用更少的bit来表示权重
  3. 调整网络的结构设计,减少参数量
  4. 模型可以自适应,在资源不充足的情况下,也可以输出一个还不错的结果;在资源充足时就做到最好



image.png


总结下来,传统降噪算法只能处理稳态噪声,非稳态突发噪声处理能力弱,但数据驱动类的算法稳态噪声及瞬时 非稳态噪声均可处理。在性能消耗上,传统算法是比较小的,数据驱动类算法会相对耗一些,为此,我们设计了小模型使用简单结构 以更好的发挥MNN的优化效果的策略为主,在实用性上,传统算法经验参数多,场景适应性差,而数据驱动类算法,场景适应性是比较好。 

 

算法效果

 

我们看一下算法效果,客观指标主要通过PESQ语音质量与STOI语音可懂度来衡量,我们构建了ali_test_datasets,含有1w多条带噪语音,涵盖街道、咖啡馆等日常环境,分为四个子测试集,_itu表示数据集中的纯净语音为itu标准测试序列,_objective表示数据集中的噪声为 训练集中未见  但是同分布噪声,相对应的就是数据集中的噪声为训练集中未见且不同分布的噪声,环境噪声强度为-5到15db,最大降噪力度控制在-25db,我们和业界标杆的竞品进行对比,最终可以看到在STOI可懂度方面的提升中ali_denoise和竞品明显优于传统信号处理算法,而ali_denoise略高于竞品,在PESQ语音质量方面的提升中, ali_denoise >竞品>rtc,同时在性能消耗方面,ali_denoise可以支持iphone6及以上的机型,竞品目前可以支持iphone8及以上的机型。

 

image.png

ali_denoise算法在算法应用落地上主要具有5大优势:


第一 利用开源的中英文纯净语音数据集、噪声集,自录噪声并进行数据清洗,同时针对淘宝直播场景构建突发瞬时噪声数据集,构建了我们私有化数据集

第二 通过cache buffer策略,可实时输出增强后的语音,契合直播场景,同时支持任意延时

第三 目前深度学习类的增强算法只支持16khz,ali_denoise支持48khz全频带语音增强处理,其中0-16k采用神经网络处理,16-48k采用传统算法+神经网络混合方式处理

第四 为了保证线上音视频同步,独立智能降噪模块,和采集线程解耦,iphone6以上机型直播无异常;

第五 由于采用了小型化模型设计和裁剪工作,性能消耗较低;

 

image.png



 

受新冠疫情的影响,互联网进入全民直播大时代,教育直播,旅游直播,助农直播,电商直播,政务直播等空前兴起。团队研发的智能降噪技术应用到阿里集团内的多个场景。在助农直播中,我们的算法有效去除田间机械的噪声,还原清晰语音;在钉钉在线课堂中,我们智能降噪结合盲源回声消除,助力2亿中小学生在家上课,提供高质量的声音体验;在电商直播中,我们的算法支撑了海外代购,户外运动,乐器直播,音乐晚会等全场景语音处理需求。我们秉承“让声音更清晰,让沟通更有效”的理念,追求更高质量的语音体验。

 

 

未来展望


AI+实时音频处理这个方向其实还有很多可以探索的,在前端处理算法中,除了我们已经优化的ANS算法外,AEC的非线性残留部分也可以结合深度学习类算法进行优化,可以将参考信号和观测信号的频域特征concat起来作为输入,观测信号的类IRM指标作为输出,进而得到估计的近端信号;类似的任务还有啸叫抑制及后端处理算法中的带宽扩展、智能PLC等等


image.png

相关文章
|
3月前
|
人工智能 运维 算法
基于 C# 深度优先搜索算法的局域网集中管理软件技术剖析
现代化办公环境中,局域网集中管理软件是保障企业网络高效运行、实现资源合理分配以及强化信息安全管控的核心工具。此类软件需应对复杂的网络拓扑结构、海量的设备信息及多样化的用户操作,而数据结构与算法正是支撑其强大功能的基石。本文将深入剖析深度优先搜索(Depth-First Search,DFS)算法,并结合 C# 语言特性,详细阐述其在局域网集中管理软件中的应用与实现。
83 3
|
2月前
|
监控 算法 JavaScript
基于 JavaScript 图算法的局域网网络访问控制模型构建及局域网禁止上网软件的技术实现路径研究
本文探讨局域网网络访问控制软件的技术框架,将其核心功能映射为图论模型,通过节点与边表示终端设备及访问关系。以JavaScript实现DFS算法,模拟访问权限判断,优化动态策略更新与多层级访问控制。结合流量监控数据,提升网络安全响应能力,为企业自主研发提供理论支持,推动智能化演进,助力数字化管理。
63 4
|
2月前
|
存储 监控 算法
内网监控桌面与 PHP 哈希算法:从数据追踪到行为审计的技术解析
本文探讨了内网监控桌面系统的技术需求与数据结构选型,重点分析了哈希算法在企业内网安全管理中的应用。通过PHP语言实现的SHA-256算法,可有效支持软件准入控制、数据传输审计及操作日志存证等功能。文章还介绍了性能优化策略(如分块哈希计算和并行处理)与安全增强措施(如盐值强化和动态更新),并展望了哈希算法在图像处理、网络流量分析等领域的扩展应用。最终强调了构建完整内网安全闭环的重要性,为企业数字资产保护提供技术支撑。
82 2
|
3月前
|
机器学习/深度学习 存储 算法
18个常用的强化学习算法整理:从基础方法到高级模型的理论技术与代码实现
本文系统讲解从基本强化学习方法到高级技术(如PPO、A3C、PlaNet等)的实现原理与编码过程,旨在通过理论结合代码的方式,构建对强化学习算法的全面理解。
181 10
18个常用的强化学习算法整理:从基础方法到高级模型的理论技术与代码实现
|
3月前
|
存储 监控 算法
基于 Python 哈希表算法的局域网网络监控工具:实现高效数据管理的核心技术
在当下数字化办公的环境中,局域网网络监控工具已成为保障企业网络安全、确保其高效运行的核心手段。此类工具通过对网络数据的收集、分析与管理,赋予企业实时洞察网络活动的能力。而在其运行机制背后,数据结构与算法发挥着关键作用。本文聚焦于 PHP 语言中的哈希表算法,深入探究其在局域网网络监控工具中的应用方式及所具备的优势。
96 7
|
3月前
|
运维 监控 算法
基于 Python 迪杰斯特拉算法的局域网计算机监控技术探究
信息技术高速演进的当下,局域网计算机监控对于保障企业网络安全、优化资源配置以及提升整体运行效能具有关键意义。通过实时监测网络状态、追踪计算机活动,企业得以及时察觉潜在风险并采取相应举措。在这一复杂的监控体系背后,数据结构与算法发挥着不可或缺的作用。本文将聚焦于迪杰斯特拉(Dijkstra)算法,深入探究其在局域网计算机监控中的应用,并借助 Python 代码示例予以详细阐释。
87 6
|
4月前
|
人工智能 监控 算法
Python下的毫秒级延迟RTSP|RTMP播放器技术探究和AI视觉算法对接
本文深入解析了基于Python实现的RTSP/RTMP播放器,探讨其代码结构、实现原理及优化策略。播放器通过大牛直播SDK提供的接口,支持低延迟播放,适用于实时监控、视频会议和智能分析等场景。文章详细介绍了播放控制、硬件解码、录像与截图功能,并分析了回调机制和UI设计。此外,还讨论了性能优化方法(如硬件加速、异步处理)和功能扩展(如音量调节、多格式支持)。针对AI视觉算法对接,文章提供了YUV/RGB数据处理示例,便于开发者在Python环境下进行算法集成。最终,播放器凭借低延迟、高兼容性和灵活扩展性,为实时交互场景提供了高效解决方案。
251 4
|
3月前
|
存储 算法 物联网
解析局域网内控制电脑机制:基于 Go 语言链表算法的隐秘通信技术探究
数字化办公与物联网蓬勃发展的时代背景下,局域网内计算机控制已成为提升工作效率、达成设备协同管理的重要途径。无论是企业远程办公时的设备统一调度,还是智能家居系统中多设备间的联动控制,高效的数据传输与管理机制均构成实现局域网内计算机控制功能的核心要素。本文将深入探究 Go 语言中的链表数据结构,剖析其在局域网内计算机控制过程中,如何达成数据的有序存储与高效传输,并通过完整的 Go 语言代码示例展示其应用流程。
73 0
|
4月前
|
缓存 监控 算法
基于 C# 网络套接字算法的局域网实时监控技术探究
在数字化办公与网络安全需求增长的背景下,局域网实时监控成为企业管理和安全防护的关键。本文介绍C#网络套接字算法在局域网实时监控中的应用,涵盖套接字创建、绑定监听、连接建立和数据传输等操作,并通过代码示例展示其实现方式。服务端和客户端通过套接字进行屏幕截图等数据的实时传输,保障网络稳定与信息安全。同时,文章探讨了算法的优缺点及优化方向,如异步编程、数据压缩与缓存、错误处理与重传机制,以提升系统性能。
81 2
|
5月前
|
监控 网络协议 算法
基于问题“如何监控局域网内的电脑”——Node.js 的 ARP 扫描算法实现局域网内计算机监控的技术探究
在网络管理与安全领域,监控局域网内计算机至关重要。本文探讨基于Node.js的ARP扫描算法,通过获取IP和MAC地址实现有效监控。使用`arp`库安装(`npm install arp`)并编写代码,可定期扫描并对比设备列表,判断设备上线和下线状态。此技术适用于企业网络管理和家庭网络安全防护,未来有望进一步提升效率与准确性。
133 8

热门文章

最新文章