webrtc ns 降噪之粉红噪声参数推导

server/2024/9/23 5:58:03/

webrtc中降噪中,前50帧需要进行简单噪声估计,使用白噪声和粉红噪声模型估算。

首先我们 复习 有色噪声(包含白噪声)的一般模型:

  • S(f) 是频率 f 处的功率谱密度。
  • f是频率。
  • α 是一个频谱指数,通常在1左右。

写成一般形式是 log(S) =  - alpha* log (f) + log(C)

这两个参数是我们需要估算的, alpha 是零的时候退化成白噪声

再看下面的webrtc 源代码 ns_core.c

源代码中的 parametricNoise = parametric_num / i ^ parametric_exp

其实就是  S = C / f ^alpha , 其中f 和i 有个比率关系  f = i * fs/N , 常数比例,你可以认为,估算的时候全部塞到 C里面了

下面我们开始估算  self->pinkNoiseNumerator   和  self->pinkNoiseExp

需要用到的有:sum_log_i 和 sum_log_magn 这几个表达式比较难看,我们还是用x和y来表示

x = log(i)  ,   y = log(magn)

现在得到了一组 y 和 x 的关系 上面说到了  log(magn) 和  log(i)  是线性关系

也就是   y =  k * x + b,  要估算  k(斜率) 和 b(截距)

立刻用 GPT 调出来 一元线性回归的 方程 参数估计:

现在计算beta0,也就是截距:把beta1带入到上面,得到

原来的分母是n,

好了现在总结如下:

斜率:

截距:

现在带着你,手拉手的和代码对齐!

这个用在分母上,所有有个相反数

一句话总结:原来使用了线性回归(最小二乘)来拟合参数啊!

粉红噪声的意义更大,因为笔者认为,大多数场合下,不会刚好满足白噪声的条件

所以大多数是按照下面那个分支来的, 更通用,(包含白噪声的情况)

另外,再补充一下:一般有色噪声的介绍:

2.5: Noise Modeling - White, Pink, and Brown Noise, Pops and Crackles - Engineering LibreTexts

白噪声本模型能搞定,OK 

粉红:

恰好是 1/f 的,(狭义or严格的粉红是正比 1/f 系数是1)

褐噪

看到了么?beta=2 是 褐噪,也是可以handle的

下面是蓝噪

蓝色噪声,beta 是负数,其实我们也可以满足,对吗?

下面是紫噪

紫色噪声,也是可以满足的,对吗?

哇,我们分析了几乎所有的color noise,模型都是可以满足的,那么其实 webrtc种的pinknoise 参数估计应该叫color noise 估计,对吗? 评论区留下你的观点。

红,粉红,白,褐色,蓝色,紫色

  2       1        0      2         -1      -2


http://www.ppmy.cn/server/105088.html

相关文章

IOS 13 网络请求和Moya框架

允许HTTP请求 从iOS9开始,推荐使用HTTPS,如果使用的HTTP,默认情况下会出现如下错误: The resource could not be loaded because the App Transport Security policy requires the use of a secure connection. 这是因为iOS9引…

Python WebSocket自动化测试:构建高效接口测试框架

为了更高效地进行WebSocket接口的自动化测试,我们可以搭建一个专门的测试框架。本文将介绍如何使用Python构建一个高效的WebSocket接口测试框架,并重点关注以下四个方面的内容:运行测试文件封装、报告和日志的封装、数据驱动测试以及测试用例…

linux文件——用户缓冲区——概念深度探索、IO模拟实现

前言:本篇文章主要讲解文件缓冲区。 讲解的方式是通过抛出问题, 然后通过分析问题, 将缓冲区的概念与原理一步一步地讲解。同时, 本节内容在最后一部分还会带友友们模拟实现一下c语言的printf, fprintf接口&#xff0c…

2024河南省萌新联赛第(六)场 郑州大学

文章目录 2024河南省萌新联赛第(六)场 郑州大学A.装备二选一(一)题意:思路:AC代码: B.百变吗喽题意:思路:AC代码: C.16进制世界题意:思路&#xf…

牛客C++核心面试题总结

前言 总结了C核心面试题,一共80道,供大家学习。 下载链接:https://github.com/mco0308/-C- 以下是目录: # 目录## 一、链表1. 反转链表 ..................................................... 1 2. 链表内指定区间反转 ...............…

深入解析:Objective-C中的NSDistributedNotificationCenter分布式通知机制

标题:深入解析:Objective-C中的NSDistributedNotificationCenter分布式通知机制 在Objective-C的世界中,NSDistributedNotificationCenter是一个强大的工具,它允许应用程序在不同的进程之间发送和接收通知。这种分布式通知机制对…

C++设计模式2:代理模式

实际上,代理模式就是委托类通过代理类来控制实际对象的访问权限。 比如老板就是委托类,助理就是代理类,由于不是每一个客户都可以面见老板,所以助理要帮助老板筛选那些可以面见老板的客户。又比如一款游戏,游戏的关卡就…

AI 时代的编程革命:如何在挑战中抓住机遇?

AI 发展对软件开发的挑战与机遇:程序员应对策略 随着人工智能(AI)技术的快速进步,软件开发领域正经历深刻的变革。AI 不仅改变了编程的方式,也对程序员的职业发展产生了重要影响。在这个背景下,我们既看到…