语音信号分析课程设计报告-语音信号处理系统设计_第1页
语音信号分析课程设计报告-语音信号处理系统设计_第2页
语音信号分析课程设计报告-语音信号处理系统设计_第3页
语音信号分析课程设计报告-语音信号处理系统设计_第4页
语音信号分析课程设计报告-语音信号处理系统设计_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、信号与线性系统课程设计报告课题三 语音信号处理系统设计班级:姓名:学号:成绩:指导教师:日期:目 录摘要2关键词21课程设计的目的、意义32设计任务及技术指标33 设计方案论证33.1 设计理论依据33.1.1 采样定理33.1.2 采样频率33.1.3 采样位数与采样频率43.2 语音信号的分析及处理方法43.2.1 语音的录入与打开43.2.2 时域信号的fft分析43.2.3 滤波器设计53.2.4 iir滤波器与fir滤波器的性能比较73.2.5语音信号特征参数提取74 设计内容84.1语音信号分析84.1.1 原始语音信号分析84.1.2对原始信号重采样并回放94.1.3对原始信号加

2、入干扰噪声并分析114.1.4滤波器设计及其特性分析124.1.5对带噪信号滤波并分析134.2 图形用户界面154.2.1图形用户界面概念154.2.2图形用户界面设计154.2.3图形用户界面制作154.2.4图形用户界面的设计程序164.3 对语音信号部分时域参数计算234.3.1对语音信号进行分帧234.3.2计算语音信号的短时能量244.3.3计算语音信号的短时平均过零率254.3.4计算语音信号的短时自相关函数265 实验结果与分析276 总结28参考文献28课题三 语音信号处理系统设计摘要:数字信号处理是将信号以数字方式表示并处理的理论和技术。数字信号处理与模拟信号处理是信号处理

3、的子集。数字信号处理的目的是对真实世界的连续模拟信号进行测量或滤波。因此在进行数字信号处理之前需要将信号从模拟域转换到数字域,这通常通过模数转换器实现。而数字信号处理的输出经常也要变换到模拟域,这是通过数模转换器实现的。数字信号处理的算法需要利用计算机或专用处理设备如数字信号处理器(dsp)和专用集成电路(asic)等。数字信号处理技术及设备具有灵活、精确、抗干扰强、设备尺寸小、造价低、速度快等突出优点,这些都是模拟信号处理技术与设备所无法比拟的。数字信号处理的核心算法是离散傅立叶变换(dft),是dft使信号在数字域和频域都实现了离散化,从而可以用通用计算机处理离散信号。而使数字信号处理从理

4、论走向实用的是快速傅立叶变换(fft),fft的出现大大减少了dft的运算量,使实时的数字信号处理成为可能、极大促进了该学科的发展。matlab是矩阵实验室(matrix laboratory)的简称,和mathematica、maple并称为三大数学软件。它在数学类科技应用软件中在数值计算方面首屈一指。matlab可以进行矩阵运算、绘制函数和数据、实现算法、创建用户界面、连接其他编程语言的程序等,主要应用于工程计算、控制设计、信号处理与通讯、图像处理、信号检测、金融建模设计与分析等领域。matlab的基本数据单位是矩阵,它的指令表达式与数学、工程中常用的形式十分相似,故用matlab来解算问

5、题要比用c,fortran等语言完相同的事情简捷得多,并且mathwork也吸收了像maple等软件的优点,使matlab成为一个强大的数学软件。在新的版本中也加入了对c,fortran,c+ ,java的支持。可以直接调用,用户也可以将自己编写的实用程序导入到matlab函数库中方便自己以后调用,此外许多的matlab爱好者都编写了一些经典的程序,用户可以直接进行下载就可以用。关键词:语音信号,matlab,滤波,gui,时域参数1课程设计的目的、意义 本设计课题主要研究语音信号初步分析的软件实现方法、滤波器的设计及应用。通过完成本课题的设计,拟主要达到以下几个目的:(1)了解matlab软

