Chapter 9:Noise-Estimation Algorithms
作者:桂。
时间:2017-06-14 12:08:57
链接:http://www.cnblogs.com/xingshansi/p/6956556.html
主要是《Speech enhancement: theory and practice》的读书笔记,全部内容可以点击这里。
书中代码:http://pan.baidu.com/s/1hsj4Wlu,提取密码:9dmi
前言
主要梳理单通道噪声估计的一般方法,内容为自己的学习记录,如果有不准确/错误的地方,还希望帮忙指出来。
一、算法原理
本文不打算作综述类描述,只介绍几种常用的噪声估计算法,首先介绍一下噪声估计的一般思路,噪声估计主要基于以下三个现象:
现象一:在音频信号中,闭塞因闭合段频谱能量趋于零或接近噪声水平,除此之外还会注意到:
- 静默(silent)段出现在清摩擦音的低频段,特别是2kHz以下的频段;
- 静默段(silent)出现在元音或一般的浊音(半元音、鼻音)期间的高频段,通常是4kHz以上,如图所示:
由于该特性,噪声在频谱上非均匀分布,不同频带具有不同的SNR,例如car噪声则具有低频特性,高频部分受影响较小,从而高频部分提取的带噪谱可以更有效地估计和更新噪声谱。更一般地,对于任意类型噪声,只要该频带无语音的概率很高或者SNR很低,则可以估计/更新该频带的噪声谱,这类思想是递归平均噪声估计算法(the recursive-averaging type of noise-estimation algorithms)的支撑点。
现象二:即使在语音活动的区域,带噪语音信号在单个频带的功率通常会衰减到噪声的功率水平,我们因此可以追踪在短时窗内(0.4~1s)带噪语音谱每个频带的最小值,实现各个频带噪声的估计。该现象是最小值跟踪算法(the minima-tracking algorithms)的支撑点。
现象三:每个频带能量的直方图揭示了一个理论:出现频次最高的值对应频带的噪声水平。有时谱能量直方图有两种模式:1)低能量对应无声段、语音的低能量段;2)高能量模式对应(noisy)语音的浊音段。低能量成分大于高能量成分:
但这个现象并不是一成不变,作者进行实验验证得出了结论:通常低频具有双峰分布,中频-高频为单峰。以上现象,频带能量直方图最大值对应频带的噪声水平,这是直方图噪声估计算法(histogram-based noise-estimation algorithms)的支撑点。
总结一下,以上三个现象引出了三类噪声估计算法:
- 递归平均噪声算法
- 最小值跟踪算法
- 直方图噪声估计算法
二、递归平均噪声算法
这类方法有利用信噪比相关、加权谱平均、基于信号存在概率等方法,这里只介绍基于信号存在概率的递归平均噪声估计算法,因为常用的MCRA及其变种就属于该范畴。
先说基本框架
从而实现噪声谱估计
剩下的就是一些常规的思路了。
A-似然比方法
两个基本要点:1)利用ML准则估计概率;2)利用近似表达。
这样一来,噪声估计为
其实这就是平滑的思路,只不过平滑因子对应这里的存在概率
按照之前的分析,在DFT系数复高斯模型下,可以实现参数估计
这样一来就完成了参数估计,噪声实现估计,细节上还有很多修缮的地方,这里就不提了。
B-MCRA算法(Minima-Controlled Recursive-Averaging Algorithms)
1-MCRA基本框架
先说说MCRA的基本框架
噪声谱估计
2-算法实现
写到这里,想到作者去世已经近五年,心里非常非常难过。写一本好书要花费多少的心血啊,而把研究做到如此细致、深入对后来人的帮助又是多么巨大。古人将修路造桥定义为大善之事,这些科研人员在科学道路上给后来人铺平了道路,他们又何尝不是修路人呢?今天读着他们的著作,感受着他们的思想,却连当面说些感谢话的机会也不再有!
步骤一:
αs为常数平滑因子,S为带噪语音的频谱。
其中Sf为:
w(.)为窗函数,
步骤二:
对S进行最小值跟踪(与连续谱最小值跟踪思路一致):
不过这里得到的是Smin
步骤三:计算p
其中Sr为
通常对p有一个后处理的平滑操作:
ap是常数。
步骤四:计算时频相关平滑因子
其中
步骤五:更新噪声谱
这一步是怎么推导来的呢?
由
和
联立得出
这就是噪声估计的表达式了。
3-算法修正(MCRA2)
给出完成的算法实现
其实与MCRA就是一点不同:
按不同频带取不同的数值。
其他步骤完全相同。如果说这个方法有效,那也只是作者对音频特性做了分析,有了先验知识作为支撑,单从理论上来讲这一点改进算不上突破。
3-改进的MCRA(IMCRA)
首先交代一下IMCRA的算法实现:
步骤一:仍然是S和Smin的计算;
步骤二:计算I(语音活动检测):
其中
,Bmin是最小噪声估计偏差,这里不再估计而是采用常数Bmin=1.66.
步骤三:回顾MCRA的更新:
与它不同的是,ICMRA更新:
也是采用递归平均
步骤四:计算语音不存在概率:
条件概率不再用
进行推导,而是改用
进行估计。将
代入,得出概率估计
其中为语音不存在的先验概率,,这里的参数与之前的含义一致:
参数改进:上面的可以作为先验给定,也可以利用实验数据进行估计,下面交代一下q估计的思路:
公式里的边界阈值都是设定的常数。其中
步骤五(还是承接步骤四):从步骤四可以看出,只要估计出,就可以完成p的估计。
在语音增强一文也出了该参数的两个实现思路:1)Maximum-Likelihood Method;2)Decision-Directed Approach.
步骤六:噪声估计。
计算出p以后,分别借助
和
完成噪声估计,并进一步对噪声谱进行修正
至此完成了IMCRA的落地。
三、最小值跟踪算法
该类算法仍然可以细分下去,这里主要介绍两种算法:1)最小值统计——minimum statistics Noise estimation;2)连续谱最小值跟踪——continuous spectral minimum tracking。
A-最小值统计算法
按照作者的说法,该算法通常会:1)低估噪声的实际水平;2)该算法不能无延迟地对噪声功率的变化进行跟踪。
先说算法的整个思路:
下面分别细说一下步骤。
步骤二:主要利用
说一下它的由来,主要利用最小均方误差准则
其中(该公式有误,少了-1)
得到
其中并不能直接得到,可以参考之前的方法进行估计,但这不是噪声估计的本意,这里的最终目的就是估计噪声谱,因此此处考虑用来近似表达。但当α接近于1时,更新太慢,因此有学者做了改进:
在此基础上再级联一个限定最大值的α(αmax)估计,并认为两者是独立关系,得出最终的α:
步骤三:步骤三就是水到渠成的事了
步骤四:主要计算偏差因子
其中D是帧数,只要计算出,就可以估计B:
至此完成了步骤四。
步骤五:就是D帧内最小值搜索
步骤六:噪声谱估计
B-连续谱最小值跟踪
如果有D帧的数据,最小值统计算法需要2D帧的延迟,即使划分V帧子窗,也要D+V的延迟(最大情况)。有没有办法改善这个问题呢?这是连续谱最小值跟踪的出发点。
由于只有涉及到延迟问题,其他操作不变。
其中参数设定:
四、直方图噪声估计算法
这里只给出最基本的思路介绍,首先说一下算法实现:
步骤一:计算没什么可说的;
步骤二:借助一阶递归计算S:
a为常数.
步骤三:计算前D帧功率谱密度的直方图,histogram的bins认为设定(如40bins);
步骤四:找出直方图的最大值对应的功率,作为噪声谱估计
步骤五:借助步骤四中估计的噪声谱,利用一阶回归进行噪声谱更新
其中是常数。
在工程实现上,还有几个需要注意的细节,也在这里说一下。
1)步骤二中的平滑因子a影响最终的估计结果,下图是a=0的情形:
2)该方法会出现噪声谱过估计的情况
为了避免这种过估计,通常有两个修正策略:1)增大统计的帧数D;2)统计直方图时丢弃能量较大的帧,这一个操作可以通过设定Threshold进行筛选:
就写这么些了,感兴趣的可以跟我交流,也可以翻翻原作。
Chapter 9:Noise-Estimation Algorithms的更多相关文章
- 论文翻译:2021_Performance optimizations on deep noise suppression models
论文地址:深度噪声抑制模型的性能优化 引用格式:Chee J, Braun S, Gopal V, et al. Performance optimizations on deep noise sup ...
- CV code references
转:http://www.sigvc.org/bbs/thread-72-1-1.html 一.特征提取Feature Extraction: SIFT [1] [Demo program][SI ...
- CV codes代码分类整理合集 《转》
from:http://www.sigvc.org/bbs/thread-72-1-1.html 一.特征提取Feature Extraction: SIFT [1] [Demo program] ...
- {ICIP2014}{收录论文列表}
This article come from HEREARS-L1: Learning Tuesday 10:30–12:30; Oral Session; Room: Leonard de Vinc ...
- 计算机视觉code与软件
Research Code A rational methodology for lossy compression - REWIC is a software-based implementatio ...
- Computer Vision Tutorials from Conferences (2) -- ECCV
ECCV 2012 (http://eccv2012.unifi.it/program/tutorials/) Vision Applications on Mobile using OpenCVGa ...
- superresolution_v_2.0 Application超分辨率程序文档
SUPERRESOLUTION GRAPHICAL USER INTERFACE DOCUMENTATION Contents 1.- How to use this application. 2.- ...
- Image Processing and Analysis_8_Edge Detection:Edge and line oriented contour detection State of the art ——2011
此主要讨论图像处理与分析.虽然计算机视觉部分的有些内容比如特 征提取等也可以归结到图像分析中来,但鉴于它们与计算机视觉的紧密联系,以 及它们的出处,没有把它们纳入到图像处理与分析中来.同样,这里面也有 ...
- paper 119:[转]图像处理中不适定问题-图像建模与反问题处理
图像处理中不适定问题 作者:肖亮博士 发布时间:09-10-25 图像处理中不适定问题(ill posed problem)或称为反问题(inverse Problem)的研究从20世纪末成为国际上的 ...
随机推荐
- Android高效内存:让图片占用尽可能少的内存
Android高效内存:让图片占用尽可能少的内存 一.让你的图片最小化 1.1 大图小图内存使用情况对比 大图:440 * 336 小图:220 * 168 小图的高宽都是大图的1/2--> ...
- C语言的一些基础
一.C语言基础: 1.1.main函数是入口函数,用于进行link. 1.2..sln是解决方案的管理文件. 1.3.int:32位.short:16位.long:32位.long long:64位. ...
- bzoj4800 [Ceoi2015]Ice Hockey World Championship
Description 有n个物品,m块钱,给定每个物品的价格,求买物品的方案数. Input 第一行两个数n,m代表物品数量及钱数 第二行n个数,代表每个物品的价格 n<=40,m<=1 ...
- Ubuntu16.04安装opencv for python/c++
Ubuntu16.04安装opencv for python/c++ 网上关于opencv的安装已经有了不少资料,但是没有一篇资料能让我一次性安装成功,因此花费了大量时间去解决各种意外,希望这篇能给一 ...
- PHP怎么打开或者关闭文件?
什么是文件处理? 文件处理包括读取,关闭,重写等.掌握文件的处理需要读者理清思路,掌握好文件处理的关键步骤和常用函数,那么就可以运用自如了!感兴趣的请移步php文件处理专题. 比如,访问一个文件需要 ...
- 基于python的知乎开源爬虫 zhihu_oauth使用介绍
今天在无意之中发现了一个知乎的开源爬虫,是基于Python的,名字叫zhihu_oauth,看了一下在github上面star数还挺多的,貌似文档也挺详细的,于是就稍微研究了一下.发现果然很好用啊.就 ...
- 浅谈移动端rem的用法
一 什么是rem? “font size of the root element 这是w3c的定义 也就是说是相对于根节点(html节点)的字体大小的单位. 目前主流的浏览器基本都支持rem这个单位, ...
- JDK版本不匹配...
Java compiler level does not match the version of the installed Java project facet. 今天从把交通厅的项目,导进来就报 ...
- MongoDB Java Driver 3.4操作
导入jar包 <dependency> <groupId>org.mongodb</groupId> <artifactId>mongo-java-dr ...
- 1005 Number Sequence
Problem Description A number sequence is defined as follows:f(1) = 1, f(2) = 1, f(n) = (A * f(n - 1) ...