数字信号处理课程设计
回声信号的产生与消除
姓 名 张针海 学 号 10300123 专 业 电子信息工程
指导教师 樊玲 年 级 10级电信2班 日 期 2013 .5 . 10
【摘要】 本课程是利用Windows 下的录音机,录制一段自己不小于10s 的语音,然后在Matlab 软件平台下,利用函数wavread 对语音信号进行采样,并记录采样频率和采样点数。在抽样信号的基础上,通过采样后的的信号与原信号实现一次及多次延迟、叠加产生回波信号,再使用Matlab 绘出有回
声及无回声语音信号的时域波形和频谱图。再分别用频率抽样法设计的FIR 滤波器和冲激相应不变法设计设计的IIR 滤波器消除回声,并记录滤波器的频域响应,再绘制滤波后信号的时域波形和频谱,并对前后信号进行对比,分析信号的变化。
[关键词] 录音 matlab 采样 滤波 抽样
[Abstract] this course is to use a tape recorder to record voice under Windows, a section of their own not less than 10s, then in Matlab software platform, sampling of the speech signal using the function wavread, and record the sampling frequency and sampling points. Based on the sampling signal, through its implementation of single and multiple superposition delay, echo, and use Matlab to draw the echo and echo free speech signal time-domain waveform and spectrum. FIR filter respectively by frequency sampling design method and impulse corresponding invariant IIR filter design to eliminate echo, and record the response of the filter in frequency domain, and then draw the time-domain waveform and spectrum of the filtered signal, and compared before and after the signal, analysis of signal changes
1 设计目的及要求
1.1设计回音目的及要求
现代通信中回波是影响通信质量的噪声,本课程设计是利用windows 下的录音机进行一段不小于10s 的录音,再利用函数wavread 对语音信号进行采样,并自身实现一次及多次延迟、叠加产生回波信号,再使用Matlab 绘出有回声及无回声语音信号的时域波形和频谱图。在此过程中必须灵活运用matlab 及wavread 函数对信号进行采样,同时加深了对声频信号中噪声的认识。 1.2设计滤波器目的及要求 1.2.1 FIR 滤波器
FIR滤波器是有限长冲激响应滤波器,它是通信,语音与图象处理模式识别及频谱分析等应用中一种基本的处理部件。他可以满足滤波器幅度和相位特性的严格要求避免模拟滤波器无法克服的电压漂移,温度漂移和噪声等问题。数字滤波器的作用是滤除信号中某一部分频率分量。信号经过滤波处理。就是相当于信号频谱与滤波响应相乘的结果。时域上看就是信号与滤波器的冲激响应卷积的结果。有限长冲激响应滤波器可以保证任何幅频特性的同时具有严格的相频特性,同时其单位冲激响是有限的。没有输入到输出的反馈,是稳定的系统。
1. 2. 2 巴特沃兹滤波器
欲消除回声,则需设计滤波器,绘出滤波器的频域响应,绘出滤波后信号的时域波形和频谱,并对滤波前后的信号进行对比,分析信号的变化,理想低通滤波器的一个非因果系统,如果允许低通滤波器的通带和阻带之间有一定的过渡带,且通带和阻带允许有一定的衰减,我们就可以用物理可实现的系统去逼近理想低通滤波器的频率特性,从而获得较好的滤波效果;巴特沃兹滤波器就是工程中常用的频率响应逼近理想低通滤波器的物理可实现系统,还原出原有音频信号。 1. 2. 2 距离估计要求
从信号y 中估计反射物的距离,即回声延迟的时间,可理解为估算原有信号中的N 值。
也就是,估测y(n)中的原始声音信号x(n)与其延时衰减分量kx(n-N)的相关联的程度。
2 设计原理
语音采集: 可通过pc 机的录音机录取一段语音,并以“....wav ”格式保存,绘制其时域
波形,对此音频信号用FFT 作谱分析 。
制作回音: 利用MATLAB 软件中的wavread 函数进行采样分析得到的源噪声,通过叠加到原始语音
信号中,模仿语音信号被污染,并对其进行频谱分析;
消除回音: 设计FIR 和IIR 数字滤波器的滤波器,对带有回声的声音信号进行滤波,恢复出原始
信号。绘制所设计滤波器的幅频和相频特性,及滤波后的信号的时域波形和频谱图,分析滤波后信号的时域和频域特征,回放语音信号。
估算距离: 计算信号y 中估计反射物的距离,可理解为估计延时序列中的N 值。即估计y(n)中的
原始声音信号x(n)与其延时衰减分量kx(n-N)的相关联的程度;相关是指两个确定信号或两个随机信号之间的相互关系,对于随机信号,信号一般是不确定的,但是通过对它的规律进行统计,它们的相关函数往往是确定的,故在随机信号处理中,可以用相关函数来描述一个平稳随机信号的统计特性,因而可通过相关分析法估算反射物的距离。
3设计内容
3.1语音采集 读取本地录音文件music.wav 。 3. 2信号分析
在matbal 中绘制其时域波形,利用wavread()函数将其提取出来绘制其
时域波形对此音频信号用FFT 作谱分析,用plot()函数绘制其图形。
%声音信号的提取
[x,fs]=wavread('sound.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(abs(y));
title(' 原始信号幅值' ); subplot(3,1,3); plot(angle(y));
title(' 原始信号相位' );
2,产生的原信号的波形,以及其幅度、相位谱如下所示:
3.2制作回音 1 参数的设置:
因为人耳能分辨出的声音延迟至少是0.1s ,因此,最小延迟量不能小于0.1s 。在此先先延迟时
间为0.2s, 即最小延迟量N=0.2*fs=0.2*16000=3200。
在已有声音信号x 的基础上产生带回声的声音信号,可以表达为在于娜信号的基础上叠加其延时的分量。假设只有一个回声的情况下,可简化其模型为
y(n)=x(n)+kx(n-N) k 为反射系数;N 为延迟时间。 这里设N=3200 k=0.41
2 声音延迟:
, 利用矩阵置零产生x 的延迟,以及得到y 信号:
为了保证图像的完整性,对读取的信号先延长4000个采样点,将原始信号延长3200个采样点,然后再在后面补上800个点,得到如下代码: %回波的产生
[x,fs]=wavread('sound.wav' ); %把语音信号进行加载入Matlab 仿真软件平台中。 N=length(x);%语音信号的长度。 x1=x(1:N); x2=x(1:N);
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);
subplot(3,1,1);
plot(y(1:3200.+N)); title(' 含回声信号波形' ); y1=fft(y);
subplot(3,1,2); plot(abs(y1));
title(' 含回声信号幅值' ); subplot(3,1,3); plot(angle(y1)); title(' 含回声信号相位' ); sound(y,fs);
加入回声以后的波形,如图所示:
3.3设计滤波器及滤波 3. 1 设计FIR 滤波器及滤波 3.1.1单回声的滤波
[x,fs,bits]=wavread('1.wav',[10000 20000]); x=x(:,1);
z=[zeros(2000,1);x]; x=[x;zeros(2000,1)]; N=size(x,1);
n1=0:N;
k=0.8; %设置系数
y2=x+z*k; %单回声滤波器,实为FIR 滤波器,H(z)=1+k*z^(-r) subplot(2,1,1);
plot(y2); %画出单回声滤波器时域波形 title('单回声滤波器');
Y2=fft(y2,N+1); %N+1点FFT subplot(2,1,2);
plot(abs(Y2)); %画出单回声滤波频谱图 title('单回声滤波频谱图'); sound(5*y2,fs,bits);
图为单回声滤波时域图和频谱图
3.1.2多次回声的滤波
[x,fs,bits]=wavread('1.wav',[10000 20000]); x=x(:,1); N=size(x,1); n1=0:N; a=0.8;
x=[x;zeros(2000,1)];
Bz=[0,0,0,0,0,0,0,0,0,0,0,0,0,1]; %系统函数的分子系数,其中零的个数可变 Az=[1,0,0,0,0,0,0,0,0,0,0,0,0,-a]; %系统函数的分母系数,实为FIR 滤波器 yy1=filter(Bz,Az,x); subplot(2,1,1);
plot(yy1); %画出多次回声滤波时域图 title('多次回声滤波时域图'); YY1=fft(yy1,N+1); subplot(2,1,2);
plot(abs(YY1)); %画出多次回声滤波频谱图 title('多次回声滤波频谱图'); sound(5*yy1,fs,bits)
图为无限回声滤波时域图和频谱图
3. 2设计巴特沃兹滤波器及滤波
单回声的滤波
多次回声的滤波
3.4估算距离
,而采样频率为fs=16000Hz,可得延时t=N/fs=0.2s 设反射物距离为s ,声速为v ,则有2*s=v*t 得
3.2.1 3.2.2 N=3200
s=v*t/2
声速大概在340m/s左右,把t=0.2s,v=340m/s代入求得s=34m,即反射物的距离为34米。
4总结
这次的课程设计的大体经过:采集一个语音信号,加入回声,再设计滤波器并恢复原
信号,估算出反射物的距离,通过这次课程设计的学习,我对于MATLAB 的强大功能有了初步的了解,同时也熟悉了如何用MATLAB 进行编程来解决一些声音信号的相关问题。这次课程设计的难点那就是后面设计巴特沃兹滤波器以及估算反射物的距离,这让我下了不少功夫,但我也在该过程中学的了不少知识,同时我相信进一步加强对MATLAB 的学习与研究对我今后的学习将会起到很大的帮助。
5、参考文献
(1)李敏编,《MATLAB 与信号与系统实验指导书》,2013;
(2)梁虹等,《信号与系统分析及MATLAB 实现》,电子工业出版社,2002. (3)陈生谭等,《信号与系统》第三版,西安电子科技大学出版社,2003. ( 4 ) 郑君里等编《信号与系统》北京:高等教育出版社,2000
( 5 ) 刘树棠译《数字信号处理——使用MATLAB 》西安:西安交通大学出版社,2002 (6)程佩青.数字信号处理教程[M ].北京:清华大学出版社,2002.
数字信号处理课程设计
回声信号的产生与消除
姓 名 张针海 学 号 10300123 专 业 电子信息工程
指导教师 樊玲 年 级 10级电信2班 日 期 2013 .5 . 10
【摘要】 本课程是利用Windows 下的录音机,录制一段自己不小于10s 的语音,然后在Matlab 软件平台下,利用函数wavread 对语音信号进行采样,并记录采样频率和采样点数。在抽样信号的基础上,通过采样后的的信号与原信号实现一次及多次延迟、叠加产生回波信号,再使用Matlab 绘出有回
声及无回声语音信号的时域波形和频谱图。再分别用频率抽样法设计的FIR 滤波器和冲激相应不变法设计设计的IIR 滤波器消除回声,并记录滤波器的频域响应,再绘制滤波后信号的时域波形和频谱,并对前后信号进行对比,分析信号的变化。
[关键词] 录音 matlab 采样 滤波 抽样
[Abstract] this course is to use a tape recorder to record voice under Windows, a section of their own not less than 10s, then in Matlab software platform, sampling of the speech signal using the function wavread, and record the sampling frequency and sampling points. Based on the sampling signal, through its implementation of single and multiple superposition delay, echo, and use Matlab to draw the echo and echo free speech signal time-domain waveform and spectrum. FIR filter respectively by frequency sampling design method and impulse corresponding invariant IIR filter design to eliminate echo, and record the response of the filter in frequency domain, and then draw the time-domain waveform and spectrum of the filtered signal, and compared before and after the signal, analysis of signal changes
1 设计目的及要求
1.1设计回音目的及要求
现代通信中回波是影响通信质量的噪声,本课程设计是利用windows 下的录音机进行一段不小于10s 的录音,再利用函数wavread 对语音信号进行采样,并自身实现一次及多次延迟、叠加产生回波信号,再使用Matlab 绘出有回声及无回声语音信号的时域波形和频谱图。在此过程中必须灵活运用matlab 及wavread 函数对信号进行采样,同时加深了对声频信号中噪声的认识。 1.2设计滤波器目的及要求 1.2.1 FIR 滤波器
FIR滤波器是有限长冲激响应滤波器,它是通信,语音与图象处理模式识别及频谱分析等应用中一种基本的处理部件。他可以满足滤波器幅度和相位特性的严格要求避免模拟滤波器无法克服的电压漂移,温度漂移和噪声等问题。数字滤波器的作用是滤除信号中某一部分频率分量。信号经过滤波处理。就是相当于信号频谱与滤波响应相乘的结果。时域上看就是信号与滤波器的冲激响应卷积的结果。有限长冲激响应滤波器可以保证任何幅频特性的同时具有严格的相频特性,同时其单位冲激响是有限的。没有输入到输出的反馈,是稳定的系统。
1. 2. 2 巴特沃兹滤波器
欲消除回声,则需设计滤波器,绘出滤波器的频域响应,绘出滤波后信号的时域波形和频谱,并对滤波前后的信号进行对比,分析信号的变化,理想低通滤波器的一个非因果系统,如果允许低通滤波器的通带和阻带之间有一定的过渡带,且通带和阻带允许有一定的衰减,我们就可以用物理可实现的系统去逼近理想低通滤波器的频率特性,从而获得较好的滤波效果;巴特沃兹滤波器就是工程中常用的频率响应逼近理想低通滤波器的物理可实现系统,还原出原有音频信号。 1. 2. 2 距离估计要求
从信号y 中估计反射物的距离,即回声延迟的时间,可理解为估算原有信号中的N 值。
也就是,估测y(n)中的原始声音信号x(n)与其延时衰减分量kx(n-N)的相关联的程度。
2 设计原理
语音采集: 可通过pc 机的录音机录取一段语音,并以“....wav ”格式保存,绘制其时域
波形,对此音频信号用FFT 作谱分析 。
制作回音: 利用MATLAB 软件中的wavread 函数进行采样分析得到的源噪声,通过叠加到原始语音
信号中,模仿语音信号被污染,并对其进行频谱分析;
消除回音: 设计FIR 和IIR 数字滤波器的滤波器,对带有回声的声音信号进行滤波,恢复出原始
信号。绘制所设计滤波器的幅频和相频特性,及滤波后的信号的时域波形和频谱图,分析滤波后信号的时域和频域特征,回放语音信号。
估算距离: 计算信号y 中估计反射物的距离,可理解为估计延时序列中的N 值。即估计y(n)中的
原始声音信号x(n)与其延时衰减分量kx(n-N)的相关联的程度;相关是指两个确定信号或两个随机信号之间的相互关系,对于随机信号,信号一般是不确定的,但是通过对它的规律进行统计,它们的相关函数往往是确定的,故在随机信号处理中,可以用相关函数来描述一个平稳随机信号的统计特性,因而可通过相关分析法估算反射物的距离。
3设计内容
3.1语音采集 读取本地录音文件music.wav 。 3. 2信号分析
在matbal 中绘制其时域波形,利用wavread()函数将其提取出来绘制其
时域波形对此音频信号用FFT 作谱分析,用plot()函数绘制其图形。
%声音信号的提取
[x,fs]=wavread('sound.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(abs(y));
title(' 原始信号幅值' ); subplot(3,1,3); plot(angle(y));
title(' 原始信号相位' );
2,产生的原信号的波形,以及其幅度、相位谱如下所示:
3.2制作回音 1 参数的设置:
因为人耳能分辨出的声音延迟至少是0.1s ,因此,最小延迟量不能小于0.1s 。在此先先延迟时
间为0.2s, 即最小延迟量N=0.2*fs=0.2*16000=3200。
在已有声音信号x 的基础上产生带回声的声音信号,可以表达为在于娜信号的基础上叠加其延时的分量。假设只有一个回声的情况下,可简化其模型为
y(n)=x(n)+kx(n-N) k 为反射系数;N 为延迟时间。 这里设N=3200 k=0.41
2 声音延迟:
, 利用矩阵置零产生x 的延迟,以及得到y 信号:
为了保证图像的完整性,对读取的信号先延长4000个采样点,将原始信号延长3200个采样点,然后再在后面补上800个点,得到如下代码: %回波的产生
[x,fs]=wavread('sound.wav' ); %把语音信号进行加载入Matlab 仿真软件平台中。 N=length(x);%语音信号的长度。 x1=x(1:N); x2=x(1:N);
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);
subplot(3,1,1);
plot(y(1:3200.+N)); title(' 含回声信号波形' ); y1=fft(y);
subplot(3,1,2); plot(abs(y1));
title(' 含回声信号幅值' ); subplot(3,1,3); plot(angle(y1)); title(' 含回声信号相位' ); sound(y,fs);
加入回声以后的波形,如图所示:
3.3设计滤波器及滤波 3. 1 设计FIR 滤波器及滤波 3.1.1单回声的滤波
[x,fs,bits]=wavread('1.wav',[10000 20000]); x=x(:,1);
z=[zeros(2000,1);x]; x=[x;zeros(2000,1)]; N=size(x,1);
n1=0:N;
k=0.8; %设置系数
y2=x+z*k; %单回声滤波器,实为FIR 滤波器,H(z)=1+k*z^(-r) subplot(2,1,1);
plot(y2); %画出单回声滤波器时域波形 title('单回声滤波器');
Y2=fft(y2,N+1); %N+1点FFT subplot(2,1,2);
plot(abs(Y2)); %画出单回声滤波频谱图 title('单回声滤波频谱图'); sound(5*y2,fs,bits);
图为单回声滤波时域图和频谱图
3.1.2多次回声的滤波
[x,fs,bits]=wavread('1.wav',[10000 20000]); x=x(:,1); N=size(x,1); n1=0:N; a=0.8;
x=[x;zeros(2000,1)];
Bz=[0,0,0,0,0,0,0,0,0,0,0,0,0,1]; %系统函数的分子系数,其中零的个数可变 Az=[1,0,0,0,0,0,0,0,0,0,0,0,0,-a]; %系统函数的分母系数,实为FIR 滤波器 yy1=filter(Bz,Az,x); subplot(2,1,1);
plot(yy1); %画出多次回声滤波时域图 title('多次回声滤波时域图'); YY1=fft(yy1,N+1); subplot(2,1,2);
plot(abs(YY1)); %画出多次回声滤波频谱图 title('多次回声滤波频谱图'); sound(5*yy1,fs,bits)
图为无限回声滤波时域图和频谱图
3. 2设计巴特沃兹滤波器及滤波
单回声的滤波
多次回声的滤波
3.4估算距离
,而采样频率为fs=16000Hz,可得延时t=N/fs=0.2s 设反射物距离为s ,声速为v ,则有2*s=v*t 得
3.2.1 3.2.2 N=3200
s=v*t/2
声速大概在340m/s左右,把t=0.2s,v=340m/s代入求得s=34m,即反射物的距离为34米。
4总结
这次的课程设计的大体经过:采集一个语音信号,加入回声,再设计滤波器并恢复原
信号,估算出反射物的距离,通过这次课程设计的学习,我对于MATLAB 的强大功能有了初步的了解,同时也熟悉了如何用MATLAB 进行编程来解决一些声音信号的相关问题。这次课程设计的难点那就是后面设计巴特沃兹滤波器以及估算反射物的距离,这让我下了不少功夫,但我也在该过程中学的了不少知识,同时我相信进一步加强对MATLAB 的学习与研究对我今后的学习将会起到很大的帮助。
5、参考文献
(1)李敏编,《MATLAB 与信号与系统实验指导书》,2013;
(2)梁虹等,《信号与系统分析及MATLAB 实现》,电子工业出版社,2002. (3)陈生谭等,《信号与系统》第三版,西安电子科技大学出版社,2003. ( 4 ) 郑君里等编《信号与系统》北京:高等教育出版社,2000
( 5 ) 刘树棠译《数字信号处理——使用MATLAB 》西安:西安交通大学出版社,2002 (6)程佩青.数字信号处理教程[M ].北京:清华大学出版社,2002.