#语音信号处理matlab.docx
- 文档编号:27943776
- 上传时间:2023-07-06
- 格式:DOCX
- 页数:40
- 大小:292.67KB
#语音信号处理matlab.docx
《#语音信号处理matlab.docx》由会员分享,可在线阅读,更多相关《#语音信号处理matlab.docx(40页珍藏版)》请在冰豆网上搜索。
#语音信号处理matlab
摘要-------------------------------------------------------------3
关键词-----------------------------------------------------------3
1课程设计的目的、意义-------------------------------------------3
1.1目的---------------------------------------------------------3
1.2意义---------------------------------------------------------3
2设计任务及技术指标---------------------------------------------3
2.1设计任务-----------------------------------------------------3
2.2技术指标------------------------------------------------------4
3设计方案论证---------------------------------------------------4
3.1信号的抽样与恢复---------------------------------------------4
3.2滤波器设计---------------------------------------------------4
3.2.1模拟滤波器设计原理------------------------------------------4
3.2.2模拟滤波器数字化原理---------------------------------------5
3.2.3数字高通、带通、带阻滤波器的设计----------------------------5
4设计内容------------------------------------------------------6
4.1必选部分------------------------------------------------------6
4.2拓展部分----------------------------------------------------6
5实验结果与分析-------------------------------------------------6
6总结-----------------------------------------------------------29
参考文献---------------------------------------------------------30
题目语音信号分析系统设计
摘要:
语音信号分析系统设计涵盖了基于matlab对语音信号进行处理的原理、方法及源程序,包括语音信号的采集与时域频域分析、对语音信号进行加噪滤波处理、噪声滤除前后的语音进行时频域分析、语音信号的重采样和回放、语音信号部分时域参数的提取及GUI用户友好界面的实现,实现了对简单的单音节语音的综合处理与分析。
本设计程序界面简练,操作简便,有一定的实际意义。
最后对语音信号的处理发展方向提出了自己的看法。
关键词:
语音,matlab,GUI,滤波,噪声,采样
1课程设计的目的、意义
1.1目的
设计一个简单的语音信号分析系统,实现对语音信号时域波形显示、进行频谱分析,利用滤波器滤除噪声、对语音信号的参数进行提取分析等功能。
采用Matlab设计语言信号分析相关程序,并且利用GUI设计图形用户界面。
(1>采集语音信号。
(2>对原始语音信号加入干扰噪声,对原始语音信号及带噪语音信号进行时频域分析。
(3>针对语音信号频谱及噪声频率,设计合适的数字滤波器滤除噪声。
(4>对噪声滤除前后的语音进行时频域分析。
(5>对语音信号进行重采样,回放并与原始信号进行比较。
(6>对语音信号部分时域参数进行提取。
(7>设计图形用户界面<实现以上功能)。
1.2意义
本次设计基本完成了语音信号的分析与处理,在下面方面有实际意义:
1.从语音信号中得到某些语音特征参数,如:
短时平均幅度,短时平均能量,短时平均过零率,短时自相关函数。
2.对原信号,带噪信号进行简单的时域频域分析。
3.分析不同采样频率下的语音信号的不同。
2设计任务及技术指标
2.1设计任务
设计一个简单的语音信号分析系统,实现对语音信号时域波形显示、进行频谱分析,利用滤波器滤除噪声、对语音信号的参数进行提取分析等功能。
采用Matlab设计语言信号分析相关程序,并且利用GUI设计图形用户界面。
具体任务是:
(1>采集语音信号。
(2>对原始语音信号加入干扰噪声,对原始语音信号及带噪语音信号进行时频域分析。
(3>针对语音信号频谱及噪声频率,设计合适的数字滤波器滤除噪声。
(4>对噪声滤除前后的语音进行时频域分析。
(5>对语音信号进行重采样,回放并与原始信号进行比较。
(6>对语音信号部分时域参数进行提取。
(7>设计图形用户界面<实现以上功能)。
2.2技术指标
低通滤波器的技术指标WP,WS,RP,AS,采样频率的技术指标FS,帧长,帧移,帧重叠采样点数
3设计方案论证
3.1信号的抽样与恢复
利用抽样脉冲把一个连续信号变为离散时间样值的过程称为抽样,在满足抽样定理条件下,抽样信号保留了原信号的全部信息,并且从抽样信号中可以无失真的恢复出原始信号。
抽样定理在通信系统、信息传输理论方面占有十分重要的地位。
数字通信系统是以此定理作为理论基础。
抽样过程关系到通信设备整个系统的性能指标。
3.2滤波器设计
3.2.1模拟滤波器设计原理
<1)模拟巴特沃思滤波器原理
巴特沃斯滤波器具有单调下降的幅频特性:
在小于截止频率
的范围内,具有最平幅度的响应,而在
后,幅频响应迅速下降。
巴特沃思低通滤波器幅度平方函数为:
(3-1>
式中N为滤波器阶数,
为3dB截止角频率。
将幅度平方函数写成s的函数:
(3-2>
该幅度平方函数有2N个等间隔分布在半径为
的圆上的极点
,
为了形成稳定的滤波器,取左半平面的N个极点构成
,即:
(3-3>
为使设计统一,将频率归一化,得到归一化极点
,相应的归一化系统函数为:
(3-4>
多项式形式为:
(3-5)<2)模拟切比雪夫滤波器原理
切比雪夫滤波器的幅频特性具有等波纹特性,有两种形式,在通带内等波纹、阻带单调的是I型滤波器,在通带内单调、在阻带内等波纹的是II滤波器。
以I型滤波器为例。
切比雪夫滤波器的幅度平方函数为:
(3-6>
ε为小于1的正数,表示通带内幅度波动的程度。
Ωp称为通带截止频率。
令λ=Ω/Ωp,称为对Ωp的归一化频率。
CN(x>为N阶切比雪夫多项式。
幅度平方函数的极点是分布在bΩp为长半轴,aΩp为短半轴的椭圆上的点。
同样取s平面左半平面的极点构成
:
(3-7>
进行归一化,得到:
(3-8>
其中
,
3.2.2模拟滤波器数字化原理
将模拟滤波器转化为数字滤波器在项目上常用的有脉冲响应不变法和双线性变换法。
脉冲响应不变法时一种时域上的转换方法,它是数字滤波器的单位取样响应在抽样点上等于模拟滤波器的单位冲激响应,即:
(3-9>
设模拟滤波器只有单阶极点,其系统函数为:
(3-10>
对
进行拉氏反变换得到
,对
进行等间隔抽样,得到
,对
进行Z变换,得到数字滤波器系统函数:
(3-11>
这种方法s和z的关系是:
。
该方法的优点是频率坐标变换时线性的切数字滤波器的单位脉冲响应完全模仿模拟滤波器的单位冲激响应,时域特性逼近好;缺点是会产生频谱混叠现象,适合低通、带通滤波器的设计,不适合高通、带阻滤波器的设计。
双线性变换法为了克服频谱混叠现象,采用非线性频率压缩方法,将整个频率轴上的频率范围压缩到
之间,再用
转换到Z平面上。
这种方法s和z的关系是:
。
该方法克服了频谱混叠现象,但带来了频率坐标变换的非线性:
,由模拟滤波器系统函数转换为数字滤波器系统函数公式为:
(3-12>
3.2.3数字高通、带通、带阻滤波器的设计
这些滤波器可以借助于模拟滤波器的频率变换设计一个所需类型的模拟滤波器,再通过双线性变换法将其转换成所需类型的数字滤波器。
首先确定所需类型数字滤波器的技术指标;然后将数字滤波器技术指标按照公式
转换成所需类型滤波器的模拟域技术指标;将所需类型滤波器的模拟域技术指标转换成低通滤波器技术指标;设计归一化模拟低通滤波器;去归一化得到模拟低通滤波器的系统函数;将模拟低通滤波器转换为所需类型的模拟滤波器;最后通过双线性变换法转换成所需类型的数字滤波器。
4设计内容
4.1必选部分
利用MATLAB软件对语音信号进行频谱分析;并对语音信号加入干扰噪声,对加入噪声的信号进行频谱分析,设计合适的滤波器滤除噪声。
<1)根据设计要求分析系统功能,掌握设计中所需理论、阐明设计原理<抽样频率、量化位数的概念,抽样定理;信号的FFT分析;数字滤波器设计原理和方法,各种不同类型滤波器的性能比较)。
<2)对语音信号以不同采样频率进行重采样,回放并与原始信号进行比较<如原语音信号采样频率为16KHz,对其进行8KHz,4KHz的重采样)。
<3)对语音信号做FFT,进行频谱分析,画出信号的时域波形图和频谱图。
<4)对语音信号加入干扰噪声,对语音信号进行回放<利用sound函数),感觉加噪前后声音的变化。
对其做FFT,进行频谱分析,比较加噪前后语音信号的波形及频谱,对所得结果进行分析。
<5)根据带噪语音信号的特点,设计合适的数字滤波器,绘制所设计滤波器的幅频和相频特性。
<6)用所设计的滤波器对带噪语音信号进行滤波。
对滤波后的语音信号进行FFT频谱分析。
记录处理过程中所得各种波形及频谱图。
<7)对语音信号进行回放,感觉滤波前后声音的变化。
比较滤波前后语音信号的波形及频谱,对所得结果和滤波器性能进行频谱分析。
4.2拓展部分
利用GUI设计简单的图形用户界面。
要求主界面上包括语音文件的显示及播放按钮,滤波器设计时所需参数设置及滤波功能按钮。
滤波前后语音信号时域波形及频谱的显示,滤波器幅频特性的显示等功能可包含在主界面中,也可在新建图形窗口中完成。
5实验结果与分析
实验前须定义的函数:
(1)分帧函数:
functionf=fra(len,inc,x>
fh=fix(((size(x,1>-len>/inc>+1>
f=zeros(fh,len>。
i=1。
n=1。
whilei<=fh
j=1。
whilej<=len
f(i,j>=x(n>。
j=j+1。
n=n+1。
end
n=n-len+inc。
i=i+1。
End
(2)从模拟到数字滤波器的变换:
function[b,a]=imp_invr(c,d,T>
[R,p,k]=residue(c,d>。
p=exp(p*T>。
[b,a]=residuez(R,p,k>。
b=real(b'>。
a=real(a'>。
<3)获得滤波器的幅值响应、相位响应及群延迟响应:
function[db,mag,pha,w]=freqz_m(b,a>。
[H,w]=freqz(b,a,1000,'whole'>。
H=(H(1:
500>>'。
w=(w(1:
500>>'。
mag=abs(H>。
db=20*log10((mag+eps>/max(mag>>。
pha=angle(H>。
(4>非归一化巴特沃斯低通滤波器原型设计函数
function[b,a]=u_buttap(N,Omegac>
[z,p,k]=buttap(N>。
p=p*Omegac。
k=k*Omegac^N。
B=real(poly(z>>。
b=k*B。
a=real(poly(p>>。
<5)巴特沃斯低通滤波器原型设计函数:
function[b,a]=afd_butt(Wp,Ws,Rp,As>
N=ceil((log10((10^(Rp/10>-1>/(10^(As/10>-1>>>/(2*log10(Wp/Ws>>>。
fprintf('\nButterworthFilterOrder=%2.0f\n',N>
OmegaC=Wp/((10^(Rp/10>-1>^(1/(2*N>>>
[b,a]=u_buttap(N,OmegaC>。
<6)巴特沃斯滤波器:
wp=0.2*pi。
ws=0.3*pi。
Rp=1。
As=15。
T=1。
OmegaP=(2/T>*tan(wp/2>。
OmegaS=(2/T>*tan(ws/2>。
[cs,ds]=afd_butt(OmegaP,OmegaS,Rp,As>。
[b,a]=bilinear(cs,ds,T>。
[db,mag,pha,w]=freqz_m(b,a>。
subplot(2,1,1>。
plot(w/pi,mag>。
title('digitalfilterMagnitudeResponse'>。
axis([0,1,0,1.1]>
subplot(2,1,2>。
plot(w/pi,db>。
title('digitalfilterMagnitudeinDB'>。
axis([0,1,-40,5]>。
(7)非归一化切比雪夫低通滤波器原型设计函数:
function[b,a]=u_chb1ap(N,Rp,Omegac>
[z,p,k]=cheb1ap(N,Rp>。
a=real(poly(p>>。
aNn=a(N+1>。
p=p*Omegac。
a=real(poly(p>>。
aNu=a(N+1>。
k=k*aNu/aNn。
B=real(poly(z>>。
b=k*B。
(8)切比雪夫滤波器:
wp=0.2*pi。
ws=0.3*pi。
Rp=1。
As=15。
T=1。
OmegaP=(2/T>*tan(wp/2>。
OmegaS=(2/T>*tan(ws/2>。
ep=sqrt(10^(Rp/10>-1>。
Ripple=sqrt(1/(1+ep*ep>>。
Attn=1/(10^(As/20>>。
A1=1/Attn。
a1=sqrt(A1*A1-1>/ep。
a2=OmegaS/OmegaP。
N=ceil(logm(a1+sqrt(a1*a1-1>>/logm(a2+sqrt(a2*a2-1>>>。
fprintf('\nChebyshevFilterOrder=%2.0f\n',N>
[cs,ds]=u_chb1ap(N,Rp,OmegaP>。
[b,a]=bilinear(cs,ds,T>
[db,mag,pha,w]=freqz_m(b,a>。
subplot(2,1,1>。
plot(w/pi,mag>。
title('digitalfilterMagnitudeResponse'>。
axis([0,1,0,1.1]>
subplot(2,1,2>。
plot(w/pi,db>。
title('digitalfilterMagnitudeinDB'>。
axis([0,1,-40,5]>。
实验源程序:
<1)对语音1.wav进行fs=16k的采集,包含时域频域分析:
[y,fs]=wavread('1.wav'>。
sound(y,fs>。
subplot(2,1,1>。
plot(y>。
title('原始信号波形'>。
xlabel('时间'>。
ylabel('幅度'>。
subplot(2,1,2>。
Y=fft(y>。
plot(abs(Y>>。
title('原始信号频谱'>。
xlabel('时间'>。
ylabel('幅度'>。
结果:
(2)对语音信号以不同采样频率进行重采样,回放并与原始信号进行比较<如原语音信号采样频率为16KHz,对其进行8KHz,4KHz的重采样):
[y,fs]=wavread('1.wav'>。
sound(y,fs>。
pause(1>
subplot(3,2,1>。
plot(y>。
title('原始信号波形(16k>'>。
xlabel('时间'>。
ylabel('幅度'>。
subplot(3,2,2>。
Y=fft(y>。
plot(abs(Y>>。
title('原始信号频谱(16k>'>。
xlabel('时间'>。
ylabel('幅度'>。
y2=resample(y,1,2>。
sound(y2,fs/2>。
pause(1>
subplot(3,2,3>。
plot(y2>。
title('原始信号波形(8k>'>。
xlabel('时间'>。
ylabel('幅度'>。
subplot(3,2,4>。
Y2=fft(y2>。
plot(abs(Y2>>。
title('原始信号频谱(8k>'>。
xlabel('时间'>。
ylabel('幅度'>。
y3=resample(y,1,4>。
sound(y3,fs/4>。
pause(1>
subplot(3,2,5>。
plot(y3>。
title('原始信号波形(4k>'>。
xlabel('时间'>。
ylabel('幅度'>。
subplot(3,2,6>。
Y3=fft(y3>。
plot(abs(Y3>>。
title('原始信号频谱(4k>'>。
xlabel('时间'>。
ylabel('幅度'>。
分析:
(3)对语音信号加入干扰噪声0.02*cos(1000*t>,对语音信号进行回放<利用sound函数),感觉加噪前后声音的变化。
对其做FFT,进行频谱分析,比较加噪前后语音信号的波形及频谱:
[y,fs]=wavread('1.wav'>。
sound(y,fs>。
n=0:
(length(y>-1>。
t=0.01*n。
noise=0.02*cos(1000*t>。
Si=y+noise'。
pause(1>
sound(Si,fs>。
subplot(2,1,1>。
plot(Si>。
title('加噪语音信号时域波形'>。
xlabel('时间'>。
ylabel('幅度'>。
subplot(2,1,2>。
S=fft(Si>。
plot(abs(S>>。
title('加噪语音信号频谱波形'>。
xlabel('时间'>。
ylabel('幅度'>。
分析:
(4)设计合适的数字滤波器,绘制所设计滤波器的幅频和相频特性,并对带噪语音信号进行滤波,对滤波后的语音信号进行FFT频谱分析:
[x,fs]=wavread('1.wav'>。
sound(x,fs>。
pause(1>
n=0:
(length(y>-1>。
t=0.01*n。
noise=0.02*cos(1000*t>。
y=x+noise'。
sound(y,fs>。
pause(1>
k=0:
N-1。
w=(2*pi/N>*k。
f=w*fs/(2*pi>。
subplot(2,2,1>
plot(y>
title('滤波前的时域波形'>
subplot(2,2,2>
Y=fft(y>。
plot(abs(Y>>
title('滤波前的频域波形'>
wpd=2*pi*50/1000。
wsd=2*pi*70/1000。
%确定截止频率
Btd=wsd-wpd。
%计算过渡带宽
wcd=(wsd+wpd>/2/pi。
%计算3db截止频率
Md=ceil(6.6*pi/Btd>。
hnd=fir1(Md,wcd>。
yyd=filter(hnd,1,y>。
sound(yyd,fs>。
pause(1>
subplot(2,2,3>
plot(yyd>
title('滤波后的时域波形'>
YYd=fft(yyd>。
subplot(2,2,4>
plot(abs(YYd>>
title('滤波后的频域波形'>
分析:
(5)对语音信号部分时域参数进行提取:
短时平均幅度:
[x,fs]=wavread('1.wav'>。
len=500。
inc=500。
fx=fra(len,inc,x>。
N=size(fx,1>。
Mn=zeros(1,N>。
forn=1:
N。
xn=fx(n,:
>。
xn=abs(xn>。
mn=sum(xn>。
Mn(1,n>=mn。
end
plot(Mn>,title('短时平均幅度'>。
短时平均过零率:
[x,fs]=wavread('1.wav'>。
len=500。
inc=500。
fx=fra(len,inc,x>。
N=size(fx,1>。
Zn=zeros(1,N>。
forn=1:
N
xn=fx(n,:
>。
zn=zeros(1,len-1>。
form=1:
len-1
zn_m=sign(xn(m+1>>-sign(xn(m>>。
zn_m=(1/2>*abs(zn_m>。
zn(1,m>=zn_m。
end
Zn(1,n>=sum(zn>。
end
plot(Zn>,title('短时平均过零率'>。
短时自相关函数:
[x,fs]=wavread('1.wav'>。
len=500。
inc=500。
fx=fra(len,inc,x>。
N=size(fx,1>。
Rn=zeros(1,N>。
forn=1:
N
k=n。
xn=fx(n,:
>。
xn1=[fx(k+1:
len>,zeros(1,k>]。
xn2=xn.*xn1。
Rn(k>=sum(xn2>。
end
plot(Rn>,title('短时自相关函数'>。
短时平均能量:
[x,fs]=wavread('1.wav'>。
len=500。
inc=500。
fx=fra(len,inc,x>。
N=size(fx,1>。
En=zeros(1,N>。
forn=1:
N。
xn=fx(n,:
>。
xn=abs(xn>。
energy=sum(xn.^2>。
En(1,n>=energy。
end
plot(En>,title('短时平均能量'>。
分析:
(6)设计图形用户界面GUI<实现以上功能):
functionvarargout=guide_all(varargin>
gui_Singleton=1。
gui_State=struct('gui_Name',mfilename,...
'gui_Singleton',gui_Singleton,...
'gui_OpeningFcn',@guide_all_OpeningFcn,...
'gui_OutputFcn',@guide_all_OutputFcn,...
'gui_LayoutFcn',[],...
'gui_Callback',[]>
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语音 信号 处理 matlab