语音信号处理王耀辉.docx
- 文档编号:12766788
- 上传时间:2023-04-22
- 格式:DOCX
- 页数:38
- 大小:147.90KB
语音信号处理王耀辉.docx
《语音信号处理王耀辉.docx》由会员分享,可在线阅读,更多相关《语音信号处理王耀辉.docx(38页珍藏版)》请在冰豆网上搜索。
语音信号处理王耀辉
学号:
课程设计
题目
基于MATLAB的基本运算和语音信号的处理
学院
信息工程学院
专业
通信工程
班级
通信1304
姓名
王耀辉
指导教师
江雪梅
2016年1月9日
课程设计任务书
学生姓名:
王耀辉专业班级:
通信1304
指导教师:
江雪梅工作单位:
信息工程学院
题目:
基于MATLAB的基本运算和语音信号的处理
初始条件:
Matlab应用软件
基本运算函数
Windows自带的录音功能
要求完成的主要任务:
(包括课程设计工作量及其技术要求,以及说明书撰写等具体要求)
1.必做题
(1)极限的计算、微分的计算、积分的计算、级数的计算、求解代数方程、求解常微分方程;
(2)矩阵的最大值、最小值、均值、方差、转置、逆、行列式、特征值的计算、矩阵的相乘、右除、左除、幂运算
(3)多项式加减乘除运算、多项式求导、求根和求值运算、多项式的部分分式展开、多项式的拟合、插值运算。
2.选做题
(1)完成语音信号的采集,利用windows自带的录音机或其他软件,录制一段语音,时间在1s以内,并对信号进行采样,画出采样信号的时域和频域波形。
(2)要求用窗函数法和双线性变换法设计以下三种数字滤波器,其性能指标下
a.低通滤波器性能指标fb=1000hz,fc=1200hz,最大衰减As=100db,最小衰减Ap=1db;
b.高通滤波器性能指标fs=4800hz,fb=5000hz,最大衰减As=100db,最小衰减Ap=1db;
c.带通滤波器性能指标fb1=1200hz,fb2=3000hz,fc1=1000hz,fc2=3200hz,最大衰减As=100db,最小衰减Ap=1db;
(3)用设计好滤波器的对语音信号进行滤波处理,画出处理后的时域和频域波形。
(4)对滤波前后的语音信号频谱进行对比,并对设计结果进行分析。
时间安排:
2016.1.1安排任务,分组。
2016.1.2-1.8设计仿真,撰写报告。
2.16.1.9完成设计,提交报告,答辩。
指导教师签名:
年月日
系主任(或责任教师)签名:
年月日
摘要
MATLAB是一种用于科学工程计算的高级语言,其基本的数据单位是矩阵,它的命令表达式与数学、工程中常用的习惯表达形式十分相似;MATLAB高效方便的矩阵和数组运算,使之在数字信号处理、建模、系统识别、自动控制、优化等领域的问题时,显得十分简洁、高交,具有其他高级语言不可比拟的优势;其典型应用包括以下几个方面:
数学计算、算法设计、建模与仿真、数据分析与可视化、科学及工程绘图和应用开发;
语音信号处理是研究用数字信号处理技术和语音学知识对语音信号进行处理的新兴的学科,是目前发展最为迅速的信息科学研究领域的核心技术之一。
通过语音传递信息是人类最重要、最有效、最常用和最方便的交换信息形式。
本设计针对现在大部分语音处理软件内容繁多、操作不便等问题,采用MATLAB7.0综合运用GUI界面设计、各种函数调用等来实现语音信号的变频、变幅、傅里叶变换及滤波,程序界面简练,操作简便,具有一定的实际应用意义。
关键字:
Matlab;基本运算;滤波;语音信号处理;
Abstract
MATLABisausedinscientificengineeringcalculationlanguages,anditsbasicdataunitismatrix,itcommandsexpressionandmathematics,engineeringinthehabitofcommonlyusedexpressionisverysimilartoform;MATLABeffectiveconvenientmatrixandarrayofoperation,makeindigitalsignalprocessing,modeling,systemidentification,automaticcontrolandoptimization,etc,isveryconcise,highpay,withotherseniorlanguageincomparableadvantages;Itstypicalapplicationsincludethefollowingaspects:
mathematicalcalculation,algorithmdesignandmodelingandsimulation,dataanalysisandvisualization,scienceandengineeringdrawingandapplicationdevelopment;
Thespeechsignalprocessingisusingdigitalsignalprocessingtechnologyandknowledgeofphoneticsthespeechsignalprocessingnewdiscipline,isthemostrapiddevelopmentoftheinformationscienceresearchinthefieldofcoretechnicalone.Throughthespeechinformationisthemostimportantandthemosteffectivehuman,themostcommonandmostconvenientexchangeinformationform.
Thisdesignfornowmostspeechprocessingvariouscontent,operatingsoftwareinconvenienceof,useMATLAB7.0comprehensiveuseofGUIinterfacedesign,allsortsoffunctioncalls,torealizethespeechsignalfrequencyconversion,derrickingandFouriertransformandfilter,andtheprograminterfaceconcise,simpleoperation,andhascertainactualapplicationsignificance.
目录
摘要I
AbstractII
1MATLAB的基本运算1
1.1基本微积分运算1
1.1.1极限值的计算1
1.1.2微分的计算1
1.1.3积分的计算1
1.1.4级数的计算2
1.1.5求解代数方程2
1.1.6求解常微分方程3
1.2矩阵的基本运算3
1.2.1矩阵最大值3
1.2.2矩阵最小值4
1.2.3矩阵的均值4
1.2.4矩阵的方差4
1.2.5矩阵的转置5
1.2.6矩阵的逆矩阵5
1.2.7矩阵的行列式6
1.2.8矩阵特征值的计算6
1.2.9矩阵的相乘7
1.2.10矩阵的左除和右除8
1.2.11矩阵的幂运算9
1.3多项式的四则运算9
1.3.1多项式加减乘除运算9
1.3.2多项式求导、求根和求值运算10
1.3.3多项式的部分分式展开11
1.3.4多项式的拟合、插值运算12
2基于MATLAB的语音信号处理14
2.1设计原理14
2.1.1采样14
2.1.2时域信号的FFT分析方法15
2.1.3数字滤波器15
2.2设计方案与运行结果16
2.2.1语音信号的读取16
2.2.2低通滤波器17
2.2.3高通滤波器21
2.2.4带通滤波器24
3小结与体会28
参考文献29
1MATLAB的基本运算
1.1基本微积分运算
1.1.1极限值的计算
MATLAB中极限函数limit格式如下:
limit(F,x,a);limit(F,a);limit(F);limit(F,x,a,'right');limit(F,x,a,'left')
其中F表示的是函数式,x表示求极限的变量,a表示的是变量取的值,left或right表示是取左极限还是右极限。
例:
求
示例程序如下:
symsxy
limit(limit(x^4+cos(y)+100,x,3),y,0)
计算结果:
ans=182
1.1.2微分的计算
MATLAB中微分函数diff格式如下:
Y=diff(X);Y=diff(X,n);Y=diff(X,n,dim)
其中X表示待微分的变量,n表示n次微分,第三式表示沿着定维dim的n阶微分。
例:
求cos(4*x+3)+x^4的微分;
示例程序如下:
symsxydy
y=cos(4*x+3)+x^4;
dy=diff(y)
计算结果:
dy=4*x^3-4*sin(4*x+3)
1.1.3积分的计算
MATLAB中积分常用函数为int,格式如下:
int(f,x,a,b)
其中f表示待积分的函数,x表示积分变量,而a,b则分别表示积分起始终止点。
例:
求下列积分
示例程序如下:
symsx
int(x^2+1,-1,1)
计算结果:
ans=8/3
1.1.4级数的计算
MATLAB中级数常用函数为symsum,格式如下:
r=symsum(s);r=symsum(s,v);r=symsum(s,a,b);r=symsum(s,v,a,b)
函数表达的意义是表达式s关于变量v从a到b求和。
例:
计算级数的值,
示例程序如下:
symsxkn
s1=1/(k+1);
s2=symsum(s1,1,9)
计算结果:
S2=4861/2520
1.1.5求解代数方程
代数方程分为很多种,有简单有复杂,方法也有很多。
一般多项式方程的根可为实数,也可为复数,可用MATLAB符号工具箱中的solve()函数,MATLAB中求解代数方程常用函数solve格式如下:
[x,…]=solve(eqn1,eqn2,…,eqnn,’x,…’)
其中eqn表示的是式子,x等表示的是变量。
例:
求解方程x^2+5x+6=0
示例程序如下:
symsx
[x]=solve(x^2+5*x+6==0,'x')
计算结果:
X=-3,-2
1.1.6求解常微分方程
未知的函数以及它的某些阶的导数连同自变量都由一已知方程联系在一起的方程称为微分方程。
如果未知函数是一元函数,称为常微分方程。
MATLAB中主要用dsolve求符号解析解。
dsolve的基本格式是:
s=dsolve(‘方程1’,‘方程2’,…,’初始条件1’,’初始条件2’…,’自变量’)
例:
求解微分方程y′+3y=0,y(0)=2求解析解。
示例程序如下:
symsxy
r=dsolve('Dy+3*y=0','y(0)=2','x')
计算结果:
r=2*exp(-3*x)
1.2矩阵的基本运算
1.2.1矩阵最大值
MATLAB中max函数可以表示求每一列的最大值,那么经过分析可以知道,先求出每一列的最大值然后求出这些最大值里面的最大值,下面以A矩阵为例。
示例程序如下:
A=[3-97;365;7215]
y=max(A)
X=max(y)
运行结果如下:
y=7615
x=15
1.2.2矩阵最小值
与求最大值类似,MATLAB中min函数可以表示求每一列的最小值,那么经过分析可以知道,先求出每一列的最小值然后求出这些最小值里面的最小值,下面以A矩阵为例
A=[3-97;365;7215]
y=min(A)
X=min(y)
运行结果如下:
y=3-95
x=-9
1.2.3矩阵的均值
MATLAB中求解矩阵均值的函数是mean,它的具体用法如下:
mean(A,1)表示对列取平均,mean(A,2)表示对行取平均,mean(A)则默认为mean(A,1)。
下面以矩阵A分别举例,程序示例如下:
A=[2-91;365;725]
y=mean(A,1)
x=mean(A,2)
运行结果:
y=4-0.33333.667
x=-2
4.6667
4.6667
1.2.4矩阵的方差
MATLAB中求解矩阵方差的函数是var,它的常用格式是V=var(X),如果X是一个矩阵,var(X)返回一个包含矩阵X每一列方差的行向量。
下面还是以矩阵A来示例,程序如下:
A=[2-91;365;725]
d=var(A)
X=var(d)
计算结果:
d=760.33335.3333
x=978.7037
1.2.5矩阵的转置
矩阵的一个重要的运算是转置,如果A是一个实数矩阵,那么它被转置时,第1行变成第1列,第2行变成第2列,依此类推,一个m×n矩阵变为一个n×m矩阵。
如果矩阵是方阵,那么这个矩阵在主对角线反映出来。
MATLAB中求转置的函数是A’,以A为例,编程如下:
A=[2-91;365;725]
a=A'
计算结果:
A=
2-91
365
725
a=
237
-962
155
1.2.6矩阵的逆矩阵
实际中求矩阵的逆跟行列式均要求矩阵是方阵,MATLAB中求逆的函数是inv,格式为Y=inv(X)。
下面仍以矩阵A为例来编程示例,如下:
A=[2-91;365;725]
y=inv(A)
运行结果如下:
A=
2-91
365
725
y=
-0.1136-0.2670.2898
-0.1136-0.0170.0398
0.20450.3807-0.2216
1.2.7矩阵的行列式
在MATLAB中det用于求行列式。
以矩阵A为例,编程如下
A=[2-91;365;725]
y=det(A)
运行结果如下:
A=
2-91
365
725
y=-176
1.2.8矩阵特征值的计算
矩阵的特征值的求解,就是找到方程组的解:
其中λ是一个标量,x是一个长度为n的列向量。
标量λ是A的特征值,x是相对应的特征向量。
对于实数矩阵A来说,特征值和特征向量可能是复数。
一个n×n的矩阵有n个特征值,表示为
。
求矩阵的特征值和特征向量可用eig函数。
Eig(A)求包含矩阵A的特征值的向量。
[V,D]=eig(A)产生一个矩阵A的特征值在对角线上的对角矩阵D和矩阵
V,它的列是相应的特征向量,满足AV=VD,下面以矩阵A为例来演示。
编程如下:
A=[210;131;012]
[V,D]=eig(A)
计算结果:
A=
210
131
012
V=
0.5774-0.70710.4082
-0.577400.8165
-0.57740.70710.4082
D=
100
020
004
1.2.9矩阵的相乘
假定有两个矩阵A和B,若A为m×n矩阵,B为n×p矩阵,则C=A×B为m×p矩阵。
元素
是A的第i行和B的第j列的点积。
对于方阵,也定义了积BA,但其结果通常与AB不同。
MATLAB中求矩阵的乘积直接用符号*即可,下面以A、B矩阵为例来分别演示A*B与B*A区别。
示例程序如下:
A=[2-91;365;725]
B=[125;935;682]
Y=A*B
X=B*A
计算结果:
Y=
-73-15-33
876455
556055
X=
431336
62-5349
50-256
1.2.10矩阵的左除和右除
在MATLAB中,有两个矩阵除法的符号,左除“\”和右除“/”。
如果A是一个非奇异方阵,那么A\B和B/A对应A的逆与B的左乘和右乘,即分别等价于命令inv(A)*B和B*inv(A)。
可是,MATLAB执行它们时是不同的,且在MATLAB中求解一个系统用左除比用逆和乘法所需的运算次数要少。
令X=A\B,Y=B/A,下面仍然以A、B为例来演示。
示例程序如下:
A=[2-91;365;725]
B=[125;935;682]
X=A\B
Y=B/A
计算结果:
X=
-0.77841.2898-1.3239
-0.02840.0398-0.5739
2.3011-0.22162.4830
Y=
0.68181.6023-0.7386
-0.3409-0.55111.6193
-1.1818-0.97731.6136
1.2.11矩阵的幂运算
对于二维方阵,A的p次乘方可以用A^p实现。
如果p是一个正整数,那么这个幂可以由许多矩阵乘法运算定义。
对于p=0,得到与A维数相同的同一个矩阵;当p<0时,如果A-1存在,可定义A^p,它是与inv(A)^(-p)相同。
以矩阵A为例,分别编程实例如下:
A=[211;325;525]
A0=A^3
A1=A.^3
计算结果:
A0=
10248102
315147312
339159336
A1=
811
278125
1258125
1.3多项式的四则运算
1.3.1多项式加减乘除运算
多项式的四则运算就是包括加减乘除,其中加减运算可以直接用+、-来运算,它们的运算规则中注意要满足向量的长度相同,而乘除就得用函数了,其中乘法的计算函数是conv,它本来是卷积的意思,同时它也符合多项式函数的运算规则,除法运算是相乘的逆运算,但会有余子式。
下面以A,B为例来进行四则运算。
示例编程如下:
a=[5,1,8,18];
b=[4,1,32,2];
x=a+b
y=a-b
z=conv(a,b)
[q,r]=deconv(a,b)
计算结果:
X=924020
Y=10-2416
Z=20919312227659236
q=1.25
r=0-0.25-3215.5
1.3.2多项式求导、求根和求值运算
多项式的求导、求根、求值运算是多项式运算的又一大板块,其中多项式求导数的函数是polyder,调用格式是e=polyder(c),其中c表示的是待求导的函数式,然后求根运算的函数是roots或poly,其中roots是根据函数求多项式的根,它的调用格式是h=roots(c),c代表待求根的函数式,然后求值运算的函数是polyval,将多项式的自变量赋予值z,则调用格式是j=polyval(f,z),表示当变量是z时,函数f的结果。
下面编程演示。
示例编程如下:
a=[29165]
x=polyder(a)%求函数a的导数
y=roots(a)%求函数a的根
z=polyval(a,4)%当变量值为4时,函数a的值
计算结果:
x=61816
y=
-2.0545+1.4739i
-2.0545-1.4639i
-0.3910
z=341
1.3.3多项式的部分分式展开
函数residue可以将多项式之比用部分分式展开,也可以将一个部分分式表示为多项式之比。
其调用格式如下:
[r,p,k]=residue(a,b)返回多项式之比a/b的部分分式展开,参照下面公式。
示例程序如下:
a=[2-4105];
b=[61129];
[r,p,k]=residue(a,b)%返回多项式之比a/b的部分分式展开
计算结果:
r=
-0.2595-0.3708i
-0.2595+0.3708i
-0.2033
p=
0.2410+1.5015i
0.2410-1.5015i
-0.6486
k=
0.3333
1.3.4多项式的拟合、插值运算
在MATLAB中指令polyfit用于求数据的拟合多项式。
可以通过polyval指令给求得的多项式赋值,数值化后就可以通过数值画出图形。
这种方法可以用于对一些数据的预测。
调用函数polyfit常用格式为p=polyfit(x,y,n),x为变量,y为函数,n为阶数。
示例程序如下:
x=linspace(0,4*pi,100);%定义向量,从0到4派分为100份
y=5*sin(x+2);%定义函数
t=polyfit(x,y,7);%7次拟合
y1=polyval(t,x);%根据拟合的结果求多项式的值
subplot(2,1,1),plot(x,y,'ro',x,y1,'g--')%作图
s=polyfit(x,y,4);%4次拟合
y2=polyval(s,x);%根据拟合的结果求多项式的值
subplot(2,1,2),plot(x,y,'ro',x,y2,'g--')%作图
计算结果:
图1拟合效果图
由图可以知道高次拟合的效果要好一些
插值函数通常是分段的,插值数据通过给定的数据点x,y。
插值函数一般地可表示为yi=interpi(x,y,xi,’method’)其中i代表几维插值可取1、2,xi为插值范围内的任意点集的x坐标,yi是插值后对应数据点集的坐标,method为插值函数的类型选项,有linear为线性,也是缺省项,cubic和cubicspline为三次样条等三样。
例:
已知某矩形温箱中3×5个测试点上的温度,求全箱的温度分布。
给定:
wid=1:
5;dep=1:
3;tem=[6061666264;7962747866;7062697771]
要求计算沿宽度和深度细分网格:
di=1:
0.2:
3;wi=1:
0.2:
5;交点温度。
示例程序如下:
wid=1:
5;dep=1:
3;
tem=[6061666264;7962747866;7062697771];
di=1:
0.2:
3;wi=1:
0.2:
5;
tc=interp2(wid,dep,tem,wi,di','cubic');%求温度,di必须变成列向量
mesh(wi,di,tc)%画三维图
计算结果:
图2插值效果图
2基于MATLAB的语音信号处理
2.1设计原理
语音信号是基于时间轴上的一维数字信号,它带着各种信息。
在语音编码、语音合成、语音识别和语音增强等语音处理中无一例外需要提取语音中的各种信息。
语
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语音 信号 处理 王耀辉