6、件的特点和使用方法。(2)掌握利用matlab分析信号和系统的时域、频域特性的方法;(3)掌握数字滤波器的设计方法及应用。(4)了解语音信号的特性及分析方法。(5)通过本课题的设计,培养学生运用所学知识分析和解决实际问题的能力。2设计任务及技术指标设计一个简单的语音信号分析系统,实现对语音信号时域波形显示、进行频谱分析,利用滤波器滤除噪声、对语音信号的参数进行提取分析等功能。采用matlab设计语言信号分析相关程序,并且利用gui设计图形用户界面。具体任务是:(1)采集语音信号。(2)对原始语音信号加入干扰噪声,对原始语音信号及带噪语音信号进行时频域分析。(3)针对语音信号频谱及噪声频率,设计

7、合适的数字滤波器滤除噪声。(4)对噪声滤除前后的语音进行时频域分析。(5)对语音信号进行重采样,回放并与原始信号进行比较。(6)对语音信号部分时域参数进行提取。(7)设计图形用户界面(实现以上功能)。3 设计方案论证3.1 设计理论依据3.1.1 采样定理在进行模拟/数字信号的转换过程中,当采样频率fs.max大于信号中,最高频率fmax的2倍时,即:fs.max=2fmax,则采样之后的数字信号完整地保留了原始信号中的信息,一般实际应用中保证采样频率为信号最高频率的510倍;采样定理又称奈奎斯特定理。 1924年奈奎斯特(nyquist)就推导出在理想低通信道的最高大码元传输速率的公式:理想

8、低通信道的最高大码元传输速率=2w*log2 n (其中w是理想低通信道的带宽,n是电平强度)3.1.2 采样频率采样频率是指计算机每秒钟采集多少个声音样本,是描述声音文件的音质、音调,衡量声卡、声音文件的质量标准。采样频率越高,即采样的间隔时间越短,则在单位时间内计算机得到的声音样本数据就越多,对声音波形的表示也越精确。采样频率与声音频率之间有一定的关系,根据奎斯特理论,只有采样频率高于声音信号最高频率的两倍时,才能把数字信号表示的声音还原成为原来的声音。这就是说采样频率是衡量声卡采集、记录和还原声音文件的质量标准。3.1.3 采样位数与采样频率采样位数即采样值或取样值,用来衡量声音波动变化

9、的参数,是指声卡在采集和播放声音文件时所使用数字声音信号的二进制位数。采样频率是指录音设备在一秒钟内对声音信号的采样次数,采样频率越高声音的还原就越真实越自然。采样位数和采样率对于音频接口来说是最为重要的两个指标,也是选择音频接口的两个重要标准。无论采样频率如何,理论上来说采样的位数决定了音频数据最大的力度范围。每增加一个采样位数相当于力度范围增加了6db。采样位数越多则捕捉到的信号越精确。对于采样率来说你可以想象它类似于一个照相机,44.1khz意味着音频流进入计算机时计算机每秒会对其拍照达441000次。显然采样率越高,计算机摄取的图片越多,对于原始音频的还原也越加精确。3.2 语音信号的

10、分析及处理方法3.2.1 语音的录入与打开在matlab中,y,fs,nbits=wavread(filename);用于读取语音,采样值放在向量y中,fs表示采样频率(hz),nbits表示采样位数。 sound(y,fs,bits); 用于对声音的回放。向量y则就代表了一个信号(也即一个复杂的“函数表达式”)也就是说可以像处理一个信号表达式一样处理这个声音信号。3.2.2 时域信号的fft分析fft即为快速傅氏变换,是离散傅氏变换的快速算法,它是根据离散傅氏变换的奇、偶、虚、实等特性,对离散傅立叶变换的算法进行改进获得的。在matlab的信号处理工具箱中函数fft和ifft用于快速傅立叶变

