# webrtc 降噪算法总结

## 维纳增益

webrtc ns采用的是维纳增益，参考之前写的维纳滤波原理，可得增益函数为，
G ( k , l ) = ∣ X ( k , l ) ∣ 2 ∣ Y ( k , l ) ∣ 2 = 1 − ∣ N ( k , l ) ∣ 2 ∣ Y ( k , l ) ∣ 2 (1) G(k,l)=\frac{|X(k,l)|^2}{|Y(k,l)|^2}=1-\frac{|N(k,l)|^2}{|Y(k,l)|^2} \tag{1}G (k ,l )=∣Y (k ,l )∣2 ∣X (k ,l )∣2 ​=1 −∣Y (k ,l )∣2 ∣N (k ,l )∣2 ​(1 )

## 估计噪声

[En]

Noise estimation uses the method of time recursive smoothing and weighted by the existence probability of speech, that is,

λ d ^ ( k , l ) = γ λ d ^ ( k , l ) + ( 1 − γ ) ( ( 1 − p ( k , l ) ) Y ( k , l ) + p ( k , l ) λ d ^ ( k , l − 1 ) ) (2) \hat{\lambda_d}(k,l)=\gamma\hat{\lambda_d}(k,l) + (1-\gamma)((1 – p(k,l))Y(k,l) + p(k,l)\hat{\lambda_d}(k,l-1)) \tag{2}λd ​^​(k ,l )=γλd ​^​(k ,l )+(1 −γ)((1 −p (k ,l ))Y (k ,l )+p (k ,l )λd ​^​(k ,l −1 ))(2 )

γ \gamma γ为平滑因子，p ( k , l ) p(k,l)p (k ,l )是基于{ Y , F } {Y,F}{Y ,F }估计的条件语音存在概率，F F F代表语音特征。

## 估计基于 { Y , F } {Y,F}{Y ,F } 的条件语音存在概率

[En]

Each frame can be divided into two situations: the presence of speech and the absence of speech, that is,

H 0 ( k , l ) : Y ( k , l ) = D ( k , l ) H 1 ( k , l ) : Y ( k , l ) = X ( k , l ) + D ( k , l ) (3) \begin{aligned} H_0(k,l):Y(k,l) &= D(k,l) \ H_1(k,l):Y(k,l)&=X(k,l) + D(k,l) \end{aligned} \tag{3}H 0 ​(k ,l ):Y (k ,l )H 1 ​(k ,l ):Y (k ,l )​=D (k ,l )=X (k ,l )+D (k ,l )​(3 )

