回声信号地产生与消除Word格式.docx
《回声信号地产生与消除Word格式.docx》由会员分享,可在线阅读,更多相关《回声信号地产生与消除Word格式.docx(16页珍藏版)》请在冰点文库上搜索。
![回声信号地产生与消除Word格式.docx](https://file1.bingdoc.com/fileroot1/2023-5/11/a1f2a0e0-691e-4b36-b215-44bc24ad9f60/a1f2a0e0-691e-4b36-b215-44bc24ad9f601.gif)
1.2.2巴特沃兹滤波器
欲消除回声,则需设计滤波器,绘出滤波器的频域响应,绘出滤波后信号的时域波形和频谱,并对滤波前后的信号进行对比,分析信号的变化,理想低通滤波器的一个非因果系统,如果允许低通滤波器的通带和阻带之间有一定的过渡带,且通带和阻带允许有一定的衰减,我们就可以用物理可实现的系统去逼近理想低通滤波器的频率特性,从而获得较好的滤波效果;
巴特沃兹滤波器就是工程中常用的频率响应逼近理想低通滤波器的物理可实现系统,还原出原有音频信号。
1.2.3距离估计要求
从信号y中估计反射物的距离,即回声延迟的时间,可理解为估算原有信号中的N值。
也就是,估测y(n)中的原始声音信号x(n)与其延时衰减分量kx(n-N)的相关联的程度。
2设计原理
语音采集:
通过搜索在pc机的中matble库函数中chimes.wav,绘制其时域波形,对此音频信号用FFT作谱分析。
制作回音:
利用MATLAB软件中的wavread函数进行采样分析得到的源噪声,通过叠加到原始语音
信号中,模仿语音信号被污染,并对其进行频谱分析;
消除回音:
设计FIR和IIR数字滤波器的滤波器,对带有回声的声音信号进行滤波,恢复出原始信号。
绘制所设计滤波器的幅频和相频特性,及滤波后的信号的时域波形和频谱图,分析滤波后信号的时域和频域特征,回放语音信号。
估算距离:
计算信号y中估计反射物的距离,可理解为估计延时序列中的N值。
即估计y(n)中的原始声音信号x(n)与其延时衰减分量kx(n-N)的相关联的程度;
相关是指两个确定信号或两个随机信号之间的相互关系,对于随机信号,信号一般是不确定的,但是通过对它的规律进行统计,它们的相关函数往往是确定的,故在随机信号处理中,可以用相关函数来描述一个平稳随机信号的统计特性,因而可通过相关分析法估算反射物的距离。
3设计内容
3.1语音采集
读取本地matble库中的自带的文件chimes.Wav。
3.2信号分析
在matbal中绘制其时域波形,利用wavread()函数将其提取出来绘制其时域波形对此音频信号用FFT作谱分析,用plot()函数绘制其图形。
%声音信号的提取
fs=22050;
[x,fs,Nbits]=wavread('
D:
\chimes.wav'
);
%把语音信号进行加载入Matlab仿真软件平台中
wavplay(x,fs);
%回放语音信号。
或者sound(x,fs)
figure
(1);
N=length(x);
%求语音信号的长度
subplot(3,1,1);
plot(x(1:
N));
title('
原始信号波形'
y=fft(x,N);
%傅立叶变换
subplot(3,1,2);
plot((0:
N-1)/N*fs,abs(y));
原始信号幅值'
subplot(3,1,3);
plot(angle(y));
原始信号相位'
2,产生的原信号的波形,以及其幅度、相位谱如图1所示:
图1原信号波形图
3.3制作回音
1参数的设置:
因为人耳能分辨出的声音延迟至少是0.1s,因此,最小延迟量不能小于0.1s。
在此先先延迟时间为0.2s,即最小延迟量N=0.2*fs=0.2*16000=3200。
在已有声音信号x的基础上产生带回声的声音信号,可以表达为在于娜信号的基础上叠加其延时的分量。
假设只有一个回声的情况下,可简化其模型为
y(n)=x(n)+kx(n-m)k为反射系数;
m为延迟时间。
这里设m=3200;
k=0.41
2声音延迟:
利用矩阵置零产生x的延迟,以及得到y信号:
为了保证图像的完整性,对读取的信号先延长4000个采样点,将原始信号延长3200个采样点,然后再在后面补上800个点,得到如下代码:
1——%一次回波的产生
[x,fs]=wavread('
%把语音信号进行加载入Matlab仿真软件平台中。
%语音信号的长度。
x1=x(1:
N);
x2=x(1:
x1=[x1,zeros(1,4000)];
%zeros(1,4000)产生1行3000列全零矩阵加到x1后面。
x2=[zeros(1,3200),0.4*x2,zeros(1,800)];
%N+3200+x=N+4000,得x=800
y=x1+x2;
%加入回音的信号。
figure
(2);
plot(y(1:
3200.+N));
含回声信号波形'
y1=fft(y);
plot(abs(y1));
含回声信号幅值'
plot(angle(y1));
含回声信号相位'
sound(y,fs);
加入回声以后的波形,如图2所示:
图2含一次回声波形图
2——%多次回声的产生
x3=x(1:
x1=[x1,zeros(1,6400)];
x2=[zeros(1,3200),0.4*x2,zeros(1,3200)];
x3=[zeros(1,3200),0.7*x3,zeros(1,3200)];
y=x1+x2+x3;
h=fft(y,N);
N-1)/N*fs,abs(h));
程序设计如图3所示:
图3含多次回声波形图
3.4设计滤波器及滤波
3.4.1设计FIR滤波器及滤波
3.4.1.1单回声的滤波
%单个回声的滤波
subplot(6,1,1);
plot(x);
原信号波形'
h=fft(x,N);
subplot(6,1,2);
%zeros(1,4000)产生1行4000列全零矩阵加到x1后面。
x2=[zeros(1,3200),0.8*x2,zeros(1,800)];
subplot(6,1,3);
subplot(6,1,4);
b=1;
a=zeros(1,N);
a
(1)=1;
a(3201)=0.4;
z=filter(b,a,y);
subplot(6,1,5);
plot(z);
滤波后信号波形'
z1=fft(z);
subplot(6,1,6);
%3行1列排列第1个图
plot(abs(z1));
%画出abs(z1)
滤波后信号的幅值'
%绘图区标题
sound(z1,fs);
程序设计后运行结果如图4所示:
图4滤除单个回波后的波形图
3.4.1.2多次回声的滤波
%多个回声的滤除
x1=[x1,zeros(1,2400)];
%N+3200+x=N+6400,得x=3200
x3=[zeros(1,5200),0.7*x3,zeros(1,5200)];
%plot((0:
N-1)/N*fs,abs(y1));
%subplot(6,1,5);
%plot(angle(y1));
%title('
a(5201)=0.7;
N-1)/N*fs,abs(z1));
%画出abs(z2
程序设计后运行结果如图5所示:
:
图5滤除多个回波后的波形
3.4.2设计巴特沃兹滤波器及滤波
3.4.2.1设计巴特沃斯数字低通滤波器
fp=2100;
fs=8000;
Fs=20000;
Rp=0.5;
Rs=30;
T=1/Fs;
%设计指标
W1p=fp/Fs*2;
W1s=fs/Fs*2;
%求归一化频率
[N,Wn]=buttord(W1p,W1s,Rp,Rs,'
s'
%确定butterworth的最小介数N和频率参数Wn
[z,p,k]=buttap(N);
%设计模拟低通原型的零极点增益参数
[bp,ap]=zp2tf(z,p,k);
%将零极点增益转换成分子分母参数
[bs,as]=lp2lp(bp,ap,Wn*pi*Fs);
%将低通原型转换为模拟低通
[bz,az]=impinvar(bs,as,Fs);
%用脉冲响应不变法进行模数变换
sys=tf(bz,az,T);
%给出传输函数H(Z)
[H,W]=freqz(bz,az,512,Fs);
%生成频率响应参数
subplot(2,1,1);
plot(W,20*log10(abs(H)));
%绘制幅频响应
gridon;
%加坐标网格xlabel('
频率/Hz'
ylabel('
振幅/dB'
subplot(2,1,2);
plot(W,abs(H));
xlabel('
振幅/H'
);
运行后的结果所得波形如图6所示:
图6巴特沃兹滤波器图
运行结果如下:
N=4
bz=0.00000.09990.19140.0252
az=1.0000-1.43361.0984-0.41150.0627
可以得出:
只需编程,结果非常直观
3.5估算距离
3.5.1通过理论计算法
(1)%计算单个回声方法
m=3200,而采样频率为fs=25050Hz,可得延时t=m/fs=0.145s
设反射物距离为s,声速为v,则有2*s=v*t
得:
s=v*t/2;
声速大概在340m/s左右,把t=0.13s,v=340m/s代入求得s=24.65m,即反射物的距离为24.65米。
3.5.2程序返回测量法
(2)采用相关分析法从带有多个回声的声音信号中估计反射物的距离。
%相关函数法测障碍物距离
运行后的结果所得波形如图7所示:
h=xcorr(y);
figure(4);
%建立图形窗口
subplot(4,1,1)%4行1列第1个图
plot(abs(h));
%画出abs(h)
最值'
h1=h(17800:
18000);
%h1矩阵
[r1,t1]=max(h1'
%最大值
t1=t1+17800-1;
subplot(4,1,2);
%4行1列第2个图
plot(h1)%画出h1
点1'
h2=h(21000:
22000);
%h2矩阵
[r2,t2]=max(h2);
t2=t2+21000-t1;
subplot(4,1,3);
%4行1列第3个图
plot(h2);
%画出h3
点2'
h3=h(23000:
23200);
%h3矩阵
[r3,t3]=max(h3);
t3=t3+23000-t1;
subplot(4,1,4);
%4行1列第4个图
plot(h3);
%画出h3title('
点3'
t=[t2,t3];
根据程序返回的结果,我们发现找到了三个延时的值(3200,5200)2个采样点,这和我们起初产生回波时的2个回波的延时是一致的。
假如我们得到延时的采样点个数为n,那么我们就可以用t=n/fs算出延时的时间,再用L=v*t就可以算出距离,即L=v*n/fs,最后根据实际中反射物,声源,接收器三者的相对位置就可以确定反射物与声源之间的距离了。
此次设计所选用的音频信号fs=22050Hz,故得声源距二个反射物的距离分别为:
L1=340*3200/22050/2=24.7m
L2=340*5200/22050/2=40.0m
4总结
这次的课程设计的大体经过:
采集一个语音信号,加入回声,再设计滤波器并恢复原信号,估算出反射物的距离,在误差允许的范围内,基本上可以实现此功能,通过这次课程设计的学习,我对于MATLAB的强大功能有了初步的了解,同时也熟悉了如何用MATLAB进行编程来解决一些声音信号的相关问题。
这次课程设计的难点那就是后面设计滤波器滤波以及估算反射物的距离,这让我下了不少功夫,同时也非常的感谢我的指导老师,因此我也在该过程中学的了不少知识,同时我相信进一步加强对MATLAB的学习与研究对我今后的学习将会起到很大的帮助。
5、参考文献
(1)李敏编,《MATLAB与信号与系统实验指导书》,2013;
(2)梁虹等,《信号与系统分析及MATLAB实现》,电子工业出版社,2002
(3)陈生谭等,《信号与系统》第三版,西安电子科技大学出版社,2003
(4)刘树棠译《数字信号处理——使用MATLAB》西安:
西安交通大学出版社,2002
(5)程佩青.数字信号处理教程[M].北京:
清华大学出版社,2002.