11、换和逆变换。函数fft用于序列快速傅立叶变换,其调用格式为y=fft(x),其中,x是序列,y是序列的fft,x可以为一向量或矩阵,若x为一向量,y是x的fft且和x相同长度;若x为一矩阵,则y是对矩阵的每一列向量进行fft。如果x长度是2的幂次方,函数fft执行高速基2fft算法,否则fft执行一种混合基的离散傅立叶变换算法,计算速度较慢。函数fft的另一种调用格式为y=fft(x,n),式中,x,y意义同前,n为正整数。函数执行n点的fft,若x为向量且长度小于n,则函数将x补零至长度n;若向量x的长度大于n,则函数截短x使之长度为n;若x 为矩阵,按相同方法对x进行处理。3.2.3 滤波

12、器设计1. 模拟滤波器设计原理(1)模拟巴特沃思滤波器原理 巴特沃斯滤波器具有单调下降的幅频特性:在小于截止频率的范围内,具有最平幅度的响应,而在后,幅频响应迅速下降。巴特沃思低通滤波器幅度平方函数为: 式中n为滤波器阶数,为3db截止角频率。将幅度平方函数写成s的函数: 该幅度平方函数有2n个等间隔分布在半径为的圆上的极点, 为了形成稳定的滤波器,取左半平面的n个极点构成,即: 为使设计统一,将频率归一化,得到归一化极点,相应的归一化系统函数为: 多项式形式为: (2)模拟切比雪夫滤波器原理 切比雪夫滤波器的幅频特性具有等波纹特性,有两种形式,在通带内等波纹、阻带单调的是i型滤波器,在通带内

13、单调、在阻带内等波纹的是ii滤波器。以i型滤波器为例。切比雪夫滤波器的幅度平方函数为: 为小于1的正数,表示通带内幅度波动的程度。p称为通带截止频率。令=/p,称为对p的归一化频率。cn(x)为n阶切比雪夫多项式。幅度平方函数的极点是分布在bp为长半轴,ap为短半轴的椭圆上的点。同样取s平面左半平面的极点构成: 进行归一化,得到: 其中 , 2. 模拟滤波器数字化原理将模拟滤波器转化为数字滤波器在工程上常用的有脉冲响应不变法和双线性变换法。脉冲响应不变法时一种时域上的转换方法,它是数字滤波器的单位取样响应在抽样点上等于模拟滤波器的单位冲激响应,即: 设模拟滤波器只有单阶极点,其系统函数为: 对

14、进行拉氏反变换得到,对进行等间隔抽样,得到,对进行z变换,得到数字滤波器系统函数: 这种方法s和z的关系是:。该方法的优点是频率坐标变换时线性的切数字滤波器的单位脉冲响应完全模仿模拟滤波器的单位冲激响应,时域特性逼近好;缺点是会产生频谱混叠现象,适合低通、带通滤波器的设计,不适合高通、带阻滤波器的设计。 双线性变换法为了克服频谱混叠现象,采用非线性频率压缩方法,将整个频率轴上的频率范围压缩到之间,再用转换到z平面上。这种方法s和z的关系是:。该方法克服了频谱混叠现象,但带来了频率坐标变换的非线性:,由模拟滤波器系统函数转换为数字滤波器系统函数公式为: 3.数字高通、带通、带阻滤波器的设计这些滤

15、波器可以借助于模拟滤波器的频率变换设计一个所需类型的模拟滤波器, 再通过双线性变换法将其转换成所需类型的数字滤波器。首先确定所需类型数字滤波器的技术指标;然后将数字滤波器技术指标按照公式转换成所需类型滤波器的模拟域技术指标;将所需类型滤波器的模拟域技术指标转换成低通滤波器技术指标;设计归一化模拟低通滤波器;去归一化得到模拟低通滤波器的系统函数;将模拟低通滤波器转换为所需类型的模拟滤波器;最后通过双线性变换法转换成所需类型的数字滤波器。3.2.4 iir滤波器与fir滤波器的性能比较fir:finite impulse response,有限冲击响应iir:infinite impulse re

