Chapter 5:Spectral-Subtractive Algorithms
作者:桂。
时间:2017-05-24 10:06:39
主要是《Speech enhancement: theory and practice》的读书笔记,全部内容可以点击这里。
书中代码:http://pan.baidu.com/s/1hsj4Wlu,提取密码:9dmi
一、谱减的基本原理
A-基本问题
基本模型是加性噪声:
频域模型:
所谓谱减法,可以通过不同的假设进行,一般的:
通常为了避免幅值出现负数,加上一个半波整流。这时的幅度估计+带噪信号的相位,即可得出降噪的信号。
B-典型
分别取 p = 1, p = 2分析。
p = 1时,谱减
p = 2时,谱减
可以看出p = 2是基于统计无关的假设:
反过来看看p = 1的情形,可以写成:
也就是clean信号与noise相位相同,且统计相关。
对比来看,p = 2的假设在应用场景里应该比 p = 1更合理,尽管作为非平稳信号,完全无关的假设难以严格满足。p取其他值的分析类似。
谱减法的基本框架:
回顾上面的谱减法,理论分析的前提是基于频点,事实上许多应用场景里,noise与clean(特别是在高频区域)满足一定的正交性,即该频点完全属于clean/noise,而非二者的混合,从这一点来说p的不同取值带来的影响远没有理论中体现的那么大。下图也说明了:高频部分的正交性更明显。
二、谱减法的不足
1-带来了Musical noise
谱减过程中没有完全消除噪声,而把峰值保留了下来,造成Musical noise:
2-相位失真
相位不准确带来的信号失真,带噪的相位来表达clean的相位,造成语音的可懂度下降(书中指出SNRs (<0 dB),其实这么说是不合适的,噪声与信号正交程度越小,这种论证才有意义).
三、其它谱减法
A-Boll的过减法
Boll的思路其实就是平滑,如果平滑呢?这里没有用线性平滑,而是用了一个min/max{相邻帧信息}的思路,为了防止毛刺:1)谱减的门限D尽可能Max,2)信号的估计尽可能min
Berouti等人也提出了一种方法:
这个思路的核心在于β的选取,其实就是为了减少毛刺引入了填充,其中
,图中可以观察到β的影响:
B-非线性谱减
这个的动机是:现实中,噪声对所有频段的影响,并不是均衡的,按上面的思路过于粗糙,例如汽车噪声,可能在某一频段干扰明显,又比如一些噪声对于低频影响更大。非线性谱减的基本规则:
核心在于a(w)不再是一个常数,取值与频率有关。其中的参数一般平滑与处理一下
a通常取非线性函数
其中ρ
信噪比越大,a越小。
C-多带谱减法
多带谱减也可以归类为非线性谱减,其实就是分自带计算,类似分治法
谱减的思路可以按照上面任何一个方法,不同的是用了两个参数:α、,
对于α:
其中
对于
多带的实现框图
D-MMSE谱减法
上面提到的谱减法,可以有一种广义的定义方式
且上面的方法都是通过实验经验设定参数,其实对于参数γ、α可以借助MMSE(最小均方误差估计)/其他准则合理即可:
得出的参数估计(细节可参考这里)
其中
从而得出降噪结果:
这里用到一个粗糙但简便的假设:噪声谱与干净信号谱的相位相同。
如果假设,可以得到类似的降噪算法
其中是与p有关的常数,如
对应
。得到估计之后可以通过上面提到一些方式作进一步的后处理。
这个方法的关键在于:作为一个理论值,实际应用如何估计它?
直观的思路是,可以借助已处理的信息进行估计:,也可以利用当前信息估计:
,一种折中的思路是二者的权衡:
E-扩展谱减法
上面的算法都需要借助VAD技术/噪声估计技术,实际上 维纳+谱减 的结合,可以实现降噪并称该方法:扩展谱减法。
维纳滤波原理
其中y为带噪信号,x为clean,n为noise.对于也就是
细节处理上可以用一下平滑
利用估计的噪声谱得出当前的噪声谱
从而估计当前的信号
它是自适应的,不需要估计噪声,因此对于非平稳噪声环境也同样适用。实现框图:
Chapter 5:Spectral-Subtractive Algorithms的更多相关文章
- Chapter 1:Introduction
作者:桂. 时间:2017-05-24 08:06:45 主要是<Speech enhancement: theory and practice>的读书笔记,全部内容可以点击这里. 1. ...
- [Algorithm] 如何正确撸<算法导论>CLRS
其实算法本身不难,第一遍可以只看伪代码和算法思路.如果想进一步理解的话,第三章那些标记法是非常重要的,就算要花费大量时间才能理解,也不要马马虎虎略过.因为以后的每一章,讲完算法就是这样的分析,精通的话 ...
- UVA 10652 Board Wrapping 计算几何
多边形凸包.. .. Board Wrapping Time Limit: 3000MS Memory Limit: Unknown 64bit IO Format: %lld & %llu ...
- 某Facebook工程师写的攻略。
Chapter 1 Interesting read, but you can skip it. Chapter 2 2.1 Insertion Sort - To be honest you sho ...
- scikit-learn:class and function reference(看看你究竟掌握了多少。。)
http://scikit-learn.org/stable/modules/classes.html#module-sklearn.decomposition Reference This is t ...
- 剖析虚幻渲染体系(06)- UE5特辑Part 1(特性和Nanite)
目录 6.1 本篇概述 6.1.1 本篇内容 6.1.2 基础概念 6.2 UE5新特性 6.2.1 UE5编辑器 6.2.1.1 下载编辑器及资源 6.2.1.2 启动示例工程 6.2.1.3 编辑 ...
- JVM,我就不信学不会你了
JVM 对 Java 有多重要,对程序员面试有多重要,这些不用多说. 如果你还没意识到学 JVM 的必要性,或者不知道怎么学 JVM,那么看完这篇文章,你就能知道答案了. 曾经的我很不屑于学 JVM, ...
- 论文解读DEC《Unsupervised Deep Embedding for Clustering Analysis》
Junyuan Xie, Ross B. Girshick, Ali Farhadi2015, ICML1243 Citations, 45 ReferencesCode:DownloadPaper: ...
- Chapter 9:Noise-Estimation Algorithms
作者:桂. 时间:2017-06-14 12:08:57 链接:http://www.cnblogs.com/xingshansi/p/6956556.html 主要是<Speech enha ...
- planning algorithms chapter 2
planning algorithms chapter 2 :Discrete Planning 离散可行规划导论 问题定义 在离散规划中,状态是"可数"的,有限的. 离散可行规划 ...
随机推荐
- php操作memcache缓存基本方法
memcache 是一个高效的分布式的内存对象缓存系统,他可以支持把php的各种数据(数组,对象,基本数据类型)放在它管理的内存中 1.代码使用 <?php //连接 $mem = new Me ...
- OC继承以及实例变量修饰符
这里基本上跟java一样 所以就简单写几点要注意的: 1)OC与java一样都只支持单继承可以多层继承(java单继承多实现) 2) OC中的实例变量修饰符前要加 @ 例如 @private 例如下面 ...
- POJ1850-Code 递推数学
题目链接:http://poj.org/problem?id=1850 题目大意: 按照字典序对升序排列组成的字母进行编号,给出一个长度不超过10的串,求出它的编号是多少?如果无法进行编号则输出0. ...
- hosts文件原理
hosts文件是一个用于储存计算机网络中各节点信息的计算机文件.这个文件负责将主机名映射到相应的IP地址.hosts文件通常用于补充或取代网络中DNS的功能.和DNS不同的是,计算机的用户可以直接对h ...
- ZooKeeper监听机制
前言:Zookeeper的监听机制很多人都踩过坑,感觉实现了watcher 接口,后面节点的变化都会一一推送过来,然而并非如此. Watch机制官方声明:一个Watch事件是一个一次性的触发器,当被设 ...
- Charles Proxy 4.1.2 破解版
下载Charles Proxy 4.1.2版本,百度云盘下载 或 去官网下载 安装后先打开Charles一次(Windows版可以忽略此步骤) 在这个网站(http://charles.iiilab. ...
- KafKa介绍(分布式架构)
介绍 Kafka是一个分布式的.可分区的.可复制的消息系统.它提供了普通消息系统的功能,但具有自己独特的设计.这个独特的设计是什么样的呢? 首先让我们看几个基本的消息系统术语: Kafka将消息以to ...
- java之 Timer 类的使用以及深入理解
最近一直在看线程知识,然后看到Timer定时器使用了线程实现的定时功能,于是了解了解: 本文 从Time类的使用和源码分析两个方面讲解: 1---Timer类使用 2---源码分析 1.Time类使用 ...
- jsp/html页面中的路径
Html/Jsp页面中的路径,是供浏览器使用的."/"代表的是服务器根目录,一个服务器会有多个web应用,所以请求资源时需要加应用名才能正确访问. 页面中使用的相对路径,也是由浏览 ...
- MindNode for mac 思维导图
绘制思维导图 下载地址 链接: https://pan.baidu.com/s/1o7NBzmU 密码: mu3f