随机信号处理
随机信号处理
题目:基于维纳滤波的语音信号滤噪处理
姓名:尉志飞
专业:电子与通信工程
学号
卡尔曼滤波算法是以最小均方误差为准则的最佳线性估计的方法,它是一套可以由计算机实现的实时递推算法,它一般处理的对像是随机信号,利用系统噪声和观测噪声的统计特性,以系统的观测量作为滤波器的输入,以所要估计的值作为滤波器的输出,这样滤波器的输入和输出之间就可以由时间更新和观测更新算法联系在一起,这样就可以根据系统方程和观测方程估计出有需要处理的信号,实现系统状态的最优估计。卡尔曼滤波算法的优点是采用状态空间方法描述系统,采用递推形式,数据存储量小,不仅可以处理平稳随机过程,也可以处理多维和非平稳随机过程。
在统计估计问题中,有用信号和噪声干扰都是随机过程,但是二者在频谱上有相当的重叠部分,因此这时若还按照处理确定性的周期信号时采用的传统滤波技术从随机信号中滤除随机干扰这就会很难得到理想的效果。但是我们在这种情况下如果采用维纳滤波来提取的话(也就是导出滤波器的最佳冲激响应或传递函数),就会得到非常好的效果来的。
在目前条件下,解决滤波问题无非有三种方法即维纳滤波方法,卡尔曼滤波方法,现代时间序列分析方法。维纳滤波方法有其自身的局限性已经很难满足现代科技发展的需要,因此卡尔曼滤波一提出便得到了众多学者的关注与研究,但是卡尔曼滤波也有许多的不足。第一:只适应于线性系统。第二:存在相当的误差问题。第三:卡尔曼理想情况下是无偏的但是在实际应用中却是有偏的。
卡尔曼滤波虽然有许多的不足,但是它却是一种解决滤波的方
法,维纳滤波是用频域及传递函数的方法,而卡尔曼滤波却用时域及状态变量的方法,它在理论上是维纳滤波的推广,特别是在处理多变量系统,时变线性系统及非线性系统的最佳滤波等领域为我们提供了一种有效的方法。
卡尔曼滤波已经在空间技术及工业控制方面得到了相当广泛的应用,相信随着科技发展,应用会越来越广泛。
作业:利用维纳滤波实现噪声中的语音信号恢复,产生chirp信号,噪声为高斯白噪声,噪声叠加在chirp信号上,构成观测信号x(n),使用编程方法实现使用维纳滤波滤除高斯噪声。
1、 matlab或者其他编程语言编写维纳滤波程序
2、 画出原始信号,观测信号及估计信号波形
3、 播放原始信号,估计信号通过声音辨别估计效果
4、 改变噪声强度,重复第三项
解答: 1、程序
load chirp;
wavplay(y,Fs);
sn=y;
SNR=input('输入叠加噪声的信噪比SNR ');%信噪比SNR以dB为单位
vn=wgn(length(sn),1,SNR);
xn=awgn(y,SNR,'measured');
wavplay(xn,Fs);
Rss=xcorr(sn,sn);
Psw=fft(Rss);
Rvv=xcorr(vn,vn);
Pvw=fft(Rvv);
N=length(sn);
Hw=zeros(N,1);
for i=1:N
Hw(i)=Psw(i)/(Psw(i)+Pvw(i));
end
h1=ifft(Hw);
M=input('输入滤波器阶数 ');
h=real(h1(1:M));
yn=conv(xn,h); %用所涉及的滤波器对信号滤波
figure(1); %分别画出原信号,加入噪声的混合信号,滤波后的信号
plot(sn);
legend('原始信号s(n)');
figure(2);
plot(xn);
legend('加噪信号x(n)');
figure(3);
plot(yn);
legend('滤波信号y(n)');
wavplay(25*yn,Fs); %此处经过试验,可以增强信号强度如25*out_signal。
2、载入chirp声音信号,可观测到原始信号波形:
加载高斯噪声后信号波形(信噪比10):
3、通过播放原始信号、加高斯噪声后的信号及滤波后信号效果,评估可知:
1)维纳滤波在较高信噪比10时可以较好的滤除高斯噪声。
2)信噪比较低时去除噪声效果并不好。
4、 改变信噪比
SNR=5,时:
滤波后信号波形:
SNR=10时,滤波后信号波形:
通过综合波形、播放效果可得如下结论:
1) 在较高信噪比条件下,使用维纳滤波可以较好的滤除噪声恢复原始信号。
2) 在低信噪比条件下,维纳滤波效果并不理想。