16、sponse,无限冲击响应从性能上来说,iir滤波器传输函数的极点可位于单位圆内的任何地方,因此可用较低的阶数获得高的选择性,所用的存贮单元少,所以经济而效率高。但是这个高效率是以相位的非线性为代价的。选择性越好,则相位非线性越严重。相反,fir滤波器却可以得到严格的线性相位,然而由于fir滤波器传输函数的极点固定在原点,所以只能用较高的阶数达到高的选择性;对于同样的滤波器设计指标,fir滤波器所要求的阶数可以比iir滤波器高5-10倍,结果,成本较高,信号延时也较大;如果按相同的选择性和相同的线性要求来说,则iir滤波器就必须加全通网络进行相位较正,同样要大增加滤波器的节数和复杂性。整体来看

17、,iir滤波器达到同样效果阶数少,延迟小,但是有稳定性问题,非线性相位;fir滤波器没有稳定性问题,线性相位,但阶数多,延迟大。3.2.5语音信号特征参数提取1.短时能量及短时平均幅度(1)定义短时能量函数和短时平均幅度函数是基于语音信号幅度的变化。清音段幅度小,其能量集中于高频段;浊音段幅度较大,其能量集中于低频段。短时能量函数对信号电平值过于敏感。由于需要计算信号样值的平方和,在实际应用中(如定点设备)很容易溢出,所以可以用平均幅度函数来代替短时能量函数。短时能量函数定义: 短时平均幅度函数定义: (2)作用(a) 区分清/浊音:en、mn大,对应浊音; en、mn小,对应清音。(b) 在

18、信噪比高的情况下,能进行有声/无声判决:无声时,背景噪声的en、mn小;有声时,en、mn显著增大。判决时可设置一个门限。2.短时平均过零率(1)过零率定义:信号跨越横轴的情况。对于连续信号,观察语音时域波形通过横轴的情况;对于离散信号,相邻的采样值具有不同的代数符号,也就是样点改变符号的次数。 (2)短时平均过零率对于语音信号,是宽带非平稳信号,考察其短时平均过零率。 其中sgn.为符号函数, (3)作用(a) 区分清/浊音:浊音平均过零率低,集中在低频端;清音平均过零率高,集中在高频端。(b) 从背景噪声中找出是否有语音,以及语音的起点。3.短时自相关函数相关函数用于确定两个信号在时域内的

19、相似性。常用的物理量为自相关函数和互相关函数。当两个信号的互相关函数大时,则说明一个信号可能是另一个信号的时间滞后或提前;当互相关函数为0时,则两个信号完全不同。自相关函数用于研究信号本身,如波形的同步性和周期性。(1)自相关函数定义 (2)自相关函数特点(a) 当时域信号为周期信号时,自相关函数也是周期性函数,两者具有同样的周期。(b) rn(k)为偶函数, rn(k)rn(k)(c) rn(0)最大, rn(0) |rn(k)|, rn(0)=en,对于确定信号, rn(0)是信号能量;对于随机信号或周期信号, rn(0)是平均功率。(3)作用(a) 区分清/浊音。浊音语音的自相关函数具有

