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

news2024/9/23 16:09:04

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.coloradmin.cn/o/2068009.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何使用ssm实现海鲜自助餐厅系统+vue

TOC ssm068海鲜自助餐厅系统vue 绪论 1.1 选题背景 网络技术和计算机技术发展至今,已经拥有了深厚的理论基础,并在现实中进行了充分运用,尤其是基于计算机运行的软件更是受到各界的关注。计算机软件可以针对不同行业的营业特点以及管理需…

【C++ Primer Plus习题】3.3

问题: 解答: #include <iostream> using namespace std;const int DE_TO_MI 60; const int MI_TO_SE 60;int main() {int degree 0, minute 0, second 0;float degrees 0;cout << "请输入度:";cin >> degree;cout << "请输入分…

Selenium + Python 自动化测试23(综合实战)

我们的目标是:按照这一套资料学习下来,大家可以独立完成自动化测试的任务。 上一篇我们讨论了PO模式和unittest框架、数据驱动结合起来使用。 本篇文章我们综合一下之前学习的内容,试着编写实际项目易用的测试用例脚本。 今天应该是此项目最后一次分享,大家快看,有完整的…

IntelliJ IDEA的maven配置

前言 在 IntelliJ IDEA 中&#xff0c;Maven 的默认配置文件是 settings.xml&#xff0c;它通常位于以下路径&#xff1a; 配置文件位置 全局配置文件&#xff1a; Windows: %USER_HOME%\.m2\settings.xmlmacOS/Linux: ~/.m2/settings.xml 这个文件是 Maven 的全局配置文件。…

闲鱼IP属地地址:去外地会自动变化吗?解析实时更新机制

在数字化时代&#xff0c;网络交易平台如闲鱼已成为我们日常生活中不可或缺的一部分。在进行二手交易时&#xff0c;了解对方的地理位置信息成为许多买家和卖家的关切点。那么&#xff0c;去外地闲鱼IP会变吗&#xff1f;闲鱼IP属地地址是实时更新吗&#xff1f;本文将深入探讨…

C#开发基础之I/O 异步和多线程异步:本质上的区别与使用场景

前言 在桌面软件开发中&#xff0c;异步编程是一种至关重要的技巧&#xff0c;尤其是在需要提高应用程序响应性和并发处理能力时。常见的异步编程模式主要包括 I/O 异步和多线程异步&#xff0c;这两者虽然都实现了非阻塞操作&#xff0c;但在本质上有着显著的区别。理解它们的…

USB分析仪USB3.2日志分析

1.简介 USB2.0总线采用轮询模式&#xff0c;即总线事务开始时&#xff0c;都要先发送IN或者OUT令牌包&#xff0c;以通知端点或者查询端点是否准备好。而USB3.2采用了异步通知模式&#xff0c;若端点没有准备好&#xff0c;则主机无需轮询&#xff0c;端点准备好后会通知主机&…

进程创建:fork函数

fork函数 在Linux系统中&#xff0c;fork函数是用于创建一个新的进程的函数。调用fork函数会创建一个新的进程。 fork函数的原型如下&#xff1a; #include <unistd.h>pid_t fork(void);fork函数没有参数&#xff0c;返回值是一个pid_t类型的值。在成功创建新的进程后…

Python酷库之旅-第三方库Pandas(094)

目录 一、用法精讲 401、pandas.Series.to_string方法 401-1、语法 401-2、参数 401-3、功能 401-4、返回值 401-5、说明 401-6、用法 401-6-1、数据准备 401-6-2、代码示例 401-6-3、结果输出 402、pandas.Series.to_clipboard方法 402-1、语法 402-2、参数 40…

【精选】基于python的影片数据爬取与数据分析

博主介绍&#xff1a; ✌我是阿龙&#xff0c;一名专注于Java技术领域的程序员&#xff0c;全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师&#xff0c;我在计算机毕业设计开发方面积累了丰富的经验。同时&#xff0c;我也是掘金、华为云、阿里云、InfoQ等平台…

推荐4款2024年PDF转图片的神器武器!