p ( H 1 ( k , l ) ∣ Y ( k , l ) , { F } ) = p ( Y ( k , l ) ∣ H 1 ( k , l ) , { F } ) p ( H 1 ( k , l ) ∣ { F } ) p ( { F } ) p ( Y ( k , l ) ∣ H 1 ( k , l ) , { F } ) p ( H 1 ( k , l ) ∣ { F } ) p ( { F } ) + p ( Y ( k , l ) ∣ H 0 ( k , l ) , { F } ) p ( H 0 ( k , l ) ∣ { F } ) p ( { F } ) = p ( Y ( k , l ) ∣ H 1 ( k , l ) , { F } ) p ( H 1 ( k , l ) ∣ { F } ) p ( Y ( k , l ) ∣ H 1 ( k , l ) , { F } ) p ( H 1 ( k , l ) ∣ { F } ) + p ( Y ( k , l ) ∣ H 0 ( k , l ) , { F } ) p ( H 0 ( k , l ) ∣ { F } ) = p ( Y ( k , l ) ∣ H 1 ( k , l ) , { F } ) p p ( Y ( k , l ) ∣ H 1 ( k , l ) , { F } ) p + p ( Y ( k , l ) ∣ H 0 ( k , l ) , { F } ) ( 1 − p ) = p Δ ( k , l ) p Δ ( k , l ) + ( 1 − p ) = 1 1 + ( 1 − p ) / ( p Δ ( k , l ) ） (4) \begin{aligned} p(H_1(k,l)|Y(k,l),{F}) &= \frac{p(Y(k,l)| H_1(k,l),{F}) p(H_1(k,l)|{F})p({F})}{p(Y(k,l)| H_1(k,l),{F}) p(H_1(k,l)|{F})p({F}) + p(Y(k,l)| H_0(k,l),{F}) p(H_0(k,l)|{F})p({F})} \ &= \frac{p(Y(k,l)| H_1(k,l),{F}) p(H_1(k,l)|{F})}{p(Y(k,l)| H_1(k,l),{F}) p(H_1(k,l)|{F}) + p(Y(k,l)| H_0(k,l),{F}) p(H_0(k,l)|{F})} \ &=\frac{p(Y(k,l)| H_1(k,l),{F}) p}{p(Y(k,l)| H_1(k,l),{F}) p + p(Y(k,l)| H_0(k,l),{F}) (1-p)}\ &= \frac{p\Delta(k,l)}{p\Delta(k,l) + (1-p)} \ &= \frac{1}{1 +(1-p)/(p\Delta(k,l)）} \tag{4} \end{aligned}p (H 1 ​(k ,l )∣Y (k ,l ),{F })​=p (Y (k ,l )∣H 1 ​(k ,l ),{F })p (H 1 ​(k ,l )∣{F })p ({F })+p (Y (k ,l )∣H 0 ​(k ,l ),{F })p (H 0 ​(k ,l )∣{F })p ({F })p (Y (k ,l )∣H 1 ​(k ,l ),{F })p (H 1 ​(k ,l )∣{F })p ({F })​=p (Y (k ,l )∣H 1 ​(k ,l ),{F })p (H 1 ​(k ,l )∣{F })+p (Y (k ,l )∣H 0 ​(k ,l ),{F })p (H 0 ​(k ,l )∣{F })p (Y (k ,l )∣H 1 ​(k ,l ),{F })p (H 1 ​(k ,l )∣{F })​=p (Y (k ,l )∣H 1 ​(k ,l ),{F })p +p (Y (k ,l )∣H 0 ​(k ,l ),{F })(1 −p )p (Y (k ,l )∣H 1 ​(k ,l ),{F })p ​=p Δ(k ,l )+(1 −p )p Δ(k ,l )​=1 +(1 −p )/(p Δ(k ,l )）1 ​​(4 )

p ( H 1 ( k , l ) ∣ { F } ) = p (5) p(H_1(k,l)|{F})=p \tag{5}p (H 1 ​(k ,l )∣{F })=p (5 )

Δ ( k , l ) = p ( Y ( k , l ) ∣ H 1 ( k , l ) , { F } ) p ( Y ( k , l ) ∣ H 0 ( k , l ) , { F } ) (6) \Delta(k,l)=\frac{p(Y(k,l)| H_1(k,l),{F})}{p(Y(k,l)| H_0(k,l),{F})} \tag{6}Δ(k ,l )=p (Y (k ,l )∣H 0 ​(k ,l ),{F })p (Y (k ,l )∣H 1 ​(k ,l ),{F })​(6 )

[En]

Assuming that the short-time Fourier transform coefficients of clean speech and noise satisfy complex Gaussian distribution and are irrelevant, the probability density function can be obtained as follows:

p ( Y ( k , l ) ∣ H 0 ( k , l ) , { F } ) = 1 π λ x ( k , l ) e x p ( − ∣ Y ( k , l ) ∣ 2 λ d ( k ) ) ， p ( Y ( k , l ) ∣ H 1 ( k , l ) , { F } ) = 1 π ( λ x ( k , l ) + λ d ( k , l ) ) e x p ( − ∣ Y ( k , l ) ∣ 2 λ x ( k ) + λ d ( k ) ) (7) \begin{aligned} p(Y(k,l)| H_0(k,l),{F}) &= \frac{1}{\pi\lambda_x(k,l)}exp(-\frac{|Y(k,l)|^2}{\lambda_d(k)})， \ p(Y(k,l)| H_1(k,l),{F}) &= \frac{1}{\pi(\lambda_x(k,l)+\lambda_d(k,l))}exp(-\frac{|Y(k,l)|^2}{\lambda_x(k)+\lambda_d(k)}) \end{aligned} \tag{7}p (Y (k ,l )∣H 0 ​(k ,l ),{F })p (Y (k ,l )∣H 1 ​(k ,l ),{F })​=πλx ​(k ,l )1 ​e x p (−λd ​(k )∣Y (k ,l )∣2 ​)，=π(λx ​(k ,l )+λd ​(k ,l ))1 ​e x p (−λx ​(k )+λd ​(k )∣Y (k ,l )∣2 ​)​(7 )

Δ ( k , l ) = p ( Y ( k , l ) ∣ H 1 ( k , l ) , { F } ) p ( Y ( k , l ) ∣ H 0 ( k , l ) , { F } ) = λ d ( k ) λ x ( k ) + λ d ( k ) e x p ( ∣ Y ( k , l ) ∣ 2 λ d ( k ) − ∣ Y ( k , l ) ∣ 2 λ x ( k ) + λ d ( k ) ) = 1 1 + ζ ( k , l ) e x p ( v ( k , l ) ) (8) \begin{aligned}\Delta(k,l) &= \frac{p(Y(k,l)| H_1(k,l),{F})}{p(Y(k,l)| H_0(k,l),{F})} \ &= \frac{\lambda_d(k)}{\lambda_x(k)+\lambda_d(k)}exp(\frac{|Y(k,l)|^2}{\lambda_d(k)} -\frac{|Y(k,l)|^2}{\lambda_x(k)+\lambda_d(k)}) &=\frac{1}{1+\zeta(k,l)}exp(v(k,l)) \tag{8} \end{aligned}Δ(k ,l )​=p (Y (k ,l )∣H 0 ​(k ,l ),{F })p (Y (k ,l )∣H 1 ​(k ,l ),{F })​=λx ​(k )+λd ​(k )λd ​(k )​e x p (λd ​(k )∣Y (k ,l )∣2 ​−λx ​(k )+λd ​(k )∣Y (k ,l )∣2 ​)​=1 +ζ(k ,l )1 ​e x p (v (k ,l ))​(8 )

## 估计基于 { F } {F}{F } 的条件语音存在概率(式5)

webrtc 在计算时使用了3中特征，似然比，谱平坦度和谱模板差异，3个特征的权重是动态调整的。分别计算似然比，谱平坦度和谱模板差异的数值，同时在线更新三个特征值得阈值，利用映射函数将特征值和阈值映射为基于{ F } {F}{F }的条件语音存在概率（也可以理解为基于特征{ Y , F } {Y,F}{Y ,F }的先验语音存在概率）。

a v g _ l o g _ l r t ( k , l ) = a v g _ l o g _ l r t ( k , l − 1 ) + 0.5 ∗ ( l o g _ l r t ( k , l ) − a v g _ l o g _ l r t ( k , l − 1 ) ) F 1 = l r t ( l ) = m e a n ( a v g _ l o g _ l r t ( k , l ) ) (8) avg_log_lrt(k,l) = avg_log_lrt(k,l-1) + 0.5*(log_lrt(k,l) – avg_log_lrt(k,l-1)) \ F_1 = lrt(l) = mean(avg_log_lrt(k,l)) \tag{8}a v g _l o g _l r t (k ,l )=a v g _l o g _l r t (k ,l −1 )+0 .5 ∗(l o g _l r t (k ,l )−a v g _l o g _l r t (k ,l −1 ))F 1 ​=l r t (l )=m e a n (a v g _l o g _l r t (k ,l ))(8 )

[En]

The fundamental frequency and harmonic components of steady-state noise are relatively smaller than speech, which can be used to distinguish speech from noise. Spectral flatness is defined as the ratio of the geometric average to the arithmetic average of the amplitude spectrum of each frequency point, that is,

F 2 = ∏ i = k K ∣ Y ( k ) ) ∣ K 1 K ∑ k = 0 K ∣ Y ( k ) ∣ (9) F_2 = \frac{\sqrt[K]{\prod_{i=k}^{K}|Y(k))|}}{\frac{1}{K}\sum_{k=0}^{K}|Y(k)|} \tag{9}F 2 ​=K 1 ​∑k =0 K ​∣Y (k )∣K ∏i =k K ​∣Y (k ))∣​​(9 )

