当前位置: 首页 > news >正文

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

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

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 微软Edge浏览器
  • 2024数据泄露事件增涨迅猛,我们决不能坐以待毙!
  • day37-https实战
  • 【python数据分析11】——Pandas统计分析(分组聚合进行组内计算)
  • Nuxt3【路由中间件】middleware
  • 2024年新SCI顶刊算法信息获取优化算法IAO优化Transformer-GRU模型的多变量时间序列预测
  • 组合模式 详解
  • iPhone如何全选删除照片:一步到位的清理指南
  • 看书标记【数据科学:R语言实战 8】
  • VS Code安装与vue项目新建
  • 百数教学——企业互联,让业务合作跨越距离与障碍
  • java Arrays.fill方法介绍
  • SQL基础——函数与约束
  • MySQL:从入门到放弃
  • redis的数据结构——压缩表(Ziplist)
  • 【翻译】Mashape是如何管理15000个API和微服务的(三)
  • angular组件开发
  • bearychat的java client
  • Git 使用集
  • PHP 使用 Swoole - TaskWorker 实现异步操作 Mysql
  • Spring核心 Bean的高级装配
  • vuex 笔记整理
  • webpack+react项目初体验——记录我的webpack环境配置
  • 入门到放弃node系列之Hello Word篇
  • 实战|智能家居行业移动应用性能分析
  • 通过来模仿稀土掘金个人页面的布局来学习使用CoordinatorLayout
  • scrapy中间件源码分析及常用中间件大全
  • ​LeetCode解法汇总518. 零钱兑换 II
  • #### golang中【堆】的使用及底层 ####
  • #AngularJS#$sce.trustAsResourceUrl
  • (1)STL算法之遍历容器
  • (4.10~4.16)
  • (阿里巴巴 dubbo,有数据库,可执行 )dubbo zookeeper spring demo
  • (二十六)Java 数据结构
  • (二十五)admin-boot项目之集成消息队列Rabbitmq
  • (十三)Maven插件解析运行机制
  • (学习日记)2024.02.29:UCOSIII第二节
  • (一)utf8mb4_general_ci 和 utf8mb4_unicode_ci 适用排序和比较规则场景
  • (转)fock函数详解
  • .net core docker部署教程和细节问题
  • .net 调用海康SDK以及常见的坑解释
  • .NET 设计模式—适配器模式(Adapter Pattern)
  • .NET国产化改造探索(一)、VMware安装银河麒麟
  • .NET平台开源项目速览(15)文档数据库RavenDB-介绍与初体验
  • .net中的Queue和Stack
  • :=
  • [ 渗透测试面试篇 ] 渗透测试面试题大集合(详解)(十)RCE (远程代码/命令执行漏洞)相关面试题
  • [012-1].第12节:Mysql的配置文件的使用
  • [12] 使用 CUDA 进行图像处理
  • [AI Embedchain] 开始使用 - 全栈
  • [BUUCTF NewStarCTF 2023 公开赛道] week4 crypto/pwn
  • [BZOJ 1032][JSOI2007]祖码Zuma(区间Dp)
  • [BZOJ3211]:花神游历各国(小清新线段树)
  • [Codeforces1137D]Cooperative Game
  • [hdu4622 Reincarnation]后缀数组