首页 科技周边 人工智能 聊聊实时通信中的AI降噪技术

聊聊实时通信中的AI降噪技术

Apr 12, 2023 pm 01:07 PM
ai 深度学习

聊聊实时通信中的AI降噪技术

Part 01  概述 

在实时音视频通信场景,麦克风采集用户语音的同时会采集大量环境噪声,传统降噪算法仅对平稳噪声(如电扇风声、白噪声、电路底噪等)有一定效果,对非平稳的瞬态噪声(如餐厅嘈杂噪声、地铁环境噪声、家庭厨房噪声等)降噪效果较差,严重影响用户的通话体验。针对泛家庭、办公等复杂场景中的上百种非平稳噪声问题,融合通信系统部生态赋能团队自主研发基于GRU模型的AI音频降噪技术,并通过算法和工程优化,将降噪模型尺寸从2.4MB压缩至82KB,运行内存降低约65%;计算复杂度从约186Mflops优化至42Mflops,运行效率提升77%;在现有的测试数据集中(实验环境下),可有效分离人声和噪声,将通话语音质量Mos分(平均意见值)提升至4.25。

本篇文章将介绍我们团队如何基于深度学习做实时噪声抑制,并落地于移动端和家亲APP的过程。全文将按照如下组织,介绍噪声的分类,如何选择算法去解决这些噪声的问题;如何通过深度学习的方式去设计算法,训练AI模型;最后会介绍目前AI降噪能达到什么样效果和重点应用场景。

Part 02  噪声分类和降噪算法选择  

实时音视频的应用场景中,设备处于复杂的声学环境,麦克风采集语音信号的同时还会采集大量噪声,对实时音视频质量来说是一个非常大的挑战。噪声的种类是多种多样的。根据噪声的数学统计特性可以将噪声分为两类:

平稳噪声:噪声的统计特性在比较长的时间里不会随时间而变化,比如白噪声、电风扇、空调、车内噪声等;

图片

图片

非平稳噪声:噪声的统计特性随时间在变化,如餐厅嘈杂噪声、地铁站、办公室、家庭厨房等。

图片

图片

在实时音视频应用中,通话易受到各类噪声干扰从而影响体验,因此实时音频降噪已经成为实时音视频中的一个重要功能。对于平稳的噪声 ,比如空调出风口呼呼声或者录制设备的底噪,它不会随着时间变化而产生较大变化,可以将其估计预测出来,通过简单的减法的方式把它去掉,常见的有谱减法、维纳滤波以及小波变换。对于非平稳噪声,例如马路上车子呼啸而过的声音、餐厅内餐盘的撞击声、家庭厨房内的锅具的敲击声,都是随机突发出现,是不可能通过估计预测的方式去解决的。传统算法对于非平稳噪声难以估计和消除,这也是我们采用深度学习算法的原因。

Part 03  深度学习降噪算法设计 

图片

为了提高音频SDK对于各种噪声场景的降噪能力,弥补传统降噪算法的不足,我们研发了基于RNN的AI降噪模块,结合传统降噪技术和深度学习技术。重点针对家庭和办公室使用场景的降噪处理,在噪声数据集中加入大量的室内噪声类型,诸如办公室内的键盘敲击、办公桌与办公用品拖拉的摩擦声、座椅拖动、家庭中的厨房嘈杂声、地板撞击声等等。

与此同时,为了在移动端的实时语音处理落地,该AI音频降噪算法将计算开销和库的尺寸控制在一个非常低的量级。在计算开销上,以48KHz为例,每帧语音的RNN网络处理处理仅需约17.5Mflops,FFT和IFFT每帧语音需要约7.5Mflops,特征提取需要约12Mflops,总计约42Mflops,计算复杂度约和48KHz的Opus编解码相当,在某品牌中端手机型号,统计RNN降噪模块CPU占用约为4%。在音频库的尺寸上,开启RNN降噪编译后,音频引擎库的体积仅仅增加约108kB。

Part 04  网络模型及处理流程 

该模块采用RNN 模型,原因是 RNN 相比其他学习模型(例如 CNN)携带时间信息,可以对时序信号进行建模,而不仅仅是单独的音频输入和输出帧。同时,模型采用门控循环单元(GRU,如图1所示),实验表明,GRU在语音降噪任务上的性能略好于LSTM,并且由于GRU的权值参数更少,可以节省计算资源。与简单的循环单元相比,GRU有两个额外的门。重置门控制状态是否用于计算新状态,而更新门控制状态将根据新输入改变的程度。这个更新门使GRU可以长时间记忆时序信息,这也是GRU比简单的循环单元表现更好的原因。

图片

图 1 左侧为简单循环单元,右侧为GRU

模型的结构如图2所示。训练后的模型会被嵌入到音视频通信 SDK 中,通过读取硬件设备的音频流,对音频流进行分帧处理并送入 AI 降噪预处理模块中,预处理模块会将对应的特征(Feature)计算出来,并输出到训练好的模型中,通过模型计算出对应的增益(Gain)值,使用增益值对信号进行调整,最终达到降噪的目的(如图3所示)。

图片

图 2. 基于GRU的RNN网络模型

图片

图3. 上方为模型训练流程,下方为实时降噪流程


Part 05  AI降噪处理效果和落地 

图4为带有键盘敲击噪声的降噪前后语音语谱图的对比,上半部分为降噪前的带噪语音信号,其中红色矩形框内为键盘敲击噪声。下半部分为降噪后的语音信号,通过观测可以发现,绝大部分键盘敲击声均可以被抑制,同时语音损伤控制在较低的程度。

