完整word版数字信号处理期末实验语音信号分析和处理.docx
《完整word版数字信号处理期末实验语音信号分析和处理.docx》由会员分享,可在线阅读,更多相关《完整word版数字信号处理期末实验语音信号分析和处理.docx(18页珍藏版)》请在冰豆网上搜索。
完整word版数字信号处理期末实验语音信号分析和处理
语音信号分析与处理
摘要
用MATLAB对语音信号进行分析与处理,采集语音信号后,在MATLAB软件平台进行频谱分析;并对所采集的语音信号加入干扰噪声,对加入噪声的信号进行频谱分析,设计合适的滤波器滤除噪声,恢复原信号。
数字滤波器是数字信号处理的基础,用来对信号进行过滤、检测和参数估计等处理。
IIR数字滤波器最大的优点是给定一组指标时,它的阶数要比相同组的FIR滤波器的低的多。
信号处理中和频谱分析最为密切的理论基础是傅立叶变换(FT)。
离散傅立叶变换(DFT)和数字滤波是数字信号处理的最基本内容。
关键词:
MATLAB;语音信号;加入噪声;滤波器;滤波
1。
设计目的与要求
(1)待处理的语音信号是一个在20Hz~20kHz频段的低频信号。
(2)要求MATLAB对语音信号进行分析和处理,采集语音信号后,在MATLAB平台进行频谱分析;并对所采集的语音信号加入干扰噪声,对加入噪声的信号进行频谱分析,设计合适的滤波器进行滤除噪声,恢复原信号。
2.设计步骤
(1)选择一个语音信号或者自己录制一段语音文件作为分析对象;
(2)对语音信号进行采样,并对语音信号进行FFT频谱分析,画出信号的时域波形图和频谱图;
(3)利用MATLAB自带的随机函数产生噪声加入到语音信号中,对语音信号进行回放,对其进行FFT频谱分析;
(4)设计合适滤波器,对带有噪声的语音信号进行滤波,画出滤波前后的时域波形图和频谱图,比较加噪前后的语音信号,分析发生的变化;
(5)对语音信号进行回放,感觉声音变化。
3。
设计原理及内容
3。
1理论依据
(1)采样频率:
采样频率(也称采样速度或者采样率)定义了每秒从连续信号中提取并组成离散信号的采样个数,它用赫兹(Hz)来表示。
采样频率只能用于周期性采样的采样器,对于非周期采样的采样器没有规则限制。
通俗的讲,采样频率是指计算机每秒钟采集多少个声音样本,是描述声音文件的音质、音调,衡量声卡、声音文件的质量标准。
采样频率越高,即采样的间隔时间越短,则在单位之间内计算机得到的声音样本数据就越多,对声音波形的表示也越精确。
(2)采样位数:
即采样值或取样值,用来衡量声音波动变化的参数。
(3)采样定理:
在进行模拟/数字信号的的转换过程中,当采样频率fs.max大于信号中,最高频率fmax的2倍时,即:
fs.max>=2fmax,则采样之后的数字信号完整的保留了原始信号中的信息,一般实际应用中保证采样频率为信号最高频率的5~10倍;采样频率又称乃奎斯特定理.
(4)时域信号的FFT分析:
信号的频谱分析就是计算信号的傅立叶变换。
连续信号与系统的傅立叶分析显然不便于直接用计算机进行计算,使其应用受到限制。
而FFT是一种时域和频域均离散化的变换,适合数值计算,成为用计算机分析离散信号和系统的的有力工具。
对连续信号和系统,可以通过时域采样,应用DFT进行近似谱分析。
(5)数字信号滤波器原理和方法:
IIR数字滤波器系统函数:
其中H(z)成为N阶IIR数字滤波器系统函数。
IIR滤波器设计方法有间接和直接法,间接法是借助于模拟滤波器的设计方法进行的。
其步骤是:
先设计过度模拟滤波器得到系统函数Ha(s),然后将Ha(s)按某种方法转换成数字滤波器的系统函数H(z)。
利用有限脉冲响应(FIR)滤波器设计滤波器.有限脉冲响应滤波器在保证幅度特性满足技术要求的同时,很容易做到有严格的线性相位特性。
用N表示FIR滤波器单位脉冲响应h(n)的长度,其系统函数H(z)为
H(z)是z—1的N—1次多项式,它在z平面上有N—1个零点,在原点z=0处有一个N—1重极点。
因此,H(z)永远稳点。
稳定和线性相位是FIR滤波器最突出的优点。
(6)各种不同类型滤波器的性能比较:
巴特沃斯滤波器具有单调下降的幅频特性;切比罗夫滤波器的幅频特性在通带或阻带有等波纹特性,可以提高选择性;贝塞尔滤波器通带内有有较好的线性相位特性;椭圆滤波器的选择性相对前三种是最好的,但通带和阻带内均呈现等波纹幅频特性,相对特性的非线性稍重。
IIR数字滤波器最大的优点是给定一组指标时,它的阶数要比相同组的FIR滤波器的低的多。
IIR数字滤波器的设计方法是利用模拟滤波器成熟的理论及设计图进行设计的,因而保留了一些典型模拟滤波器的优良的幅度特性.
(7)离散傅立叶变换
其中WN=
,N为DFT变换空间长度。
3。
2信号采集
从网上下载一段wav格式的文件,把文件“000.wav"保存在MATLAB文件夹下的work文件夹中,以。
wav格式保存,这是windows操作系统规定的声音文件保存的标准。
[x1,fs]=audioread('000。
wav’);%把语音信号进行加载入MATLAB仿真软件平台中,采样值放在向量x1中,fs表示采样频率(Hz)
x=x1(1:
5000,1);%对双声道信号取单声道并取其5000点
X=fft(x,4096);%对信号做4096点FFT变换
调用参数x为被变换的时域序列向量,变换区间长度为4096,当x小于4096时,fft函数自动在x后面补零。
函数返回x的4096点DFT变换结果X。
当x大于4096时,fft函数计算x前面4096个元素构成的长序列的4096点DFT,忽略x后面的元素。
进行图形分区,首先画出语音信号的时域波形,然后对其进行频谱分析。
在MATLAB中利用fft对信号进行快速傅立叶变换,得到信号的频谱特性。
magX=abs(X);%把傅里叶变换后的复数值取模
subplot(2,1,1);%图形分区
plot(x);title('原始信号波形’);%绘制波形
f=(0:
2047)*fs/2/2048;%单位转换
subplot(2,1,2);
plot(f,magX(1:
2048));title(’原始信号频谱’);
其程序如下:
[x1,fs]=audioread('000。
wav');%读取语音信号
x=x1(1:
5000,1);%对双声道信号取单声道并取其5000点
X=fft(x,4096);%对信号做4096点FFT变换
magX=abs(X);%把傅里叶变换后的复数值取模
subplot(2,1,1);%图形分区
plot(x);title('原始信号波形’);%绘制波形
f=(0:
2047)*fs/2/2048;%单位转换
subplot(2,1,2);
plot(f,magX(1:
2048));title(’原始信号频谱’);
sound(x1,fs)
程序结果如下图:
3.3加噪语音信号并对其FFT频谱分析
其程序如下:
[x,fs]=audioread(’000。
wav’);
n=length(x);
x_p=fft(x,n);
f=fs*(0:
n/2—1)/n;
figure
(1)
subplot(2,1,1);
plot(x);
title(’原始语音信号采样后的时域波形');
xlabel(’时间轴')
ylabel('幅值A’)
subplot(2,1,2);
plot(f,abs(x_p(1:
n/2)));
title(’原始语音信号采样后的频谱图');
xlabel('频率Hz');
ylabel('频率幅值');
L=length(x);
noise=(cos(6000/fs*pi*n)+cos(10000/fs*pi*n)+cos(15000/fs*pi*n))*0。
5;
x_z=x+noise’;
sound(x_z,fs)
n=length(x);
x_zp=fft(x_z,n);
f=fs*(0:
n/2-1)/n;
figure
(2)
subplot(2,1,1);
plot(x_z);
title(’加噪语音信号时域波形’);
xlabel(’时间轴')
ylabel(’幅值A')
subplot(2,1,2);
plot(f,abs(x_zp(1:
n/2)));
title('加噪语音信号频谱图');
xlabel('频率Hz');
ylabel('频率幅值’);
sound(x_z,fs)
程序结果如下图:
加入噪声后得到的信号和原始的语音信号有明显的不同。
3。
4数字滤波器设计
设计数字滤波器的任务就是寻找一个因果稳定的线性时不变系统,并使系统函数H(z)具有指定的频率特性。
本实验采用MATLAB工具箱函数buttord设计数字低通IIR滤波器.
fp=800;fs=1300;rs=35;rp=0.5;Fs=44100;
wp=2*Fs*tan(2*pi*fp/(2*Fs));
ws=2*Fs*tan(2*pi*fs/(2*Fs));
[n,wn]=buttord(wp,ws,rp,rs,’s’);
[b,a]=butter(n,wn,’s’);
[num,den]=bilinear(b,a,Fs);
[h,w]=freqz(num,den,512,Fs);
figure
(1)
%subplot(3,1,1)
plot(w,abs(h));
xlabel('频率/Hz');ylabel('幅值');
title('巴特沃斯低通滤波器幅度特性’);
axis([0,5000,0,1。
2]);gridon;
figure
(2)
%subplot(3,1,2)
plot(w,20*log10(abs(h)));
xlabel('频率/Hz');ylabel(’幅值db’);
title(’巴特沃斯低通滤波器幅度特性db');
axis([0,5000,-90,10]);gridon;
figure(3)
plot(w,180/pi*unwrap(angle(h)));
xlabel(’频率/Hz');ylabel(’相位');
title('巴特沃斯低通滤波器相位特性');
axis([0,5000,-1000,10]);gridon;
[s1,Fs,bits]=audioread('D:
\222。
wav');
x1=s1(:
,1);
sound(x1,Fs,bits);
N1=length(x1);
Y1=fft(x1,N1);
f1=Fs*(0:
N1—1)/N1;t1=(0:
N1-1)/Fs;
figure(4)
plot(f1,abs(Y1))
xlabel(’频率/Hz');ylabel('幅度’);
title(’原始信号频谱’);
gridon;axis([060000400])
y=filter(num,den,x1);
sound(y,Fs,bits);
N2=length(y);
Y2=fft(y,N2);
f2=Fs*(0:
N2—1)/N2;
t2=(0:
N2—1)/Fs;
figure(5)
plot(f2,abs(Y2))
xlabel('频率/Hz’);ylabel(’幅度');
title('过滤后信号的频谱’);gridon;
axis([060000100])
程序结果如下图:
3.5信号处理
巴特沃斯滤波器利用函数filter进行滤波。
用设计的滤波器对含噪声的语音信号进行滤波。
其程序如下:
[x,fs]=audioread('000.wav');
x1=x(:
1);%获取单列语音信号并对其做FFT变换
N1=length(x1);
fx1=fft(x1);
w1=2/N1*[0:
N1/2—1];
n=0:
N1—1;y=0.05*(cos(2*pi*n*3000/fs)+cos(2*pi*n*5000/fs)+cos(2*pi*n*8000/fs));%设计三余弦混合噪声信号
N2=length(y);%对三余弦混合噪声信号做FFT变换
fy=fft(y);
w2=2/N2*(0:
N2/2-1)*fs/2;
hdx=x1+y';%产生加噪后的语音信号并对其做FFT变换
M=length(hdx);
fhdx=fft(hdx);w3=2/M*(0:
M/2-1);
figure%画出单列信号语音信号的频谱图、三余弦混合噪声信号的离散信号图%及其频谱图和加噪后语音信号的频谱图
subplot(2,2,1);plot(w1,abs(fx1(1:
N1/2)));
subplot(2,2,2);stem((0:
127),y(1:
128));
abs(fy(1:
N2/2));
subplot(2,2,4);
plot(w3,abs(fhdx(1:
M/2)));
sound(hdx,fs);%语音信号有电流声,而且噪声比较明显。
wp=0.1;ws=0。
15;rp=1;rs=50;%设计巴特沃斯滤波器
[N4,Wc]=buttord(wp,ws,rp,rs);
[B,A]=butter(N4,Wc);
[Hd,w]=freqz(B,A);
lohdx=filter(B,A,hdx);%利用巴特沃斯滤波器对加噪后语音信号进行滤波并对其做%FFT变换
M1=length(lohdx);
flohdx=fft(lohdx);
w4=2/M1*(0:
M1/2—1);
figure%画出加噪后语音信号的音频图、巴特沃斯滤波器的频率响应曲线%和滤波后语音信号的频谱图
subplot(3,1,1);
plot(hdx);
subplot(3,1,2);
plot(w/pi,abs(Hd));
subplot(3,1,3);
plot(w4,abs(flohdx(1:
M1/2)));
sound(lohdx,fs);%滤波后语音信号比较低沉,较清晰。
程序结果如下图:
将原始信号波形和滤波后的图形相比较,大致相同,说明滤波器有效果,滤波成功.
总结
本设计采用MATLAB实现了语音信号的采集,对语音信号的加噪及设计滤波器滤除噪声等一系列工作,从频率图可以看出,巴特沃斯滤波器具有单调下降的幅频特性,通带内是光滑的。
我已基本完成设计任务,里面也有很多不足.通过本次教学实践,使我加深了对课堂知识的巩固和理解,并能掌握语音信号处理中的基本方法、理论应用和基于软硬件平台的算法实现技术。
通过MATLAB中几个命令函数的调用,使得在实际应用和理论知识之间建立了联系,为以后的学习带来了非常的帮助.
参考文献
【1】高西全、丁玉美编著.数字信号处理.西安:
西安电子科技大学出版社,2008.
【2】丁玉美、高西全编著。
数字信号处理学习指导.西安:
西安电子科技大学出版社,2001.
【3】郑君里等编.信号与系统.北京:
高等教育出版社,2000.
【4】刘树棠译.数字信号处理--使用MATLAB。
西安:
西安交通大学出版社,2002。
【5】导向科技编著。
MATLAB程序设计与实例应用。
北京:
中国铁道出版社,2001.
【6】罗军辉等编著.MATLAB7.0在数字信号处理中的应用.北京:
机械工业出版社,2005。
【7】陈怀琛等编著。
MATLAB及在电子信息课中的应用。
北京:
电子工业出版社,2002.
【8】胡广书编著.数字信号处理——理论、算法与实现.北京:
清华大学出版社,2002。
【9】梁虹等编.信号与线性分析——基于MATLAB的方法与实现。
北京:
高等教育出版社,2006。
【10】刘卫国主编.MATLAB程序设计与应用(第二版).北京:
高等教育出版社,2006。