webRTC,音频降噪、回声消除、人声增强、语音会议,公网对讲,集群通话
音频降噪模型汇总
AIoT万物智联,智能安全帽、智能头盔、头盔记录仪、执法记录仪、车载DVR/NVR、布控球、智能眼镜、智能手电、无人机4G补传系统等统一接入大型融合通信可视指挥调度平台VMS/smarteye 。
前言
一、模型全景
二、模型简介
RNNoise
Wav-U-net
Conv-TasNet
DC-U-Net
DPRNN
PHASEN
Demucs
SuDoRM-RF
DC-CRN
DTLN
Sepformer
SDD-Net
DPCRN
前言
从事语音降噪增强算法开发多年了,上学期间和入行的前段都是做传统信号处理算法。19年以后基于深度学习的语音降噪模型凭借其优秀的处理效果,一时风头无两,似乎每个人都开始走上了模型降噪的路子。
特别是从2020年微软开始举办的Deep Noise Suppression Challenge – INTERSPEECH 2020(DNS)开始,各个高校、科研院所和相关企业都参与进来施展武艺。后续又举办了Deep Noise Suppression Challenge – ICASSP 2021和Deep Noise Suppression Challenge – INTERSPEECH 2021。
比赛中多数只关注实时/非实时性,赛道约束的比较少,对模型的参数量和计算量要求比较开放,所以基本上参赛的模型都把自己武装得很“强壮”,把已知的有用的技巧融合到自己的模型中,更有一些模型基本是模块的排列组合。所以本人非常希望主办方能够开辟一条小模型赛道,可以迅速应用于现实,提升通话品质。
实际工作中,想要模型落地,考虑的可不止这些,目前端侧对算法开销要求比较苛刻,PC还好一些,像手机、平板这些设备的算法落地需要更加严格的模型选型和剪枝、量化。
模型选型,需要从模型的效果、参数量、计算量、占用内存大小、时延等方面着手开始考虑拆解问题,当然了,如果小模型就可以满足降噪的效果需求,那恭喜你,可以跳过下面的步骤,去训练模型、马上就可以工程化落地了。如果小模型不能work,那就需要根据落地设备的存储空间和开销限制,寻找若干个效果远超降噪效果需求的大模型,然后通过压缩手段(剪枝、量化等)将模型的参数量和计算量降下来,过程中可能出现效果下降的现象,这就是一个经验性尝试的打磨过程了。
本文将近些年的经典网络和最近提出的新网络的关键参数、简介、开源代码都整理在这里,目前只是比较简单的梳理汇总,后续会针对每一个模型详细分析或者转载其他博主的优秀文章。希望对语音降噪算法的学习和应用过程有所帮助,如果不准确的地方,请大家批评指正。
一、模型全景
二、模型简介
RNNoise
Jean-Marc Valin
Mozilla Corporation Mountain View, CA, USA
主要思想是将传统信号处理与深度学习相结合来创造一个模型又小速度又快的实时噪声抑制算法。
为了避免大量的输出(避免使用大量神经元),决定不直接使用语音样本或者能量谱。作为代替,考虑一种符合人类听觉感知的频率尺度——巴克频带尺度。总共用了22个频带而不是480(复杂)个频谱值。
1、模型框图
2、效果
3、代码
https://github.com/xiph/rnnoise
4、笔记转载
RNNoise超详细解读
Wav-U-net
Daniel Stoller Sebastian Ewert Simon Dixon
Queen Mary University of London Spotify
1、模型框图
2、效果
3、代码https://github.com/f90/Wave-U-Net
论文提出了一种全卷积时域音频分离网络—Conv-TasNet,这是 Yi Luo 在继 2017 年提出 TasNet 之后,又一端到端的时域语音分离模型。Conv-TasNet通过使用线性编码器生成了一种对语音波形的表示形式,并针对单个说话人的分离进行了优化。然后将一组加权函数(masks)应用于编码器的输出来实现说话人分离。最后使用线性解码器得到分离出的语音波形。使用由一维空洞卷积块组成的时域卷积网络(TCN)计算掩码,这使得网络可以对语音信号的长期依赖性进行建模,同时保持较小的模型尺寸。
1、 模型框图
2、 效果3、代码
https://github.com/kaituoxu/Conv-TasNet
4、笔记转载
【论文笔记之Conv-TasNet】: Surpassing Ideal Time–Frequency Magnitude Masking for Speech Separation
DC-U-Net
Hyeong-Seok Choi
Department of Transdisciplinary Studies, Seoul National University, Seoul, Korea
DC-Unet结合了深度复数网络和Unet的优点来处理复数值谱图,利用复数信息在极坐标系下估计语音的幅值和相位。同时提出了weighted-SDR loss。该方法是通过许多卷积来提取上下文信息,从而导致较大的模型和复杂度。
1、 模型框架
2、weighted-SDR loss
3、效果
4、代码
https://github.com/chanil1218/DCUnet.pytorch
DPRNN
Yi Luo†∗, Zhuo Chen‡, Takuya Yoshioka‡
†Department of Electrical Engineering, Columbia University, NY, USA
‡Microsoft, One Microsoft Way, Redmond, WA, USA
DPRNN将长序列输入分割为较小的块,并迭代地应用块内和块间RNN。
1、模型框架
2、效果
3、代码
https://github.com/ShiZiqiang/dual-path-RNNs-DPRNNs-based-speech-separation
4、笔记转载
论文研究12:DUAL-PATH RNN for audio separation
阅读笔记”Dual-path RNN for Speech Separation“
PHASEN
Dacheng Yin1, Chong Luo2, Zhiwei Xiong1, and Wenjun Zeng2
1University of Science and Technology of China
2Microsoft Research Asia
PHASEN 可以准确估计信号的幅值和相位信息。创新点如下:
设计了一套双流网络结构(TSB, two-stream block,幅度流和相位流),并且双流之间有信息交互,交互发生在 TSB 模块结束的部分;
设计了频域变换块(FTB,frequency transformation blocks)模块,用于获得频域上的长时间跨度的关系, FTB 分布在 TSB 模块的开始和结束位置, FTB 高效整合全局频域相关性,尤其是谐波相关性, 通过对于 FTB 参数的可视化,发现 FTB 自发地学到了谐波相关性。
1、模型框架
双流结构由强度流以及相位流构成。其中,强度流主要由卷积操作,频域变换模块(FTB)以及双向 LSTM 组成,而相位流为纯卷积网络。强度流的预测结果为幅值掩膜 M,其取值为正的实数,相位流的预测结果是相位谱φ,其取值为复数,由实部和虚部组成。记输入的时频表征为 S_in,则输出 S_out=abs(S_in )∙M∙φ 。其中,∙ 代表逐项相乘操作。为了充分利用双流的信息,采用 gating 的方式在强度流和相位流之间增加了信息交互机制,从而让强度或者相位处理过程中能利用另外一路的信息作为参考。增加了信息交互后,把网络的主体划分为3个 Two Stream Block(TSB)。每一个 TSB 的结构相同,在 TSB 的最后,均有一步信息交互操作。实验表明,双向的信息交互对相位预测至关重要。
在设计强度流的过程中,发现图像处理中常用的小尺寸二维卷积操作无法处理语音信号中的谐波相关性。不同于自然图像,语音信号在转化为时-频表征时的相关性不仅有邻域成分,而且有谐波成分,而这些谐波相关性是一种分布在频域上的全局相关性,例如:频率 f_0 倾向于和 2f_0,1/2 f_0,3f_0,3/2 f_0,1/3 f_0,2/3 f_0… 这些谐波相关的频率同时发生,这些频率分布在整个频率轴上。之前的工作中使用的 U-net,空洞卷积等卷积结构都适用于处理邻域相关性,但是无法高效地感受到这种全局频域相关性。为此,提出了频域变换模块(Frequency Transformation Block, FTB)来处理包括谐波在内的全局频域相关性。
FTB 的结构如上图所示,简单来说,它利用注意力(attention)机制来挖掘非邻域(non-local)相关性。在整体架构中,每一个TSB中强度流的输入和输出端各有一个 FTB,确保每一个 TSB 中处理的信息以及双流交互的信息都能关注到谐波相关性。
2、效果
3、代码
https://github.com/huyanxin/phasen
4、笔记转载
AAAI 2020丨从嘈杂视频中提取超清人声,语音增强模型PHASEN已加入微软视频服务
Demucs
Alexandre Défossez Nicolas Usunier Léon Bottou
Facebook AI Research
Demucs是一个waveform-to-waveform 模型,由U-Net 结构和双向 LSTM构成。
1、 模型框架
2、效果
3、代码
https://github.com/facebookresearch/demucs
SuDoRM-RF
Efthymios Tzinis, Zhepei Wang, Paris Smaragdis
University of Illinois at Urbana-Champaign
Adobe Research
全称:SUccessive DOwnsampling and Resampling of Multi-Resolution Features多分辨率特征的连续下采样和重采样。
该模型,a)可以部署在资源有限的设备上,b)训练速度快,并实现良好的分离性能,c)在增加参数数量时具有良好的扩展性。
适合用于移动设备,能够在有限的浮点运算次数、内存要求和参数数量下获得高质量的音频源分离和较小的时延。
1、 模型框架
2、效果
3、代码
https://github.com/etzinis/sudo_rm_rf
DC-CRN
Yanxin Hu1;∗, Yun Liu2;∗, Shubo Lv1, Mengtao Xing1, Shimin Zhang1, Yihui Fu1, Jian Wu1, Bihong Zhang2, Lei Xie1
1Audio, Speech and Language Processing Group (ASLP@NPU), School of Computer Science, Northwestern Polytechnical University, Xi’an, China
2AI Interaction Division, Sogou Inc., Beijing, China
DCCRN组合了DCUNET 和CRN的优势,在相同的模型参数大小情况下,仅用了1/6的DCUNET计算量,就达到了DCUNET的效果。
成就:Interspeech 2020 Deep Noise Suppression (DNS),实时赛道第一名,非实时赛道第二名。
非实时赛道的第一名是Amazon的PoCoNet模型,由于是非实时,就不展开介绍了。
1、 模型框架
2、效果
可以看到DCCRN-CL 和DCUNET 参数大小和PESQ指标都很接近,但是DCCRN-CL的计算量是DCUNET的1/6。
3、代码
https://github.com/huyanxin/DeepComplexCRN
https://github.com/maggie0830/DCCRN
4、笔记分享
Deep Complex Convolution Recurrent Network(DCCRN模型)
DTLN
Nils L. Westhausen and Bernd T. Meyer
Communication Acoustics & Cluster of Excellence Hearing4all Carl von Ossietzky University, Oldenburg, Germany
1、 模型框架
2、效果
3、代码
https://github.com/breizhn/DTLN
4、笔记转载
阅读笔记—DTLN
Sepformer
Cem Subakan1, Mirco Ravanelli1, Samuele Cornell2, Mirko Bronzi1, Jianyuan Zhong3
1Mila-Quebec AI Institute, Canada, 2Universit`a Politecnica delle Marche, Italy 3University of Rochester, USA
是DPRNN的一个变种算法,主要由multi-head attention 和 feed-forward layers组成。采用了DPRNN引入的双路径框架,并将RNN替换为a multiscale pipeline composed of transformers,可以学习短期和长期依赖关系。
1、 模型框架
2、效果
3、代码
https://github.com/speechbrain/speechbrain/
SDD-Net
Andong Li1;2, Wenzhe Liu1;2, Xiaoxue Luo1;2, Guochen Yu1;3, Chengshi Zheng1;2, Xiaodong Li1;2
1Key Laboratory of Noise and Vibration Research, Institute of Acoustics, Chinese Academy of
Sciences, Beijing, China
2University of Chinese Academy of Sciences, Beijing, China
3Communication University of China, Beijing, China
Deep Noise Suppression Challenge – INTERSPEECH 2021 第一名
1、 模型框架
2、效果
3、未找到开源代码
DPCRN
Xiaohuai Le1;2;3, Hongsheng Chen1;2;3, Kai Chen1;2;3, Jing Lu1;2;3
1Key Laboratory of Modern Acoustics, Nanjing University, Nanjing 210093, China
2NJU-Horizon Intelligent Audio Lab, Horizon Robotics, Beijing 100094, China
3Nanjing Institute of Advanced Artificial Intelligence, Nanjing 210014, China
Deep Noise Suppression Challenge – INTERSPEECH 2021 第四名
1、 模型框架
2、效果
3、代码
https://github.com/Le-Xiaohuai-speech/DPCRN_DNS3
4、笔记转载
DPCRN: Dual-Path Convolution Recurrent Network for Single Channel Speech Enhancement—论文翻译
专栏目录
Matlab实现音频降噪
06-03
可用于音频信号处理的学习,兼容Octave!
webRTC音频降噪C语言开发代码
01-22
音频降噪C语言代码
1 条评论
TopologyXL
热评
音频降噪有使用GAN系列方法的吗
写评论
android音频降噪webrtc_安卓webrtc实现降噪的demo_james__bai的博客...
7-5
"Couldn't load lib: - " + e.getMessage()); } } /** * 处理降噪 * @param data */ public void processNoise(byte[] data){ if(data == null) return; int newDataLength = data.length/2; if(data.length % 2...
java speex回声消除_android 利用speex 音频降噪,回声消除demo
6-14
【实例简介】 android 利用speex 音频降噪,回声消除demo,提高音频播放质量 【实例截图】 【核心代码】 Android-OpenSLES-Demo-master └── Android-OpenSLES-Demo-master ├── Android-OpenSLES-Demo-master.iml ├── app │ ├...
06|音频降噪概述(2)一基于AI降噪
咕噜咕噜
3833
音频降噪
05|音频降噪概述(1)一传统降噪方法
咕噜咕噜
6703
单通道降噪概述
...降噪 webrtc 去回声_android webrtc 去回声demo_mmoyula的博客-CSDN...
7-4
编写本地接口 packagecom.wrtcmy.webrtc.ns;importandroid.util.Log;publicclassNS{privatestaticfinalString TAG="
python实现录音并去燥_Python | 简单的扩音,音频去噪,静音剪切_weixin...
6-11
原标题:Python| 简单的扩音,音频去噪,静音剪切 之前一段时间一直在搞数字语音识别,在训练算法上耗费了很多时间,但结果不尽人意。后来才发现自己一直忽视了音频预处理的一步,于是转而囫囵吞枣般学习一些简单的信号处理算法。这里简单介绍...
基于RRNOISE降噪模型的VAD
676
一.原理 agc2里面的rnn_vad是根据rnnoise降噪模型训练出来的 具体可参考:https://blog.csdn.net/danteLiujie/article/details/102632918 1.42个特征提取:BFCC(22),BFCC的一二阶导数(6*2),基音相关(6),基音周期(1),谱稳度(1) 2.利用训练好的神经网络和提取的42个语音特征来计算vad; 3.基音周期的估计方法:rnnoise所用的估计方法是基于lpc残差的基音周期估计方法 4.BFCC:基于巴克刻度的倒谱;
Python 声音降噪
桜
6658
录音文件降噪 from scipy.io import wavfile import noisereduce as nr import pyaudio import time import wave rate, data = wavfile.read("001.wav") _,noisy_part = wavfile.read("noise.wav") SAMPLING_FREQUENCY=16000 reduced_noise = nr.reduce_noise(y=data, y_noise=noi
Android回音噪音处理Demo_apm->processstream_MoMing_2013的博客-CSDN...
6-26
AGC(Auto Gain Control 自动增益控制) 现在只有一个Android Demo 。 核心代码如下: package net.iwebrtc.audioprocess.sdk; import android.util.Log; public class AudioProcess { private static final String TAG = "AudioProcess";...
wav文件降噪c语言,语音降噪_一山同学的博客
6-12
wav文件降噪c语言,语音降噪 一个频域维纳滤语语音降噪实现,完整的工程实现可以到音视频算法讨论群(374737122)中下载并讨论 1.[文件] ns.c ~ 7KB 下载(55) // 本文来自于icoolmedia,相关算法QQ交流群为:374737122...
音频降噪算法 附完整C代码
weixin_34321753的博客
2340
降噪是音频图像算法中的必不可少的。 目的肯定是让图片或语音 更加自然平滑,简而言之,美化。 图像算法和音频算法都有其共通点。 图像是偏向空间处理,例如图片中的某个区域。 图像很多时候是以二维数据为主,矩形数据分布。 音频更偏向时间处理,例如语音中的某段时长。 音频一般是一维数据为主,单声道波长。 处理方式也是差不多,要不单通道处理,然后合并,或者直接多通道处理。 只是处理...
C/C++音频算法: noise suppression算法及技术资料汇总
源代码杀手的博客
5216
Noise suppression,就是大家说的降噪。这种降噪是把人声和非人声区分开来,把非人声当成噪声。 一段包含人声和噪声的音频经过该模块处理,从理论上讲,只剩下人声了。 webrtc的NS在业内还是赫赫有名的,通过实际对比测试,我们发现webrtc的降噪的确是性能和稳定性 都要高于同类开源算法。 webrtc的ns原理是这样的:把启动前50帧的数据拿来构建噪声模型,把启动前200帧的信号强度用来计 算归一化的频谱差值计算。根据这两个模型使用概率目的函数来计算出每帧的信噪比并区分出噪声和声音, 然后根据
基于MCRA-OMLSA的语音降噪(二):实现_david_tym的博客
7-2
上篇文章(基于MCRA-OMLSA的语音降噪(一):原理)讲了基于MCRA-OMLSA降噪的原理,本篇讲怎么做软件实现。软件实现有多种方式。单纯看降噪效果可用python,因为python有丰富的库可用,可节省不少时间,把主要精力放在降噪效果提升上。如果要把算...
基于MCRA-OMLSA的语音降噪(一):原理_david_tym的博客
6-30
前面的几篇文章讲了webRTC中的语音降噪。最近又用到了基于MCRA-OMLSA的语音降噪,就学习了原理并且软件实现了它。MCRA主要用于噪声估计,OMLSA是基于估计出来的噪声去做降噪。类比于webRTC中的降噪方法,也有噪声估计(分位数噪声估计法)和基...
WebRTC音视频之噪音消除功能
hbblzjy的博客
2698
WebRTC对于iOS和Android的音频处理,是有很大的不同的,WebRTC基本上是使用的iOS自身的音频降噪、环境音处理、人声增益处理,因为WebRTC认为iOS的音频处理已经满足相对理想的效果,所以在算法处理上进行了iOS和Android的区分。 ...
pytorch 自编码器实现图像的降噪
qq_40107571的博客
2427
pytorch 自编码器实现图像的降噪
深度学习降噪方案-RNNoise简介和环境配置
danteLiujie的专栏
7898
RNNoise是一个采用音频特征抽取+深度神经网络结合的降噪方案. RNNoise相关基本信息, 请查看RNNoise学习和翻译系列 目录 RNNoise的基本流程和模块 RNNoise的目录结构介绍 原工程对Windows支持的一些问题 怎么编译相关的工程,生成可执行文件 怎么搭建基于Python的训练环境 如何进行训练和降噪 RNNoise的基本流程和模块 如下图所示, ...
android 利用speex 音频降噪,回声消除
10-09
android 利用speex 降低声音噪音,回声消除demo,提高音频播放质量
音频降噪(android-webrtc-ns).zip
12-28
webrtc-ns(音频降噪)(单独抽取webrtc中的ns模块,编译成so库移植android平台使用) 代码直接运行即可体验
RNNoise训练失败,步骤记录
最新发布
weixin_47732027的博客
28
rnnoise训练失败经历
RNNoise: 一种致力于实时全频段语音增强的DSP+深度学习混合方法
danteLiujie的专栏
6012
更多RNNoise相关文章请查看RNNoise学习和翻译系列一种致力于实时全频段语音增强的DSP+深度学习混合方法 Jean-Marc Valin, Mozilla Corporation, Mountain View, CA, USA, jmvalin@jmvalin.ca 摘要 — 尽管噪声抑制是信号处理中的成熟领域, 但它仍然高度依赖于评估器算法和参数的微调...
RNNOISE 16K音频训练方式
robingao1994的博客
3521
鉴于很多同学都在问RNNoise如何把48k的原始代码改成能训练16k音频的, 我就把我做的rnnoise 16k的一些小改动开源出来, 一起探讨研究。 先mark, 后面详细来介绍如何改,代码已经放上了github RNNoise_16k 训练代码 https://github.com/YongyuG/rnnoise_16k 有问题请提出来,1年多前的东西,很多代码都没整理 ...
RnnNoise 16k-训练数据准备和模型转换
爱哭鬼
699
1.源码 16k采样率模型训练参考Github:https://github.com/YongyuG/rnnoise_16k 2.编译特征提取工具 编译前,进入denoise.c, 修改count参数,数值根据你的语音文件大小选定,第一次可以选小一点,体验流程 if (count==1000000) break; cd rnnoise-master/src ./compile.sh 执行后会生成文件denoise_training,使用方式如下: ../src/denoise_training_gao
pytorch_template_audio:音频项目的基本Pytorch模板
02-24
音频项目的基本Pytorch模板 牢记音频项目的基本Pytorch模板可用作起点。 特别针对可在单个GPU上运行并在多GPU机器上并行运行的较小模型。 每个GPU /实验都可以拥有整个源代码的副本。 特征 简单的数据集类(包括从磁盘读取.wav文件的列表,并具有随机裁剪功能)。 实时梅尔谱图计算。 学习速率表,EMA,梯度限幅。 检查点保存/加载(继续培训)。 大数据集/缓慢更新的基本训练循环。
【KAWAKO】DTLN-1Dconv的原理
本平台停止更新,后续文章将在个人博客blog.kawako.fun发布
962
DTLN的结构如图。 第一部分是在stft得到的频谱上进行降噪处理,属于频域处理。 第二部分是在1D卷积得到的特征上进行进一步降噪处理,也属于频域处理。 其源码如下。两个1D卷积已用红框标出。 可以注意到,两个1D卷积的参数如下: 第一个1D卷积,输入维度为1*1*512(32ms),卷积核的大小为1*1、个数为encoder_size=256。 第二个1D卷积,输入维度为1*1*256,卷积核的大小为1*1、个数为blocklen=512。 怎么理解DTLN的第二部分呢 第一部分.