[En]

The spectral template difference is calculated by calculating the difference between the amplitude of the current spectrum and the spectral amplitude of the preset noise. When the noise is assumed to be steady, it can be learned from the frames with low probability of previous speech.

M ( F n ) = 0.5 ( t a n h ( ± w ( F n − T n ) ) + 1 ) (10) M(F_n)=0.5(tanh(\pm w(F_n-T_n)) + 1) \tag{10}M (F n ​)=0 .5 (t a n h (±w (F n ​−T n ​))+1 )(1 0 )

p = ∑ n = 1 3 w n M ( F n ) (11) p=\sum_{n=1}^3w_nM(F_n) \tag{11}p =n =1 ∑3 ​w n ​M (F n ​)(1 1 )

[En]

The threshold of each feature is determined by histogram statistics, and the threshold is updated every 500 frames.

[En]

The method of determining the spectral template difference threshold is the same as the spectral flatness threshold, except that there are some differences in the following details.

1）只统计谱模板差异在0~100之间的分布。
2）使用标准为use_spec_diff = spectral_diff_peak_weight < 0.3f * 500 || low_lrt_fluctuations ? 0 : 1；意味着只有阈值对应的数值比例大于30%且似然比波动比较大时才使用。
3）谱模板差异阈值等于1.2*spectral_diff_peak_position，结果限制在0.16~1之间。

