lms语音降噪matlab实现_ANC主动降噪理论及Matlab代码实现

lms语⾳降噪matlab实现_ANC主动降噪理论及Matlab代码实现根据系统是否有参考信号传感器可将ANC系统⼤致的分为前馈型和反馈型。
前馈控制是产⽣次级噪声之前就通过传感器测量初级噪声的频率以获取参考信号。
反馈控制不需要测得参考信号就产⽣次级噪声进⾏相消⼲涉
反馈型ANC系统
反馈型 ANC 系统中没有传感器来测得参考输⼊信号,仅通过误差传感器获取经相消⼲涉后的残余噪声并将其送⼊到反馈控制器,进⽽达到调节次级声源$y_n$的⽬的,使其发出与初级噪声幅值相等相位相反的次级噪声
反馈型ANC系统避免了对初级噪声的提取,也就不存在FM问题,反馈系统因具有⼀定的主动阻尼⽽可以有效抑制系统的暂态信号。但是反馈型系统鲁棒性较差,且对宽带噪声的处理能⼒较差,⼀般适⽤于⽆法安装参考信号传感器的场景。
pet镭射膜前馈型ANC系统
前馈型ANC系统相较于反馈型增加了⼀个获取参考信号的传感器。误差传感器测得的残余噪声信号连同
传感器获取的参考信号均作为控制器的输⼊。参考信号可由声学传感器获取,也可由⾮声学传感器(如转速计、加速度计等)获得。但声学传感器的引⼊容易造成声反馈现象,从⽽削弱系统的鲁棒性。故⽽窄带 ANC 系统中的参考信号⼀般由⾮声学传感器采集。通过⾮声学传感器可采集到噪声源信号的同步信号(如转速、加速度等),按照⼀定的线性关系可将其转换为频率值,根据该频率值可使信号发⽣器产⽣与窄带噪声频率⼀致的参考信号。前馈型ANC 系统的物理模型如图 2.2 所⽰。
其中,控制器以参考信号和残余噪声为输⼊,产⽣并调节次级声源信号$y_n$ ,驱动次级扬声器发出次级噪声,与初级声源产⽣的噪声进⾏相消⼲涉,最终使得误差传感器处的声压值最⼩。前馈型 ANC 系统具有很强的鲁棒性,且不仅适⽤于窄带噪声信号,也可⽤于处理宽带噪声信号。
传统ANC算法
噪声信号随时间的推移⽽不断变化,其特性⽆法进⾏预先估计,这⼀性质导致噪声很难被实时跟踪。ANC 技术要求对时变的噪声输⼊信号进⾏跟踪,从⽽调节控制器使产⽣的次级噪声信号能最⼤的削弱噪声输⼊信号。⾃适应数字信号处理可以很好的跟踪时变信号,通过某种优化误差准则不断调整产⽣所需信号。⽽这种优化误差准则实际上就属于 ANC 算法。
FXLMS算法
ANC系统传统算法结构
其中$W_n(z)$为⾃适应滤波器,$S(z)$次级通道;$p(n)$为初级噪声;$e(n)$为系统残余噪声;x(n)为参考噪声。最⼩均⽅误差(Least Mean Square, LMS)算法以最陡下降法为奠基⽯,具有较为出众的迭代更新速度,应⽤⾮常⼴泛。但在ANC系统中,次级通道$S(z)$的存在会导致残余信号和参考信号间存在延时,进⽽削弱ANC系统的稳定性。
Morgan 在 LMS 的基础上提出了 FXLMS,在参考信号$x(n)$送⼊ LMS 算法模块前增加⼀个对次级通道传递函数的估计$S(z)$,从⽽解决次级通道所引起的相关延时问题,如图 2.4 所⽰。FXLMS 算法应⽤在 ANC 系统中简单且有效,在 ANC 算法中可谓历久⽽弥新,得到了⼴泛推⼴。
FXLMS算法结构
次级通道在线辨识
在ANC系统中,通常将数模转换(D\A)、信号⽅法电路、模数转换(A\D)、滤波电路、扬声器、传声器等电⼦设备以及扬声器到传声器之间的实际管道等物理通道的组合称之为次级通道。就实际应⽤⽽⾔,次级通道的传递函数显然⽆法明确得知,⽽ANC 系统中的⾃适应滤波器可对次级通道进⾏估计。当传递函数为时变函数时,采⽤在线辨识算法,即在ANC 系统运⾏的同时对次级通道进⾏估计。下图给出了含在线辨识的 FXLMS 算法结构,⾃适应滤波器的输出$y_n$引⼊线辨识系统,作为LMS 算法的输⼊。同时将系统中的残余噪声信号与
$y_n$经次级通道的估计之后得到的$\hat{y}_p(n)$相⽐较,将所得到的误差也⽤作 LMS 算法的激励,调节参数,不断逼近次级通道传递函数,完成对次级通道的实时在线辨识。
含在线辨识的 FXLMS 算法结构
次级通道的在线辨识应当满⾜两个基本要求:实现对次级通道较为精准的估计;同时在线辨识不应该对主降噪系统产⽣影响。⽽图 2.5 所⽰的次级通道的在线辨识对$y(n)$进⾏直接处理,使得这两个基本要求相互⽭盾。故⽽实际的 ANC 系统应在在线辨识不被⼲扰与辨识不对主降噪系统产⽣⼲扰之间取得⼀个相对平衡。为在这两者间获取更为适宜的平衡点,Eriksson 提出增加辅助随机噪声作为在线辨识系统的激励,⽽在主降噪系统中$y(n)$减去辅助噪声之后再驱动扬声器产⽣声⾳信号进⼊次级通道。但辅助噪声⼜对残余噪声造成了影响,Lan 在研究宽带 ANC系统时提出了通过$|e(n)|$对辅助噪声进⾏进⼀步的约束。刘在Lan 的基础上针对窄带前馈 ANC系统,改为利⽤$|e(n-
1)|$对送⼊系统的辅助噪声进⾏约束,如图2.6 所⽰。本⽂所展开的在线辨识采⽤的正是该⽅法。
次级通道的在线辨识可对时变次级通道传递函数进⾏估计,但同时增加了整个 ANC 系统的负担,此外,辅助噪声的存在仍在⼀定程度上削弱了 ANC 系统的鲁棒性。
带⾃激的在线辨识FXLMS算法结构
次级通道离线辨识
当次级通道环境不随着时间⽽改变时,可以使⽤离线辨识算法。离线辨识是运⾏ ANC 系统进⾏降噪之前针对次级通道预先进⾏训练估计,固定并保存作为训练结果的次级通道模型,再将该模型引⼊到 ANC 系统并启动系统进⾏降噪。次级通道的离线辨识原理图如图 2.7 所⽰。
次级通道离线辨识原理图
369ii
其中,⽩噪声信号$v(n)$作为系统在第n 时刻的激励,此刻次级通道的输出为$d(n)$,即离线辨识系统的期望信号。$y_v(n)$则是⽩噪声激励信号经过次级通道的估计函数$\hat{S}_n(z)$的输出,$y_v(n)$与期望信号$d(n)$之差即为辨识误差$e_o(n)$,送⼊到 LMS 算法中。经过不断迭代更新后当辨识误差$e_o(n)$趋近于零时,$y_v(n)$与期望信号$d(n)$趋近于相同,则可知次级通道的估计函数
$\hat{S}_n(z)$趋近于次级通道$S(z)$,实现了对次级通道的离线辨识。
离线辨识是脱离 ANC 降噪系统,独⽴进⾏系统辨识,不会给 ANC 降噪系统增加运⾏负担,同样不会损害 ANC 降噪系统的鲁棒性。若ANC 系统的次级通道传递函数时不变,则离线辨识具有⼀定的优势,在本⽂后期具体实验时会给出更为直观的说明。
FM 问题及⾮平稳
在前馈型 ANC 系统中,对参考信号的提取采⽤⾮声学传感器时,若传感器长时间⼯作将会累积损耗最终致使精度减削,采集到的参考信号频率将与实际初级噪声的频率存在误差。⼜或者,当信号发⽣器发出的信号不够精确,与期望存在误差。这些情况最终导致参考信号频率与实际噪声频率间存在误差,即所谓的 FM。
FM 问题对窄带前馈 ANC 具有致命性的影响⼒。哪怕系统中仅存在 1%的 FM 量,也将导致系统⽆法进⾏有效消噪。本⽂将在第三章和第六章分别从实时仿真以及实际实验两⽅⾯分析说明 FM 问题。
另外,噪声源设备的速度变化将直接表现为初级噪声信号频率的变化,⽽频率不稳定的初级噪声对系统的鲁棒性及跟踪能⼒有着毁坏性的损伤。⾮平稳⼀直是存在于实际的 ANC 应⽤中不可避免的⼜⼀问题,当初级噪声表现出⾮平稳时,采集参考信号的传感器会有响应延时并最终引起⾮平稳的 FM。在本⽂的第三章将对⾮平稳的 FM 进⾏仿真分析。
本章⼩结
本章对 ANC 技术的理论基础进⾏了详细介绍。⾸先,针对 ANC 系统分别从反馈型和前馈型两种类型对 ANC 系统类型进⾏概要描述。其次,详细描述了传统 ANC 算法,对 FXLMS 算法的基础 LMS 略有介绍,重点以 FXLMS 算法展开论述,继⽽详解了次级通道的在线辨识与离线辨识,并对在线辨识与离线辨识的应⽤场景进⾏了简要说明。最后,针对存在于前馈型 ANC系统中的 FM 及⾮平稳问题进
⾏简要说明。
代码实现
x(n):参考信号
u(n):控制信号
包装袋印刷
d(n):期望信号
y(n):输出信号
r(n):x滤波后的信号
e(n):误差信号
W(z):⾃适应滤波器
G(z):真实的次级通道
$\hat{G}(z)$:估计的次级通道
rc延时电路
% +-----------+ +
% x(k) ---+--->| P(z) |--yp(k)----------------> sum --+--->e(k)% | +-----------+ ^- |
% | | |
% | \ ys(k) |
% | +-----------+ +-----------+ | |
% +--->| C(z) |--yw(k)-->| S(z) |---+ |
% | +-----------+ +-----------+ |
% | \ |
% | \----------------\ |
% | \ |
% | +-----------+ +-----------+ |
% +--->| Sh(z) |--xs(k)-->| LMS |
% +-----------+ +-----------+
%LMS最⼩均⽅误差% S(z)次级通道传递函数 %ys(k)次级声源% P(z)主通道传递函数 %yp(k)初级声源% C(z)控制器 %yw(k)控制器% Sh(z)传感器函数 %xs(k)传感器参考信号
clear
T=1000; %仿真持续时间%我们不知道p(z)和S(z),所以我们必须建⽴dummy虚拟路径
Pw=[0.01 0.25 0.5 1 0.5 0.25 0.01];
薄膜电晕处理机Sw=Pw*0.25;
x_iden=randn(1,T); % 产⽣shape=(1,1000)的⽩噪声信号估计S(z)%送⾄actuator执⾏,在传感器位置测量,
y_iden=filter(Sw, 1, x_iden);%然后,开始识别过程
Shx=zeros(1,16); %传感器Sh(z)的状态
Shw=zeros(1,16); %传感器Sh(z)的权重
e_iden=zeros(1, T); %识别错误的数据缓冲区%LMS 算法% [Shy,Shw]=lms(Shx,y_iden,x_iden,Shw,e_iden,T);
mu=0.1; %学习率for k=1:T %离散时间 k
Shx=[x_iden(k) Shx(1:15)]; %更新传感器的状态
Shy=sum(Shx.*Shw); %计算传感器Sh(z)的输出
e_iden(k)=y_iden(k)-Shy; %计算误差
Shw=Shw+mu*e_iden(k)*Shx; %调整权重
end%检查结果
subplot(2,1,1)
plot((1:T), e_iden)
ylabel('Amplitude');
xlabel('Discrete time k');
legend('Identification error');
subplot(2,1,2)
stem(Sw)
hold on
stem(Shw,'r*')
ylabel('Amplitude');
xlabel('Numbering of filter tap');
legend('S(z)系数', 'Sh(z)系数')%第second task⼆个任务是主动控制
X=randn(1,T);%测量传感器位置接收的噪声,
Yd=filter(Pw, 1, X);%启动系统
Cx=zeros(1,16); %C(z)的状态
Cw=zeros(1,16); %C(z)的权重
语音降噪芯片Sx=zeros(size(Sw)); %secondary次路径的虚拟状态
e_cont=zeros(1,T); %控制错误的数据缓冲区
Xhx=zeros(1,16); %过滤后x(k)的状态%FxLMS 算法% [Cy,Cw]=FxLMS(X,Cx,Cw,Sx,Sw,Shx,Shw,e_cont,Xhx,T,Yd); mu=0.1; %学习率for k=1:T %离散时间 k
Cx=[X(k) Cx(1:15)]; %更新控制器状态
Cy=sum(Cx.*Cw); %计算控制器输出
Sx=[Cy Sx(1:length(Sx)-1)]; %传播到secondary path
e_cont(k)=Yd(k)-sum(Sx.*Sw); %测量残差
Shx=[X(k) Shx(1:15)]; %更新Sh(z)的状态
Xhx=[sum(Shx.*Shw) Xhx(1:15)]; %计算过滤后的x(k)
Cw=Cw+mu*e_cont(k)*Xhx; %调整controller的权重
end%结果
figure
subplot(2,1,1)
plot((1:T), e_cont)
ylabel('Amplitude');
xlabel('Discrete time k');
legend('Noise residue')
subplot(2,1,2)
plot((1:T), Yd)
hold on
plot((1:T), Yd-e_cont, 'r:')
ylabel('Amplitude');
xlabel('Discrete time k');
legend('噪声信号', '控制信号')
参考⽂献
窄带主动噪声控制系统实时仿真及硬件实现_⽑梦菲

本文发布于:2024-09-22 11:20:03,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/1/344406.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:信号   系统   噪声
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议