主动降噪技术matlab,主动降噪技术(ANC)的前生今世--原理仿真
一 原理:
主动降噪就是通过反相检测麦克风的声音或噪声来减弱周围环境的噪声让扬声器出来的声音听起来更清晰。主动降噪技术的目标就是通过一个自适应滤波器把不想要的噪声反相从而把噪声约束到固定的范围内。该系统必须要把扬声器到麦克风的二阶误差考虑进去。主动降噪用到的主要原理是:FxLMS(过滤的最小均方差滤波器)。这个算法的会让输入到滤波器的错误信号急速锐减,从而达到降噪的目的。这个错误信号在期望值和FxLMS滤波器输出值之间是有差异的。
我们可以看一下这个算法的模型:
输入参数:
参考输入: 就是要消除的噪声
错误输入:降噪引入的噪声加扬声器的输出声音
适配开关
参考滤波输入:二级路径的参考滤波信号,所谓的二级路径就是FxLMS滤波器输出值反馈到FxLMS滤波器的错误输入。
模型的输出:
降噪后的结果
可调参数:
自适应滤波器长度
自适应步长
泄漏因子
下面的这个图应该能够很好的诠释了这个流程:
输出y(n) 和输入x(n)之间有个适量因子W,W的参数是通过下面公式计算出来的:
W = (1- alpha * Leakage)* W + alpha * error(n) * XFilterd/ energy
这里的因子的含义:
* XFilterd:滤波后的参数输入矢量
* alpha:步长参数
* Leakage:泄漏因子
* error(n): 本帧的错误采样
* energy:滤波后的参考矢量的平方值
下图是经过LxLMS滤波器后的效果图:第一个是输入噪声,第三个为反相信号,中间的为滤波器的输出信号。
二 仿真:
为了清晰的展现主动降噪的原理,我找到了一份matlab代码,这份代码能够很清晰的说明ANC的效果和作用。及实现原理:代码比较简单,我就不一一赘述了。有兴趣的朋友可以运行一下试试。尝试改一下参数,就知道效果了。
这里使用滤波器长度为44ms的,步长为0.0001的信号来仿真这些信号统计。
下面是源码:
1 %FIR Filter to be used to model primary propagation path2 primaryPathGenerator = dsp.FIRFilter('Numerator',primaryPathCoeffs.');
3
4 % Filtered-X LMS adaptive filter to control the noise5 L = 350;6 muW = 0.0001;7 noiseController = dsp.FilteredXLMSFilter('Length',L,'StepSize',muW, ...8 'SecondaryPathCoefficients',SecondaryPathCoeffsEst);9
10 %Sine wave generator to synthetically create the noise11 A = [.01 .01 .02 .2 .3 .4 .3 .2 .1 .07 .02 .01];12 La =length(A);13 F0 = 60;14 k = 1:La;15 F = F0*k;16 phase = rand(1,La); %Random initial phase17 sine = audioOscillator('NumTones', La, 'Amplitude',A,'Frequency',F, ...18 'PhaseOffset',phase,'SamplesPerFrame',512,'SampleRate',Fs);19
20 % Audio player to play noise before andafter cancellation21 player = audioDeviceWriter('SampleRate',Fs);22
23 % Spectrum analyzer to show original andattenuated noise24 scope = dsp.SpectrumAnalyzer('SampleRate',Fs,'OverlapPercent',80, ...25 'SpectralAverages',20,'PlotAsTwoSidedSpectrum',false, ...26 'ShowLegend',true, ...27 'ChannelNames', {'Original noisy signal', 'Attenuated noise'});28 for m = 1:400
29 %Generate synthetic noise by adding sine waves with random phase30 x =sine();31 d = primaryPathGenerator(x) + ... %Propagate noise through primary path32 0.1*randn(size(x)); %Add measurement noise33 if m <= 200
34 % No noise control for first 200iterations35 e =d;36 else
37 % Enable active noise control after 200iterations38 xhat = x + 0.1*randn(size(x));39 [y,e] =noiseController(xhat,d);40 end41 player(e); %Play noise signal42 scope([d,e]); % Show spectrum of original (Channel 1)43 % and attenuated noise (Channel 2)44 end45 release(player); %Release audio device46 release(scope); % Release spectrum analyzer
为了区分这种差别,在前200个迭代因子里面不加主动降噪。从参考麦克风里面获取噪声,这些噪声就是典型的机器轰鸣声。
一旦算法开启,仿真里面使用的是5s的算法稳定时间。通过在频域里比较残余误差信号和原始信号的差别,可以看出大多数周期性的信号都已经大面积的衰减了。从下图中可以看出,在不同的频率上,降噪性能的表现是不同的。这就是现实世界中所说的主动降噪技术。
三 参考信息
原文出处:https://www.cnblogs.com/audios/p/11600448.html
主动降噪技术matlab,主动降噪技术(ANC)的前生今世--原理仿真相关推荐
- 解构APT:高级持续性威胁的前生今世
本文讲的是 解构APT:高级持续性威胁的前生今世,就像来自IT.信息.网络安全行业很多缩略词一样,APT(高级持续性威胁)这个术语正变得广为人知.就像新生概念一样,它和它的兄弟词语AET(高级逃逸技术 ...
- 高并发网站架构与正态分布的前生今世
高并发网站架构 什么是服务器? 不就是提供"付费"."免费"服务的高档电脑嘛! 你提到服务? 存储一个图片,读取一篇文字,观看一个动作片,计算一个账户存款,- ...
- java的前生今世_HBaseGC的前生今世-身世篇
网易视频云是网易倾力打造的一款基于云计算的分布式多媒体处理集群和专业音视频技术,提供稳定流畅.低时延.高并发的视频直播.录制.存储.转码及点播等音视频的PAAS服务,在线教育.远程医疗.娱乐秀 网易视 ...
- nio java是什么_Java NIO 的前生今世 之一 简介
简介 Java NIO 是由 Java 1.4 引进的异步 IO. Java NIO 由以下几个核心部分组成: Channel Buffer Selector NIO 和 IO 的对比 IO 和 NI ...
- DevOps Master课程总结:知否知否,应是DevOps肥ITIL瘦(送ITIL4前生今世)
作者:北京老李:DevOps布道师.IT管理咨询师.EXIN授权EXIN DevOps Master(大师级)讲师(首批全国十名).首批ITIL Expert讲师.EXIN授权EXIN Agile / ...
- 立委科普:问答系统的前生今世
立委科普:问答系统的前生今世 以下全文转载自李维老师的博文:立委科普:问答系统的前生今世. 上周信笔涂鸦写了个不伦不类的科普([立委科普:从产业角度说说NLP这个行当]),写完自我感觉尚可,于是毛遂自 ...
- 国产手风琴的前生今世
国产手风琴的前生今世 国产手风琴品牌的前世今生 "鹦鹉"商标纠纷案 上海百乐和天津鹦鹉的恩怨情仇 国产手风琴的境遇 前些日子朋友建议我学习手风琴,网上查了一下资料,了解了一些国产手 ...
- Win Server 08 R2前生今世
在刚刚结束的微软TechEd 2009大会上,微软面向企业级市场推出了七种武器:Windows 7.Windows Server 2008 R2.Exchange Server 2010.Forefr ...
- 网易视频云:HBase GC的前生今世 – 演进篇
现在,网易视频云与大家分享一下HBase GC的前生今世–演进篇. 最原始的HBase CMS GC相当严重,经常会因为碎片过多导致Promotion Failure,严重影响业务的读写请求.幸运的是 ...
- 价格不断飙升的 GPU,居然「出生」这么晚!一文带你了解 GPU 的前生今世
\ 转自 | 新智元 来源 | vice 编辑 | keyu GPU真正的出现,其实并没有我们想象的那么早--大家了解GPU的真实历史吗?谁是GPU的开创者?谁又是历史的篡改者?GPU的当今的短缺到底 ...
最新文章
- Silverlight 3.0 不再包含 asp:silverlight 控件
- P1967 货车运输
- 网易OpenStack部署运维实战
- 2017北理c语言答案,c语言答案 北理工
- 软件测试文档在哪里,软件测试报告技术文档
- cordova 更改app版本_Cordova打包Android应用流程(MAC)
- netflix_学习Netflix管理员–第1部分
- php 数组值sum,php sum数组值(如果特定列的值重复)
- 销户c语言,c – 如何在注销时优雅地退出QApplication?
- 数据调度组件:基于Azkaban协调时序任务执行
- 语言程序推箱子课设报告_学完C语言,可以去哪些应用领域工作?
- 《Java就业培训教程》_张孝祥_书内源码_02
- c语言编译defined,#if defined(__GNUC__)的意思是不是如果使用的是GCC编译器?
- CUBA - 一个卓越的 Java 快速开发框架
- Animation.css动画效果属性
- 2021 互联网公司时薪排行榜出炉!微软、美团很强!
- 综合布线系统工程中计算机插座的标识符号是,TD是综合布线系统工程中计算机插座的标识符号。...
- 最全的阿里面试经验(一)
- 工厂设备管理远程监控方案
- HC05蓝牙模块与手机APP连接