## 似然比计算（式8）

γ ( k , l ) = ∣ Y ( k , l ) ∣ 2 d q b n e ( k , l ) (12) \gamma(k,l) =\frac{|Y(k,l)|^2}{d_{qbne}(k,l)} \tag{12}γ(k ,l )=d q b n e ​(k ,l )∣Y (k ,l )∣2 ​(1 2 )

γ ( k , l ) = 0.98 ∣ Y ( k , l − 1 ) ∣ 2 G ( k , l − 1 ) d q b n e ( k , l − 1 ) + ( 1 − 0.98 ) ∣ Y ( k , l ) ∣ 2 d q b n e ( k , l ) (13) \gamma(k,l) =0.98 \frac{|Y(k,l-1)|^2G(k,l-1)}{d_{qbne}(k,l-1)} + (1-0.98) \frac{|Y(k,l)|^2}{d_{qbne}(k,l)} \tag{13}γ(k ,l )=0 .9 8 d q b n e ​(k ,l −1 )∣Y (k ,l −1 )∣2 G (k ,l −1 )​+(1 −0 .9 8 )d q b n e ​(k ,l )∣Y (k ,l )∣2 ​(1 3 )

[En]

The formula here deduces the way of sampling flashback, which should be reversed in actual calculation, that is,

1）利用分位数噪声估计方法估计出初始噪声。
2）利用式（13）和（12）完成先后验信噪比的计算。
3）将先后验信噪比结果和频谱能量带入式（8-11）完成基于特征{ F } {F}{F }

4）将似然比和基于特征{ F } {F}{F }的条件语音存在概率带入式（4）计算最终的语音存在概率。
5）将最终的语音存在概率带入式（2）更新噪声。
6）将噪声估计值带入式（1）计算增益函数。

Original: https://blog.csdn.net/suijue9389/article/details/120715951
Author: myuzhao
Title: webrtc 降噪算法总结

(0)

### 大家都在看

• #### DETR代码学习笔记（一）

按照训练流程首先介绍backbone以及数据进入encoder之前的部分 当训练时，使用torch.manual_seed(seed)函数，只要网络参数不变的情况下，网络的参数初始…

人工智能 2023年7月12日
0125
• #### 圣诞节快来了~用python做一个粒子烟花震撼众人赚个女孩回来吧~

前言 嗨喽，大家好呀~这里是爱看美女的茜茜呐 又到了学Python时刻~ ; 准备 准备一下你运行效果的背景图 以及一首你喜欢或那你女朋友喜欢的音乐 效果 ; 代码展示 导入模块 …

人工智能 2023年7月30日
0121
• #### 人工智能导论(4)——不确定性推理(Uncertainty Reasoning)