20、一定的周期性。清音语音的自相关函数不具有周期性,类似噪声。(b) 估计浊音语音信号的周期,即估计基音周期。4 设计内容4.1语音信号分析4.1.1 原始语音信号分析设计程序如下:x,fs,nbits=wavread(chi1.wav);fs=16000;sound(x,fs)x=fft(x);n=length(x);n=0:n-1;q=n*2*pi/n;figure(1)subplot(2,1,1);plot(x);title(original signal wave);subplot(2,1,2);plot(q/pi,abs(x); title(original signal spectru

21、m)结果如图:4.1.2对原始信号重采样并回放fs=8khz时的的程序:x,fs,nbits=wavread(chi1.wav);fs=8000;y=decimate(x,2);sound(y,fs)x=fft(y);n=length(y);n=0:n-1;q=n*2*pi/n;figure(9)subplot(2,1,1);plot(y);title(fs=8khz wave);subplot(2,1,2);plot(q/pi,abs(x); title(fs=8khz spectrum);结果如图:fs=4khz时的程序:x,fs,nbits=wavread(chi1.wav);y=dec

22、imate(x,4);fs=4000;sound(y,fs)x=fft(y);n=length(y);n=0:n-1;q=n*2*pi/n;figure(10)subplot(2,1,1);plot(y);title(fs=4khz wave);subplot(2,1,2);plot(q/pi,abs(x); title(fs=4khz spectrum);结果如图:4.1.3对原始信号加入干扰噪声并分析设计程序如下:x,fs,nbits=wavread(chi1.wav);fs=16000; n=0:length(x)-1;x1=x+0.01*cos(0.8*pi*n);sound(x1,f

23、s)x=fft(x1);n=length(x);n=0:n-1;q=n*2*pi/n;figure(2)subplot(2,1,1);plot(x1);title(signal wave with noise);subplot(2,1,2);plot(abs(x); title(signal spectrum with noise);结果如图:4.1.4滤波器设计及其特性分析设计程序如下:wp=0.7*pi;ws=0.75*pi;rp=1;rs=35;fs=16000;ts=1/fs;wp1=2/ts*tan(wp/2); %将模拟指标转换成数字指标ws1=2/ts*tan(ws/2); n,

24、wn=buttord(wp1,ws1,rp,rs,s); %选择滤波器的最小阶数z,p,k=buttap(n); %创建butterworth模拟滤波器bap,aap=zp2tf(z,p,k);b,a=lp2lp(bap,aap,wn); bz,az=bilinear(b,a,fs); %用双线性变换法实现模拟滤波器到数字滤波器的转换db,mag,pha,w=freqz_m(bz,az);figure(3)subplot(2,1,1)plot(w*fs/(2*pi),abs(mag)gridxlabel(hz)ylabel(fuzhi)title(butterworth)subplot(2,1

25、,2)plot(w*fs/(2*pi),pha)gridxlabel(hz)ylabel(fuzhi)title(butterworth)freqz_m函数的设计程序如下:function db,mag,pha,w=freqz_m(b,a);h,w=freqz(b,a,1000,whole); %在0-2*pi之间选取n个点计算频率响应h=(h(1:501); %频率响应 w=(w(1:501); %频率mag=abs(h); %响应幅度db=20*log10(mag+eps)/max(mag); %增益pha=angle(h); %相位 结果如图:4.1.5对带噪信号滤波并分析设计程序如下:

26、x,fs,nbits=wavread(chi1.wav);fs=16000; n=0:length(x)-1;x1=x+0.01*cos(0.8*pi*n);wp=0.7*pi;ws=0.75*pi;rp=1;rs=35;fs=16000;ts=1/fs;wp1=2/ts*tan(wp/2); %将模拟指标转换成数字指标ws1=2/ts*tan(ws/2); n,wn=buttord(wp1,ws1,rp,rs,s); %选择滤波器的最小阶数z,p,k=buttap(n); %创建butterworth模拟滤波器bap,aap=zp2tf(z,p,k);b,a=lp2lp(bap,aap,wn

27、); bz,az=bilinear(b,a,fs); %用双线性变换法实现模拟滤波器到数字滤波器的转换f1=filter(bz,az,x1);figure(4)subplot(2,1,1)plot(f1); %画出滤波后的时域图title(signal wave after filter);sound(f1,fs); %播放滤波后的信号f0=fft(f1);n=length(x);n=0:n-1;q=n*2*pi/n;subplot(2,1,2)f1=plot(q/pi,abs(f0); %画出滤波后的频谱图title(signal spectrum after filter)xlabel(h

28、z);ylabel(fuzhi);结果如图:42 图形用户界面4.2.1图形用户界面概念图形用户界面或图形用户接口(graphical user interface,gui)是指采用图形方式显示的计算机操作环境用户接口。与早期计算机使用的命令行界面相比,图形界面对于用户来说更为简便易用。guide是matlab提供的图形用户界面开发环境,提供了一系列用于创建图形用户界面的工具,从而简化界面布局和编程工作。4.2.2图形用户界面设计1gui设计模板在matlab主窗口中,选择file菜单中的new菜单项,再选择其中的gui命令,就会显示图形用户界面的设计模板。matlab为gui设计一共准备了4

29、种模板,分别是blank gui(默认) 、gui with uicontrols(带控件对象的gui模板) 、gui with axes and menu(带坐标轴与菜单的gui模板)与modal question dialog(带模式问话对话框的gui模板)。当用户选择不同的模板时,在gui设计模板界面的右边就会显示出与该模板对应的gui图形。2gui设计窗口在gui设计模板中选中一个模板,然后单击ok按钮,就会显示gui设计窗口。选择不同的gui设计模式时,在gui设计窗口中显示的结果是不一样的。gui设计窗口由菜单栏、工具栏、控件工具栏以及图形对象设计区等部分组成。gui设计窗口的菜单

30、栏有file、edit、view、layout、tools和help 6个菜单项,使用其中的命令可以完成图形用户界面的设计操作。3gui设计窗口的基本操作在gui设计窗口创建图形对象后,通过双击该对象,就会显示该对象的属性编辑器。例如,创建一个push button对象,并设计该对象的属性值。4.2.3 图形用户界面制作matlab中图形用户界面的制作有两种方法:m文件和guide,本设计采用guide的方法制作gui。1.新建一个空白gui模板:进入matlab程序界面以后执行filenewgui过程,即可进入2.选择空白模板选项条,单击ok,一个空白gui模板生成3.拖拉白色框的右下角调整

31、界面大小,现在就可以开始设计gui功能界面了。从左边控件框选择所需要的控件放置在gui面板中,然后对各个控件进行编辑,包括位置、大小、颜色、名称以及编写回调函数等。本设计主要用到按钮、文本框和文本标签,现分别介绍。4.按钮设计:按钮键又称命令按钮或按钮,是小的长方形屏幕对象,常常在对象本身标有文本。将鼠标指针移至对象,单击鼠标按钮执行由回调字符串所定义的动作。单击空间框左侧的push button按钮,在图形编辑框中确定其位置后单击鼠标左键即可放置现在开始编写回调函数,确定按钮功能。在按钮上单击鼠标右键,选择view- callbackscallback即可在m文件中找到该按钮的回调函数位置。

32、然后编写功能函数,本设计中该按钮的功能是绘制原始波形,那么只需要读取语音信号并画出波形。文本框设计:用户可通过键盘输入字符串,为程序提供参数。为使文本框能输入数据并使用,需在function edit1_callback(hobject, eventdata, handles)下编写如下程序:input = str2num(get(hobject,string); if (isempty(input) set(hobject,string,0)endguidata(hobject, handles);6.文本标签设计:显示固定字符串,只需双击文本标签,在string里添加文本即可。本次课程设计

33、的最终图形用户界面如下图所示:4.2.4图形用户界面的设计程序function varargout = system(varargin)gui_singleton = 1;gui_state = struct(gui_name, mfilename, . gui_singleton, gui_singleton, . gui_openingfcn, system_openingfcn, . gui_outputfcn, system_outputfcn, . gui_layoutfcn, , . gui_callback, );if nargin & ischar(varargin1) gui

34、_state.gui_callback = str2func(varargin1);endif nargout varargout1:nargout = gui_mainfcn(gui_state, varargin:);else gui_mainfcn(gui_state, varargin:);endfunction system_openingfcn(hobject, eventdata, handles, varargin)handles.output = hobject;guidata(hobject, handles);function varargout = system_out

35、putfcn(hobject, eventdata, handles) varargout1 = handles.output;%此部分实现原始语音信号的播放与分析function pushbutton1_callback(hobject, eventdata, handles)global sysx,fs,nbits=wavread(sys);fs=16000;sound(x,fs)x=fft(x);n=length(x);n=0:n-1;q=n*2*pi/n;subplot(2,2,2);plot(x);title(original signal wave);subplot(2,2,4);

36、plot(q/pi,abs(x); title(original signal spectrum)%此部分实现采样频率为8khz的语音信号的播放与分析function pushbutton2_callback(hobject, eventdata, handles)global sysx,fs,nbits=wavread(sys);fs=8000;y=decimate(x,2);sound(y,fs)x=fft(y);n=length(y);n=0:n-1;q=n*2*pi/n;figure(9)subplot(2,1,1);plot(y);title(fs=8khz信号波形);subplot

37、(2,1,2);plot(q/pi,abs(x); title(fs=8khz信号频谱);%此部分实现采样频率为4khz的语音信号的播放与分析function pushbutton3_callback(hobject, eventdata, handles)global sysx,fs,nbits=wavread(sys);y=decimate(x,4);fs=4000;sound(y,fs)x=fft(y);n=length(y);n=0:n-1;q=n*2*pi/n;figure(10)subplot(2,1,1);plot(y);title(fs=4khz wav);subplot(2,

38、1,2);plot(q/pi,abs(x); title(fs=4khz spectrum);%此部分实现对原始语音信号添加噪声并对加噪后的语音信号进行分析function pushbutton4_callback(hobject, eventdata, handles)global sysx,fs,nbits=wavread(sys);fs=16000; n=0:length(x)-1;x1=x+0.01*cos(0.8*pi*n);sound(x1,fs)x=fft(x1);n=length(x);n=0:n-1;q=n*2*pi/n;figure(2)subplot(2,1,1);plo

39、t(x1);title(signal wave with noise);subplot(2,1,2);plot(abs(x); title(signal spectrum with noise);%此部分是巴特沃斯滤波器的设计程序function pushbutton5_callback(hobject, eventdata, handles)global input1 input2 input3 input4wp=input1*pi;ws=input2*pi;rp=input3;rs=input4;fs=16000;ts=1/fs;wp1=2/ts*tan(wp/2); ws1=2/ts*t

40、an(ws/2); n,wn=buttord(wp1,ws1,rp,rs,s); z,p,k=buttap(n); bap,aap=zp2tf(z,p,k);b,a=lp2lp(bap,aap,wn); bz,az=bilinear(b,a,fs); db,mag,pha,w=freqz_m(bz,az);figure(3)subplot(2,1,1)plot(w*fs/(2*pi),abs(mag)gridxlabel(hz)ylabel(fuzhi)title(butterworth)subplot(2,1,2)plot(w*fs/(2*pi),pha)gridxlabel(hz)ylab

41、el(fuzhi)title(butterworth)%此部分是对加噪信号进行滤波并对滤波后的信号进行分析function pushbutton6_callback(hobject, eventdata, handles)global sysx,fs,nbits=wavread(sys);fs=16000; n=0:length(x)-1;x1=x+0.01*cos(0.8*pi*n);global input1 input2 input3 input4wp=input1*pi;ws=input2*pi;rp=input3;rs=input4;fs=16000;ts=1/fs;wp1=2/ts

42、*tan(wp/2); ws1=2/ts*tan(ws/2); n,wn=buttord(wp1,ws1,rp,rs,s); z,p,k=buttap(n); bap,aap=zp2tf(z,p,k);b,a=lp2lp(bap,aap,wn); bz,az=bilinear(b,a,fs); f1=filter(bz,az,x1);figure(4)subplot(2,1,1)plot(f1); %画出滤波后的时域图title(signal wave after filter);sound(f1,fs); %播放滤波后的信号f0=fft(f1);n=length(x);n=0:n-1;q=n

43、*2*pi/n;subplot(2,1,2)f1=plot(q/pi,abs(f0); %画出滤波后的频谱图title(signal spectrum after filter)xlabel(hz);ylabel(fuzhi);%此部分用于输入通带截止频率wpfunction edit1_callback(hobject, eventdata, handles)global input1input1 = str2num(get(hobject,string); if (isempty(input1) set(hobject,string,0)endguidata(hobject, handle

44、s);function edit1_createfcn(hobject, eventdata, handles)if ispc set(hobject,backgroundcolor,white);else set(hobject,backgroundcolor,get(0,defaultuicontrolbackgroundcolor);end%此部分用于输入阻带截止频率wsfunction edit2_callback(hobject, eventdata, handles)global input2input2 = str2num(get(hobject,string); if (ise

45、mpty(input2) set(hobject,string,0)endguidata(hobject, handles);function edit2_createfcn(hobject, eventdata, handles)if ispc set(hobject,backgroundcolor,white);else set(hobject,backgroundcolor,get(0,defaultuicontrolbackgroundcolor);end%此部分用于输入通带最小衰减rpfunction edit3_callback(hobject, eventdata, handle

46、s)global input3input3 = str2num(get(hobject,string); if (isempty(input3) set(hobject,string,0)endguidata(hobject, handles);function edit3_createfcn(hobject, eventdata, handles)if ispc set(hobject,backgroundcolor,white);else set(hobject,backgroundcolor,get(0,defaultuicontrolbackgroundcolor);end%此部分用于

47、输入阻带最小衰减rsfunction edit4_callback(hobject, eventdata, handles)global input4input4 = str2num(get(hobject,string); if (isempty(input4) set(hobject,string,0)endguidata(hobject, handles);function edit4_createfcn(hobject, eventdata, handles)if ispc set(hobject,backgroundcolor,white);else set(hobject,back

48、groundcolor,get(0,defaultuicontrolbackgroundcolor);end%此部分用于实现对任意语音信号的打开function pushbutton7_callback(hobject, eventdata, handles)filename,pathname = uigetfile(*.wav,select the m-file);global sys;sys=pathname,filename;%此部分由于对语音信号进行分帧function pushbutton8_callback(hobject, eventdata, handles)global sy

49、sx,fs,nbits=wavread(sys);fs=16000;len=400;inc=80;f=enframe(x,len,inc);figure(5)plot(f(20,:)%此部分用于计算语音信号的短时能量function pushbutton9_callback(hobject, eventdata, handles)global sysx,fs,nbits=wavread(sys);fs=16000;len=400;inc=80;f=enframe(x,len,inc);for i=1:196e(i)=0;endfor i=1:196 for j=1:400 e(i)=e(i)+

50、f(i,j)2; endendfigure(6) plot(e)%此部分用于计算语音信号的短时平均过零率function pushbutton10_callback(hobject, eventdata, handles)global sysx,fs,nbits=wavread(sys);fs=16000;len=400;inc=80;f=enframe(x,len,inc);for i=1:196z(i)=0;endfor i=1:196 for j=2:400 z(i)=0.5*(z(i)+abs(sgn(f(i,j)-sgn(f(i,j-1); endendfigure(7) plot(z)%此部分用于计算语音信号的短时自相关函数function pushbutton11_callback(hobject, eventdata, handles)global sysx,fs,nbits=wavread(sys);fs=16000;xn=x;rn=auto_correlation(xn);figure(8)plot(rn)4.3 对语音信号部分时域参数计算4.3.1对语音信号进行分帧设计程序如下:x,fs,nbits

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论