基于某维纳滤波的含噪声语音信号的恢复

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

基于维纳滤波的含噪声语音信号的恢复摘要

本文基于随机信号分析与处理的相关理论,采用维纳滤波技术恢复噪声中的鸟鸣声信号,通过仿真达到预期效果,对工程实践有很好的理论支持。

关键词:维纳滤波器频域法

实验目的

1.熟悉维纳滤波的基本概念

2.熟悉线性最小均方估计的基本原理

3.掌握运用维纳滤波理论恢复信号的基本方法

实验原理

信号从发送者传送到接受者往往受到集中形式的变形而削弱,维纳滤波是一种从接收的原始信号中恢复信号的方法。

由于但时域方法要求协方差矩阵的逆,当数据比较长的时候,求逆的运算量非常大,我们在这里采用频域法来求解。

维纳滤波器作为波形估计的一种方法,可以采用多种估计准则。

假定离散时间的观测过程为

00()()(),,1,...,f z n s n v n n n n n =+=+

其中()v n 为噪声,()s n 为原信号,0n 为起始观测时刻,f n 为观测结束时刻。 在实际常采用易于实现的线性最小均方准则。线性最小均方估计是观测的线性函数,它可以作为观测序列通过离散时间线性系统,即

0(/)(,)()f

n f k n s n n h n k z k ∧

==∑

滤波器的系数的选择可以由线性最小均方估计的正交原理来求取,即

000{[()(,)()]()}0(,1,...,)

n k n E s n h n k z k z i i n n n =-==+∑

000(,)(,)(,),(,1,...,)n

sz z k n R n i h n k R k i i n n n ===+∑

上式也称为Wiener-Hopf 方程。

对于信号和观测过程是平稳随机序列,并且是联合平稳随机序列,系统为因果的线性时不变离散时间线性系统,0

n =-∞,则有

()()()()(),0sz z z l R n h l R n l h n R n n +∞==-=*≥∑

求解维纳滤波器即求系数()h n 的过程。

将上式两边做z 变换,得()()()sz z G z H z G z =

所以, ()()()

sz z G z H z G z = ()H z 称为维纳滤波器。当信号()s n 与观测噪声统计独立时,维纳滤波器为

()()()()

s s v G z H z G z G z =+ 其中,()v G z 为噪声的功率谱,维纳滤波器用离散傅里叶变换可表示为

()()()()

s s v G H G G ωωωω=+

实验步骤

维纳滤波既可以采用频域方法实现,也可以采用时域方法实现,但时域方法要求协方差矩阵的逆,当数据比较长的时候,求逆的运算量非常大。

本实验给定信号为chirp 信号(鸟叫声),数据文件为chirp.mat (可以从MATLAB 中找到),可以用load (‘chirp ’,“Fs ”,‘y ’)调入数据文件。用始于发实现维纳滤波的步骤如下:

1) 产生信号()s n 和观测()z n ,信号为chirp 信号(鸟叫声),观测为信号叠

加上高斯白噪声;

2) 估计ˆz R 和ˆsz

R ; 3) 计算1ˆˆopt z sz

h R R -=; 4) 计算估计的信号

10

ˆ()()()N T m s

n h m z n m hz -==-=∑

频域法实现维纳滤波的步骤如下:

1) 产生信号()s n 和观测()z n ,信号为chirp 信号(鸟叫声),观测为信号叠加上高斯白噪声;

2) 估计信号()s n 和()z n 的功率谱,计算维纳滤波的传递函数;

3) 计算输入()z t 和输出信号()y t 的频谱,并对输出信号求烦变化得到时域的输出信号。

实验中用到的MATLAB 函数有:

1) 装入数据文件:Load ;

2) 傅立叶变换与反变换:fftn ,ifftn ;

3) 谱估计:periodogra (周期图谱估计),pburg (最大熵谱估计),welch (welch 谱估计);

4)互相关计算:xcorr。

结果仿真

运用MATLAB进行仿真:

仿真程序如下:

clear;

load('chirp','Fs','y');

p=audioplayer(y,Fs);

play(p);

subplot(2,1,1);

plot(y);

title('原始信号')

Py=fftn(y);

subplot(2,1,2);

plot(abs(Py));

title('原始信号频谱') %原始信号时域图、频域图及信号的播放pause();

N=length(y);

sigma=0.1;%控制噪声强度

z=zeros(N,1);

v=randn(N,1)*sigma; %产生噪声

z=y+v;

q=audioplayer(z,Fs);

play(q);

figure();

subplot(2,1,1);

plot(z);

title('观测信号')

Pz=fftn(z);

subplot(2,1,2);

plot(abs(Pz));

title('观测信号的频谱') %观测信号时域图、频域图及信号的播放pause();

相关文档
最新文档