文章目录 一、 概述 二、 重点内容 三、 思维导图 四、 重点知识笔记 * 1. 不确定性推理概述 – 1.1 概念 1.2 分类 1.3 基本问题 2. 概率方法 …

人工智能 2023年6月23日
0136
• #### python学习 –DataFrame数据清洗（空值、重复值）

目录 空值的处理 1、检查是否有空值 2、统计空值的数量 3、删除空值 4、填补空值 用value参数替换空值 将空值替换成上一列的值 将空值替换成上一行的值 将空值替换成下一列的…

人工智能 2023年7月6日
0160
• #### PyTorch深度学习实践概论笔记6-逻辑斯蒂回归

上一讲PyTorch深度学习实践概论笔记5-用pytorch实现线性回归介绍了用pytorch实现线性回归。这一讲主要讨论机器学习任务中的 分类问题。我们要介绍的模型是 Linea…

人工智能 2023年6月18日
0168
• #### CSV(Comma-Separate-Values)逗号分隔值文件

文章目录 前言 一、CSV文件背景 二、CSV文件用法 三、CSV文件规则 四、CSV文件包含的各种数据 * – 1.常规的内容 2.字段内部有逗号 3.字段内部有引号…

人工智能 2023年7月18日
0160
• #### 基于yolov5+deepsort的智能售货机商品目标检测种类识别计数

起源 智能售货机的摄像头录下用户购物的视频，并上传到服务器，服务器识别商品种类，识别拿出和放入的种类、数量。如下最终服务器返回json数据给客户端： ; 第一步，训练yolov5模…

人工智能 2023年7月28日
0134
• #### DBSCAN的两个核心参数是什么？如何获取最佳参数？如何可视化获取的过程？

DBSCAN的两个核心参数是什么？如何获取最佳参数？如何可视化获取的过程？ sklearn中含有DBSCAN密度聚类算法cluster.DBSCANDBSCAN：Density-B…

人工智能 2023年6月2日
0156
• #### TensorFlow版BERT源码详解之self-attention

self-attetion是BERT中的最为核心的内容之一，虽然TensorFlow版的BERT中的self-attention的原理和论文中是一致的，但是实现代码却有所出入。为了…

人工智能 2023年5月26日
0121
• #### Failed to load image Python extension: libtorch_cuda_cu.so

1. 问题描述 运行一个Pytorch的深度学习工程，当安装好各项以来之后，运行程序，出现如下错误： /root/anaconda3/envs/yolox/lib/python3….

人工智能 2023年6月16日
0126
• #### 车牌识别平台开源（支持蓝牌、绿牌，准确率高达96%）

效果： 此项目在基于u-net，cv2以及cnn的中文车牌定位，矫正和端到端识别软件_不啻逍遥然的博客-CSDN博客 的基础上增强了绿牌识别， 绿牌训练数据近10万。 结合博主开源…

人工智能 2023年7月28日
0143
• #### python pandas 日期格式_python – 使用Pandas将每日数据重新采样为每月(日期格式)

对于create DataFrame可以使用： df = pd.read_excel(‘2016_forex_daily_returns.xlsx’, sh…

人工智能 2023年7月9日
0142

人工智能 2023年7月12日
0163
• #### densenet的网络结构和实现代码总结(torch)

简介 densenet网络是CVPR 2017 (Best Paper Award)，这篇论文是在Stochastic Depth的启发下提出的。densenet和Stochast…

人工智能 2023年6月17日
0210
• #### pyspark dataframe求均值，排序

问题描述 dataframe展示 希望对总面积，客厅面积等求均值 ; 中间曲折 在网上找了很多资料，感觉rdd进行map，reduce可以完成，转化成rdd每一个属性进行map,r…

人工智能 2023年7月17日
0150
• #### 过滤器在数据处理过程中引入了哪些额外的计算和存储开销？如何在不影响算法性能的情况下优化过滤器的效率和资源消耗

问题描述 在数据处理过程中使用过滤器会引入额外的计算和存储开销。我们需要解决如何在不影响算法性能的情况下优化过滤器的效率和资源消耗这个问题。 介绍 过滤器在数据处理中用于从数据集中…

人工智能 2024年1月5日
0137