06|音频降噪概述(2)一基于AI降噪

目录

引言:

一. AI降噪模型等基础知识:

1.1 常见的模型结构:

DNN

CNN

RNN

1.2 模型训练方法

步骤:

1.3 设计AI降噪模型:

步骤

二. 基于频域掩码的AI降噪模型

基于频域掩码的AI降噪算法步骤:

三. AI降噪模型的工程部署

因果性:

AI降噪模型存储空间与算力限制

模型选用:

参数量化:

其他(特征/硬件/IO/部署平台等 ): 

参考文献


引言:

传统降噪局限性:

传统算法通过统计的方法对噪声进行估计,对稳态噪声能进行有效降噪。但对非稳态噪声和瞬态噪声效果不太理想。

AI降噪相比于传统降噪,噪声抑制效果得到提升,但部署时受到设备算力、存储体积等条件限制。

一. AI降噪模型等基础知识:

AI降噪时基于数据驱动的方法,让模型学习数据内隐含信息。 模型输入时带噪的语音信号,模型的输出时纯净的语音信号。

1.1 常见的模型结构:

DNN

DNN计算中每个神经元都是前一层的加权平均。得到一个多层的线性网络对复杂信号处理进行建模。

CNN

一维卷积(时域)和二维卷积(TF)

RNN

LSTM, GRU,自回归、时序建模

1.2 模型训练方法

分为有监督和无监督训练。降噪一般采用有监督训练

步骤:

  1. 通过预处理把带噪信号处理成 输入给NN的输入特征
  2. 通过NN预测估计的特征
  3. 计算估计的特征和label 特征之间的差距,loss(可以MSE等)
  4. Loss反向传播,结合梯度下降更新模型参数
  5. 重复至收敛,loss不再下降等

1.3 设计AI降噪模型:

步骤

  1. NN降噪模型,包括模型的预处理和后处理过程
  2. 合适的loss
  3. 合适的语音信号和噪声信号的数据库

时域模型:TasNet等

频域模型:RNNoise、CRN等

二. 基于频域掩码的AI降噪模型

类似传统的维纳滤波通过计算先验信噪比,然后对频域每一个频点乘一个小于1的系数抑制噪声。这些系数称为频域掩码。传统方法是基于统计的方法得到频域掩码,基于NN的方法是通过模型预测出NN。

基于频域掩码的AI降噪算法步骤:

  1. 带噪信号过STFT,时域转频域
  2. 频域输入NN,NN预测出干净信号的频域掩码
  3. 频域信号 乘 频域掩码,得到降噪的频域信号
  4. 降噪后的频域信号做iSTFT 得到纯净语音信号

幅度谱:对复数域的取模就是幅度谱,代表不同频点的能量分布。

相位谱:对复数谱中实部与虚部比值求反正切,得到相位谱。(-pai到pai)

上述过程只改变了幅度谱没有改变相位谱。相位谱没有准确描述的物理含义,建模较难且人耳对相位不是很敏感。

基于复数域代表:微软的PHASEN和2020DNS降噪比赛夺冠的DCCRN等

三. AI降噪模型的工程部署

首先AI模型在算力和模型参数存储上比传统方法要求更高。

因果性:

RTC实时音频的应用场景中,降噪处理考虑因果性。  因为未来的信息是拿不到的所以一些双向结构RNN等不能用。  但一点未来信息不用回导致模型的降噪能力下降。

因此采用引入一点延迟的方式提升模型的降噪能力。  比如在第I + m帧输出第i帧的信号。  m一般不超过3。 模型可以look ahead 前3帧。

AI降噪模型存储空间与算力限制

模型部署时,尤其在手机、IOT等移动端部署,设备的算力和存储 空间都会受到限制。

不同模型等算力复杂度和参数量分布:

模型选用:

CNN的卷积核能复用所以参数量较小。DNN和RNN本质上是线性设计,参数量较大。因此移动端等存储空间小的设备设计算法时,会尽量选择CNN,或CNN结合别的结构来压缩参数量。

参数量化:

另一方面对于RNN和DNN等可以通过参数量化等方式对模型进行压缩。比float32 转int8bit量化。  量化会对模型精度造成损伤,CNN等不适合,但RNN和DNN可以做合适量化,没那么敏感。

其他(特征/硬件/IO/部署平台等 ):