平时很多人都会经常遇到需要将 PDF 文件转换为图片的情况&#xff1b;不管是因为方便分享、展示内容&#xff0c;还是其他特殊需求&#xff0c;PDF 转图片工具都能起到很大的帮助。今天&#xff0c;就来跟大家分享4个特别好用的PDF转图片的工具。 1、365PDF转换软件 直通车&am…

live chart 仪表盘和饼图 示例

先上图&#xff1a; 下面是代码&#xff1a; <!--第一个卡片--><GroupBox Header"各生产线人数"><Grid><Grid.RowDefinitions><RowDefinition Height"45"/><RowDefinition/><RowDefinition Height"auto"…

RK3588编译CH343驱动

文章目录 1. 概述。2. ko编译3.环境构建3.1 集成ch343驱动3.2 修改内核配置3.3 编译内核模块3.4 部署安装 最近在RK3588的开发板上要接一个外部的小板&#xff0c;需要使用的ch343驱动&#xff0c;但是rk3588的板子上没有自带的ch343的驱动&#xff0c;就需要自己手动编译一个c…

Java基础学习篇:switch条件语句进阶(最详细版)

&#x1f51d;&#x1f51d;&#x1f51d;&#x1f51d;&#x1f51d;&#x1f51d;&#x1f51d;&#x1f51d;&#x1f51d;&#x1f51d;&#x1f51d;&#x1f51d;&#x1f51d;&#x1f51d;&#x1f51d; &#x1f947;博主昵称&#xff1a;小菜元 &#x1f35f;博客主页…

【KivyMD 应用程序 1.1.1】Icons在应用设计中的魅力

图标,这些小小的视觉元素,拥有不可思议的力量,能够跨越语言和文化的障碍,传达丰富的信息。在数字时代,图标的设计和应用已经成为界面设计不可或缺的一部分,而Material Design Icons则是这个领域的佼佼者。 Material Design Icons源自Google的Material Design语言,旨在创…

剑指offer 30. 包含min函数的栈

目录 原题链接 题目描述 解决方案 思路分析 核心思路 流程图解 操作细节 代码实现 Python 语言实现 C 语言实现 Java 语言实现 复杂度分析 总结 其他相似题目 原题链接 剑指offer_在线编程_牛客网 (nowcoder.com) 题目描述 定义一个栈的数据结构&#xff0c;并…

20240823给飞凌OK3588-C的核心板刷Ubuntu22.04并成功启动

20240823给飞凌OK3588-C的核心板刷Ubuntu22.04并成功启动 2024/8/23 20:37 给飞凌OK3588-C的核心板刷Ubuntu22.04&#xff0c;不管是预编译的&#xff0c;还是你自己直接编译的IMG固件。 放心&#xff0c;都会卡死在这里的&#xff01;^_ [BEGIN] 2024/8/23 20:10:55 DDR V1.12…

使用pyevtk导出结构化VTK网格以供后处理

pyevtk简介 在计算流体力学CFD中&#xff0c;通常需要处理三维网格数据&#xff0c;为了可视化&#xff0c;需要将其输出。本文介绍使用python的pyevtk库输出结构化网格&#xff0c;以供paraview进一步后处理。 代码 # ***************************************************…

LeetCode.209.长度最小的子数组

题目描述&#xff1a; 给定一个含有 n 个正整数的数组和一个正整数 target 。 找出该数组中满足其总和大于等于 target 的长度最小的 子数组 [numsl, numsl1, ..., numsr-1, numsr] &#xff0c;并返回其长度。如果不存在符合条件的子数组&#xff0c;返回 0 输入输出实例…

【问题记录】mysql报错 ,mysql2 和 mysql 5.

错误2 和 错误5 都是由于注册表有问题&#xff1a; 由于我之前安装过MySQL&#xff0c;导致之前的配置没有删除。 解决&#xff1a; 搜索打开注册表编辑器&#xff1a; 注册表中找到MySQL: 修改路径&#xff1a; "D:\develop\mysql-8.0.39-winx64\bin\mysqld&quo…