图片

图4. 带噪语音(通话过程伴随着键盘敲击声)降噪前后对比

目前的AI降噪模型,已经在手机端和家亲上线,改善手机端和家亲APP通话降噪效果,对泛家庭、办公室等100多种噪声场景具备优秀的抑制能力,同时保持语音不失真。下一阶段,将将持续优化AI降噪模型的计算复杂度,以在IoT低功耗设备上能够推广使用。

以上是聊聊实时通信中的AI降噪技术的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

如何检查CentOS HDFS配置 如何检查CentOS HDFS配置 Apr 14, 2025 pm 07:21 PM

检查CentOS系统中HDFS配置的完整指南本文将指导您如何有效地检查CentOS系统上HDFS的配置和运行状态。以下步骤将帮助您全面了解HDFS的设置和运行情况。验证Hadoop环境变量:首先,确认Hadoop环境变量已正确设置。在终端执行以下命令,验证Hadoop是否已正确安装并配置:hadoopversion检查HDFS配置文件:HDFS的核心配置文件位于/etc/hadoop/conf/目录下,其中core-site.xml和hdfs-site.xml至关重要。使用

centos关机命令行 centos关机命令行 Apr 14, 2025 pm 09:12 PM

CentOS 关机命令为 shutdown,语法为 shutdown [选项] 时间 [信息]。选项包括:-h 立即停止系统;-P 关机后关电源;-r 重新启动;-t 等待时间。时间可指定为立即 (now)、分钟数 ( minutes) 或特定时间 (hh:mm)。可添加信息在系统消息中显示。

CentOS上GitLab的备份方法有哪些 CentOS上GitLab的备份方法有哪些 Apr 14, 2025 pm 05:33 PM

CentOS系统下GitLab的备份与恢复策略为了保障数据安全和可恢复性,CentOS上的GitLab提供了多种备份方法。本文将详细介绍几种常见的备份方法、配置参数以及恢复流程,帮助您建立完善的GitLab备份与恢复策略。一、手动备份利用gitlab-rakegitlab:backup:create命令即可执行手动备份。此命令会备份GitLab仓库、数据库、用户、用户组、密钥和权限等关键信息。默认备份文件存储于/var/opt/gitlab/backups目录,您可通过修改/etc/gitlab

centos安装mysql centos安装mysql Apr 14, 2025 pm 08:09 PM

在 CentOS 上安装 MySQL 涉及以下步骤:添加合适的 MySQL yum 源。执行 yum install mysql-server 命令以安装 MySQL 服务器。使用 mysql_secure_installation 命令进行安全设置,例如设置 root 用户密码。根据需要自定义 MySQL 配置文件。调整 MySQL 参数和优化数据库以提升性能。

docker原理详解 docker原理详解 Apr 14, 2025 pm 11:57 PM

Docker利用Linux内核特性,提供高效、隔离的应用运行环境。其工作原理如下:1. 镜像作为只读模板,包含运行应用所需的一切;2. 联合文件系统(UnionFS)层叠多个文件系统,只存储差异部分,节省空间并加快速度;3. 守护进程管理镜像和容器,客户端用于交互;4. Namespaces和cgroups实现容器隔离和资源限制;5. 多种网络模式支持容器互联。理解这些核心概念,才能更好地利用Docker。

CentOS下GitLab的日志如何查看 CentOS下GitLab的日志如何查看 Apr 14, 2025 pm 06:18 PM

CentOS系统下查看GitLab日志的完整指南本文将指导您如何查看CentOS系统中GitLab的各种日志,包括主要日志、异常日志以及其他相关日志。请注意,日志文件路径可能因GitLab版本和安装方式而异,若以下路径不存在,请检查GitLab安装目录及配置文件。一、查看GitLab主要日志使用以下命令查看GitLabRails应用程序的主要日志文件:命令:sudocat/var/log/gitlab/gitlab-rails/production.log此命令会显示produc

CentOS上PyTorch的分布式训练如何操作 CentOS上PyTorch的分布式训练如何操作 Apr 14, 2025 pm 06:36 PM

在CentOS系统上进行PyTorch分布式训练,需要按照以下步骤操作:PyTorch安装:前提是CentOS系统已安装Python和pip。根据您的CUDA版本,从PyTorch官网获取合适的安装命令。对于仅需CPU的训练,可以使用以下命令:pipinstalltorchtorchvisiontorchaudio如需GPU支持,请确保已安装对应版本的CUDA和cuDNN,并使用相应的PyTorch版本进行安装。分布式环境配置:分布式训练通常需要多台机器或单机多GPU。所

CentOS上PyTorch的GPU支持情况如何 CentOS上PyTorch的GPU支持情况如何 Apr 14, 2025 pm 06:48 PM

在CentOS系统上启用PyTorchGPU加速,需要安装CUDA、cuDNN以及PyTorch的GPU版本。以下步骤将引导您完成这一过程:CUDA和cuDNN安装确定CUDA版本兼容性:使用nvidia-smi命令查看您的NVIDIA显卡支持的CUDA版本。例如,您的MX450显卡可能支持CUDA11.1或更高版本。下载并安装CUDAToolkit:访问NVIDIACUDAToolkit官网,根据您显卡支持的最高CUDA版本下载并安装相应的版本。安装cuDNN库:前

See all articles