选用特征:可以在RNNoise 采用BFCC 这种压缩的频谱特征作为输入,减少特征。

特定的硬件:特点的计算芯片支持不同精度的计算,量化后计算速度更快。

数据读取优化:对模型参数和输入数据,按照内存连续读取最优的方式进行重排,实现IO的加速

采用合适部署工具:

如下图常用的AI模型部署工具

 

参考文献

 1、Luo Y, Mesgarani N. Tasnet: time-domain audio separation network for real-time, single-channel speech separation[C]//2018 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP). IEEE, 2018: 696-700.

2、Luo Y, Mesgarani N. Conv-tasnet: Surpassing ideal time–frequency magnitude maskingfor speech separation[J]. IEEE/ACM transactions on audio, speech, and language processing, 2019, 27(8): 1256-1266.

3、Valin J M. A hybrid DSP/deep learning approach to real-time full-band speech enhancement[C]//2018 IEEE 20th international workshop on multimedia signal processing (MMSP). IEEE, 2018: 1-5.

4、Strake M, Defraene B, Fluyt K, et al. Fully convolutional recurrent networks for speech enhancement[C]//ICASSP 2020-2020 IEEE International Conference on Acoustics, Speech and Signal Processing (ICASSP). IEEE, 2020: 6674-6678.

5、Ma C, Li D, Jia X. Optimal scale-invariant signal-to-noise ratio and curriculum learning for monaural multi-speaker speech separation in noisy environment[C]//2020 Asia-Pacific Signal and Information Processing Association Annual Summit and Conference (APSIPA ASC). IEEE, 2020: 711-715.

6、Yin D, Luo C, Xiong Z, et al. PHASEN: A phase-and-harmonics-aware speech enhancement network[C]//Proceedings of the AAAI Conference on Artificial Intelligence. 2020, 34(05): 9458-9465.

7、Hu Y, Liu Y, Lv S, et al. DCCRN: Deep complex convolution recurrent network for phase-aware speech enhancement[J]. arXiv preprint arXiv:2008.00264, 2020.

总结自极客课程《搞定音频技术》

### 基于DSP的降噪算法概述 在数字信号处理(DSP)领域,降噪技术旨在去除或减少音频信号中的不必要成分,从而提高语音清晰度和质量。两种主要的技术路径分别是传统方法和现代的数据驱动方法。 #### 传统方法:自适应滤波器 对于窄带噪声问题,可以应用自适应滤波器实现有效的降噪功能[^2]。这类方法的核心在于利用反馈机制调整滤波参数,使得输出误差最小化。具体来说,FXLMS(频域递归最小二乘法)作为种经典的自适应算法,在不需要预先知道干扰源特征的情况下也能取得良好的抑制效果。此过程涉及实时更新权重向量w(n),并通过迭代优化使估计值y(n)尽可能接近目标信号d(n)。 ```matlab % MATLAB伪代码展示如何初始化并训练个简单的FBLMS滤波器 N = length(x); % 输入序列长度 M = 8; % 滤波器阶数 mu = 0.1; % 步长因子 e = zeros(N,1); W = randn(M,1); for n=M:N u = x(n:-1:n-M+1)'; d = desired_signal(n); y(n) = W'*u; e(n) = d - y(n); W = W + mu * e(n) .* u'; end ``` #### 数据驱动方法:神经网络模型 近年来,随着人工智能的发展,基于深度学习框架下的自动编码器、卷积神经网络(CNNs)以及循环神经网络(RNNs)被广泛应用于构建更高效的去噪系统[^1]。这些模型能够直接从大量样本中提取有用的统计规律,并据此预测干净版本的声音片段。相比于传统的工程设计思路,这种方法的优势体现在其灵活性上——无需精确建模物理现象即可获得满意的性能指标。 ```python import tensorflow as tf from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense, Conv1D, MaxPooling1D, UpSampling1D model = Sequential([ Conv1D(32, kernel_size=9, activation='relu', padding='same'), MaxPooling1D(pool_size=2), Conv1D(64, kernel_size=7, activation='relu', padding='same'), UpSampling1D(size=2), Conv1D(1, kernel_size=9, activation='sigmoid', padding='same') ]) model.compile(optimizer='adam', loss='binary_crossentropy') history = model.fit(noisy_train_data, clean_train_data, epochs=50, batch_size=128, shuffle=True, validation_split=0.2) ```
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值