《数字信号处理B》课程项目实施报告_第1页
《数字信号处理B》课程项目实施报告_第2页
《数字信号处理B》课程项目实施报告_第3页
《数字信号处理B》课程项目实施报告_第4页
《数字信号处理B》课程项目实施报告_第5页
已阅读5页,还剩85页未读 继续免费阅读

下载本文档

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

文档简介

《数字信号处理B》课程项目实施报告费点陈翔宇张明星二零一五年十月二十二日2一、数字信号处理项目选题的内容及思路1、数字音效处理器的设计与要求 42、实现思路 4二、人机交互界面操控1、Matlab2014中GUI界面 42、本次项目制作的GUI界面简介 4三、8段数字均衡器的原理与实现方案1、数字均衡器的原理 52、数字均衡器的实现方案 63、数字均衡器的代码及分析 7 7(2)功能分析 9四、语音识别的工作原理与实现方案1、语音识别的工作原理 92、语音识别的实现方案 3、项目的设计过程 4、语音部分界面介绍 五、语音去噪1、语音去噪的原理 2、语音的实现方案 3、语音的代码及分析 1、问题与解决方案 32、总结和收获 七、分工情况 八、参考文献 九、完整代码及部分注释 4一、数字信号处理项目选题的内容及思路1、数字音效处理器的设计与要求设计一个数字音效处理器,能够实现语音信号的各种音效处理。小组选题内容:(1)输入语音信号源为实际环境采集语音;(2)至少实现3种音效处理功能(其中至少包括下述3种中的2种功能:a、8段数字均衡;b、项目组5人的语音识别;c、环境降噪;(3)用人机交互界面操控、扬声器/耳机输出音效。开始设计项目制作前,我们通过文献和网络,了解8段数字均衡器、语音识别环境降噪的原理,并确定实现的方案。我们先用Matlab设计三个界面分别为降噪界面、均衡器界面和语音识别界面。然后小组再分工编写各功能代码,并调试与检测代码的功能。完成代码编写后,把代码嵌入设计好的总GUI界面,最后调试和检验代码是否实现功能。二、人机交互界面简介Matlab中图形用户界面(GUI)是一种人与计算机通信的界面显示格式,允许用户使用鼠标等输入设备操纵屏幕上的图标或菜单选项,以选择命令、调用文件、启动程序或执行其它一些日常任务。与通过键盘输入文本或字符命令来完成例行任务的字符界面相比,图形用户界面有许多优点。图形用户界面由窗口、下拉菜单、对话框及其相应的控制机制构成,在各种新式应用程序中都是标准化的,即相同的操作总是以同样的方式来完成,在图形用户界面,用户看到和操作的都是图形对象,应用的是计算机图形学的技术。如图1所示,本次项目我们共实现了语音识别、语音降噪和语音均衡三部分功能,界面分别为图1中左上、左下和右半部分。录音函数以及图像显示模块适用于三个模块。5数字信号处理项目数字信号处理项目第9用成西:未教景王国平费点奇州字资明八段均衡器模块力期打开变用4第语音识别核块青色程小组成质面语挥整召身艾件降噪频块杠并文月确常并龄象首建员调育偿性蓬营皮系据习回空卷出三、8段数字均衡器的原理与实现方案均衡器,是一种可以分别调节各段频率成分信号放大量的设备,通过对各种不同频率的信号的调节来补偿扬声器和声场的缺陷,补偿和修饰各种声源及其它特殊作用,一般调音台上的均衡器仅能对高频、中频、低频三段频率电信号分别进行调节。在通信系统中,在系带系统中插入均衡器能够减小码间干扰的影响。数字均衡器是用数字信号处理方法来实现的频域或时域均衡器。本次项目制作就是利用MATLAB2014.a版本软件,实现八段数字均衡器数字均衡器的基本功能是调节各频段的信号强弱,为了满足该功能,在本次设计中应当具备下面一些基本功能:(1)WAV声音信号的录制,保存在本地PC内,便于后面读取;(2)WAV声音信号的读取,即从文件(.wav)读取音频信息;(3)八段数字均衡器设定,分8段频率区间,设置GUI界面滑动条的权值范围等;(4)滤波,包括生成低通、高通、带通、带阻的巴特沃斯、切比雪夫滤波器,并显示滤波器的频率特征曲线;6(6)播放,播放滤后音频信号并实时显示波形及频谱特性。2、数字均衡器的实现方案针对以上所述要求,本次项目制作我们小组采用了下图的思维:AI文录音FFT图2数字均衡器的模块划分具体的一些实施方法如下:(1)使用matlab的录音函数并写入本地PC。这里录音的采样频率尽量选取大一点,录音质量也会随之提高;(2)设计出对应八个频段的八个带通滤波器,各频率段对应的频率范围如下所示,20~100Hz(沉重)、100~200Hz(丰满)、200~500Hz(力度)、500~1KHz(明朗)、1K~2KHz(透亮)、2K~4KHz(尖锐)、4K~8KHz(清脆)、8K~16KHz;(3)对原始信号分八路用八个带通滤波器进行滤波;(4)将八个滤波器的滤波结果加权求和,权值的设计与均衡器的调节要求一致;(5)最后将求和结果进行输出,感觉均衡后的语音处理效果。其中第3步中各带通滤波器的输入信号均为原始信号,而不是“串联”地滤波。设原始输入信号为x(n),第i路的输出信号为yi(n),第i路的权值为ki,均衡器的输出信号为y(n),则有73、数字均衡器的代码及分析(1)均衡器GUI界面操作和主要代码如图3所示,即为本次项目八段均衡器的人机交互时GUI界面。操作步骤大致为:先进行录音,输入采样频率Fs和录音时间Time,确定好这俩个参数后即可录音生成.wav文件并保存在PC;然后点击“打开文件”按钮选择需要均衡的.wav四种滤波器的一种类型对信号进行滤波;根据需求调节八个滑动条,确定每个频段所需要均衡的权值大小;点击“选定”按钮,即可开始均衡,再点击“播放”按钮,便可以听到均衡后的语音效果。为了完善GUI界面的人性化特点,我们在界面中添加了“重置”按钮用于还原,方便操作。在界面的下方,我们设置了俩块用于显示均衡后语音信号的时域波形图和频谱图,用于分析均衡后信号的改变特征,同时我们还设置了“自动显示”按钮,方便及时观察每一次不同权值的均衡对应的时域波形图和频谱图的变化。主要代码和算法分析如下:handles.yy=zeros(size(handles.y));8ifget(handles.popufilter,'Value')==2[ba]=butter(order,2*fband%巴特沃斯数字滤波器butter(阶数,3db截止频率的归一化值);elseifget(handles.popufilter,'Value')==3%切比雪夫一型cheby1(阶数,通带最大衰减,通带截止频率归一化值);elseifget(handles.popufilter,'Value')==4[ba]=cheby2(order,20,2*fband(i:i+1)/handles.Fs);%切比雪夫二型cheby2(阶数,阻带最小衰减,通带截止频率归一化值);elseifget(handles.popufilter,'Value')==5[ba]=ellip(order,0.5,20,2*fband(i:i+1)/handles.%椭圆滤波器[b,a]=ellip(n,Rp,Rs,Wp)eval(sprintf('k=get(handles.band%d,"%从相应slider上获取k的值,eval执行括号内表达式,sprintf获得第i的slidey=(9^k-1)/8*filter(b,a,handles.y%对语音信号进行滤波在第i个频段上的频率进行相应增益。增益范围(0-10)handles.yy=handles.yy+y;%将滤波后的输出波形叠加程序中y=(9^k-1)/8*filter(b,a,handles.y)作用是加权以便下一句的求和,其中k是从滚动条中得到的参数,从0到2,但需要的权值是从0到10,令w为需要的权,即w∈[0,10],由于实际需要w为指数变化,故设为下式形式,三个点三个方程确定a,b,c。代入w=0,k=0;w=1,k=1;w=10,k=2解得a=1/8,b=9,c=-1。通过这种方式便可以实现前面第二部分方法实现中提及的主要功能(3)、(4)。9(2)功能分析FsFs44100Time(s)5开始录音八段均衡器模块打开文件选定dragonwav均衡后时域及频域图像处理后声音500040000◎自动显示处理后声音纤细沉重清脆20003000文件:播放尖锐重置4002图4数字均衡器的功能实现界面由图4可以看出,我们通过调节8个滑动条来间接调节我们所需权值,再对8个滤波器输出信号yi(n)累加求和进而能够得到均衡后的输出信号y(n)。y(n)的时域波形和频谱显示在GUI界面的下方,由图可见,100-200Hz、500-1kHz、1k-2kHz的权值都大于1,所以这几部分频段的语音信号都有所增强,和频谱图上的几个峰值恰好对应。选择“播放”可以听出声音明显变得尖锐起来。同时我们在制作过程以及测试环节中发现,大多数语音的高频分量较小,低频分量较大,配以相同的权值,可以发现低频分量远远大于高频分量,所以在图像显示环节中,我们只显示20-4000Hz的频段的分量大小,着重观察这一频段每次均衡后的各分量的改变。1、语音识别的工作原理语音识别技术就是通过机器识别和理解过程把语音信号转变为相应的文本或命令。语音识别系统通常假设语音信号是由一系列编码组成。输入的语音波形首先被转换为一组离散的参数矢量表示语音发声一组待识别的特征参数矢量(观察矢量),其中每个矢量时间间隔典型取值为10ms~20ms。识别器的作用是把输入的语音特征矢量映射为潜在的文字语音识别的基本功能是将现场录制的声音与语音码本进行比较,识别说话人是否在码本库中。本次设计中,具备下面基本功能:(1)WAV声音信号的录制,保存在本地PC内,便于后面读取;(2)WAV声音信号的读取,即从文件(.wav)读取音频信息;(3)点击训练码本将目录下的5个语音文件训练成vq码本;(4)选择要识别的语音文件,即可判断是否为码本库中的说话者2、语音识别的实现方案码本库码本库:说话人」的码本计算预处理:VQ图5语音识别方案(1)特征参数的提取对于特征参数的选取,我们使用MFCC的方法来提取。MFCC参数是基于人的听觉特性利用人听觉的屏蔽效应,在Mel标度频率域提取出来的倒谱特征参数。MFCC参数的提取过程如下:a、对输入的语音信号进行分帧。语音信号因为是准稳态信号,只有稳态的信息才能进行信号处理,所以要先分帧,每帧长度约20ms-30ms,在这一区间内把语音信号看作为稳态信号。“语音信号分帧进行小波变换”,就是把语音信号分帧后,对每一帧进行小波变换和处理。b、加窗N,然后作离散傅立叶变换,获得频谱分布信息。设语音信号的DFT为:其中式中x(n)为输入的语音信号,N表示傅立叶变换的点数(每帧的点数)c、再求频谱幅度的平方,得到能量谱。d、将能量谱通过一组Mel尺度的三角形滤波器组。图6Mel尺度三角滤波器组每个三角形对应一个带通/低通滤波器。图6是把多个滤波器的频谱画在一个图上了。我们定义一个有M个滤波器的滤波器组(滤波器的个数和临界带的个数相近),采用的滤波器为三角滤波器,中心频率为f(m),m=1,2,3,……,M(本系统取M=100)。确定一个声音的频率,则能够产生同时掩蔽的另外一个声音的频率范围称为“临界频带”通常认为,在20Hz到16kHz的音频范围内有24个临界频带。临界频带的单位叫Bark(巴克),其宽度定义如下:①1Bark=一个临界频带的宽度;②频率f<500Hz的情况下,1Bark=f/100;③f>500Hz的情语音信号频谱则一般为100Hz~7kHz的范围。e、计算每个滤波器输出的对数能量,下式其中Hm(k)为三角滤波器的频率响应。0≤m≤M-1f、经过离散弦变换(DCT)得到MFCC系数。MFCC系数个数N通常取20—30,常常不用0阶倒谱系数,因为它反映的是频谱能量,故在一般识别系统中,将称为能量系数,并不作为倒谱系数,本系统选取20阶倒谱系数。functionr=mfcc(s,fs)n=256;nbFrame=floor((1-n)/m)+1;%沿-方向取整fori=1:nforj=1:nbFrameM(i,j)=s(((j-1)*m)+i);%对矩阵M赋值h=hamming(n);%加hamming窗,以增加音框左端和右端的连续性=diag(h)*M;i=1:nbFrameframe(:,i)=fft(M2(:,i));%对信号进行快速傅里叶变换FFTt=n/2;tmax=1/fs;m=melfb(20,n,fs);%将上述线性频谱通过Mel频率滤波器组得到Mel频谱,下面在将其转化成对数频谱n2=1+floor(n/2);z=m*abs(frame(1n2,:)).^2;r=dct(log(z));%将上述对数频谱,经过离散余弦变换(DCT)变换到倒谱域,即可得到Mel倒谱系数(2)用矢量量化聚类法生成码本我们将每个待识的说话人看作是一个信源,用一个码本来表征。码本是从该说话人的训练序列中提取的MFCC特征矢量聚类而生成。只要训练的序列足够长,可认为这个码本有效地包含了说话人的个人特征,而与讲话的内容无关。本系统采用基于分裂的LBG的算法设计VQ(矢量量化)码本,X,(k=1,2,…,K)为训具体实现过程如下:a、取提取出来的所有帧的特征矢量的型心(均值)作为第一个码字矢量B1。b、将当前的码字矢量(B1)根据以下规则分裂,形成2m个码矢。其中m为从1变化到当前的码矢的码矢数,ε是分裂时的参数(此处ε=0.01)。形成初始码本。的码书,转e。否则,转下一步。Do=10000)。3.项目的设计过程音的mel倒谱系数,接着mfcc.m调用Melfb.m将能量谱通过一在Test.m函数文件中调用Disteu.m计算训练录音(提供vq码本)与测试录音(提供mfcc)mel倒谱系数的距离,即判断两声音是否为同一录音者提供。Disteu.m调用mfcc.m获取单个录音的mel倒谱系数。mfcc.m调用Melfb.m将能量谱通过一组Mel尺度的三角形滤波器组。%函数train%numberofcentroidsrequired码失数目fori=1:n%对数据库中的代码形成码本file=sprintf(%s(all(s==0,2),:)=[];%计算MFCC's提取特征特征,返回值是Mel倒谱系数,是一个log的dct得到的%训练VQ码本通过矢量量化,得到原说话人的VQ码本%函数testfile=sprintf(%s%d.wav,testdir,n);s(all(s==0,2),:)=[];v=mfcc(s,fs);%得到测试人语音的mel倒谱系数distmin=4.3;%阈值设置处t=0;d=disteu(v,code{1});%计算得到模板和要判断的声音之间的“距离”dist=sum(min(d,[],2))/size(d,1);%变换得到一个距离的量%测试阈值数量级msgc=sprintf(与模板语音信号的差值为:%10f',dist);ifdist<distmin%一个阈值,小于阈值,则就是这个人。ifk1==1msg1=sprintf('说话者为elseifk1==2msg1=sprintf(说话者为王国平);elseifk1==3msg1=sprintf('说话者为费点);elseifk1==4msg1=sprintf(说话者为陈翔宇);elseifk1==5msg1=sprintf(说话者为张明星);msg2=sprintf('说话者与模板语音信号不匹配,不符合要求!\n);ift>1msgbox(msgl);ift<1msgbox(msg2);4.语音部分界面介绍语音识别模块组员语音播放播放播放训练码本语音1图7语音识别GUI界面图7即为语音部分的GUI界面,首先我们小组每个人事先录好了时长8s,采用频率为44100Hz的语音信号作为样本信号,并且设置了“播放”按钮,播放样本语音。“训练码本”按钮,即将我们小组的样本语音生成各自的码本(由16个码失组成)。生成码本后,我们用了小组成员另外录的时长8s,采样频率为44100Hz的语音信号作为测试信号。测试过程中出现了比较多的问题,最突出的就是一个成员的声音可能会匹配到另一个成员(不同人的测试信号与样本信号算出的成对欧氏距离的两个矩阵的列之间的距离比他自己的测试信号和样本信号算出来的距离小)。在录音测试的过程中,由于现场环境的影响,前后录制的语音与自己的样本信号之间测出的距离都会发生变化,阈值不断在4.0~5.0之间修改,经过几次的重复试验,最终将阈值设定在了4.3,实现了每个小组成员的测试信号只和自己的样本信号匹配(自己测试信号与样本信号算出来的距离最小且小于阈值)。五、语音去噪选择一个wav语音文件,利用MATLAB中的内置噪声函数产生噪声加入到语音信号中,模仿语音信号被污染,并对其进行频谱分析;设计数字滤波器并对被噪声污染的语音信号进行滤波,分析滤波后信号的时域和频域特征,回放语音信号。其流程图如图8所示:噪声噪声语音信号噪声+语音信号滤波降噪后语音图8语音降噪流程图2、语音降噪的具体实现(1)利用matlab中的函数uigetfile打开PC中已有wav语音文件;(2)使用audioread函数将文件以矩阵形式保存到全局变量music中;(3)分别用高斯白噪声awgn、调频函数modulate、加入正弦信号对语音信号加噪;(4)选择相适应的滤波器进行降噪。如图9所示,即为本次项目语音降噪的人机交互时GUI界面。操作步骤为:先进行打开文件,选择要进行加噪并去噪的语音信号,可点击播放进行试听,噪声1、噪声2、噪声3分别表示高斯白噪声、调频白噪声、工频噪声,点击噪声后便能听到加噪后的音频,点击降噪处理就能听到没有噪声的语音,并能看到加噪前后的时域波形图和频域图变化。时步哈降噪处理开境语开年村并文空a、高斯白噪声降噪主要代码和算法分析如下:new=music+awgn(music,30,halflength=floor(n/2);plot(f,Pn(1:halflength+1));title('加噪后声音频谱)%调用高斯白噪声awgn对原语音加噪%求出语音信号的频谱plot(x,new);output1=wden(new,'heursure',s','sI加噪后声音频谱与时域波形如图10所示。%调用小波函数wden进行降噪图10加噪后声音频谱与时域波形降噪后声音频谱与时域波形如图11所示。图11降噪后声音频谱与时域波形主要代码和算法分析如下:y1=modulate(music,f,50000,'fm'halflength=floor(n/2);Pn=Xn.*conj(Xn)/n;h2=floor(max(new));%对原语音信号调制%求出语音信号的频谱n=length(new);x=0:n-1;plot(x,new);output1=wden(new,heursure',s',sln%调用小波函数wden进行降噪加噪后声音频谱与时域波形如图12所示。图12加噪后声音频谱与时域波形降噪后声音频谱与时域波形如图13所示。图13加噪后声音频谱与时域波形c、工频信号主要代码和算法分析如下:globalmusic;globalnew;globaloutput;globalFileName;n=size(music);a=n(1,1);b=n(1,2);x=linspace(1,a,a);y2=y1(ones(b,1),:);y3=y2';new=music+y3;%加入正弦信号sound(new,50000);halflength=floor(n/2);Xn=fft(new,n);Pn=Xn.*conj(Xn)/n;title('加噪后声音频谱)plot(x,new);%求出语音信号的频谱output=WienerScalart96(new,加噪后声音频谱与时域波形如图14所示。图14加噪后声音频谱与时域波形降噪后声音频谱与时域波形如图15所示。 图15加噪后声音频谱与时域波形六、问题与解决方案及收获总结1、问题与解决方案(1)在均衡器制作过程中,我们无法将频域的波形显示的很好,使其占据屏幕的大半。后来我们只选取了20-4000Hz的频谱分量进行显示,因为这一部分比重较大,相对来(2)语音识别模块中一开始测试的时候是在寝室中,录音时长约为3s,环境相对安静,所以录音效果较好,同一个人的录音文件与模板语音信号的差值为3.35而不接近的则要达到4左右,这样就可以把阀值设定3.6来判断测试人是否为库中的人。可当环境改变后,如在食堂进行录音时,由于周围杂音的影响,录入的测试语音已有模板语音信号的差值都变大导致阀值不能固定,在考虑到杂音和说话人特征提取不够等原因,可以加长录音时长,只要训练的序列足够长,可认为这个码本有效地包含了说话人的个人特征,而与讲话的内容无关。%起初的test.m代码functionfinalmsg=test(testdir,n,code)file=sprintf(%s%d.wav,testdir,n);[s,fs]=audioread(file);v=mfcc(s,fs);distmin=3.6;t=0;%阈值设置处%得到测试人语音的mel倒谱系数for1=1:length(code)d=disteu(v,code{1});%计算得到模板和要判断的声音之间的“距离’dist=sum(min(d,[],2))/size(d,1);%变换得到一个距离的量%测试阈值数量级msgc=sprintf(与模板语音信号的差值为:%10f',dist);%此人匹配%一个阈值,小于阈值,则就是这个人。msgl=sprintf(说话者与第%d位模板语音信号匹配,符合要求!\n',1);t=t+2;%此人不匹配ifdist>distminift>1ift<1但是经过多次比较后发现不能直接通过差值与阈值的比较来判断测试者是否为库中的人,因为差值不会固定在一个数值的上下波动。最后阈值是通过多次实验数据的比较,计算出一个值,只要小于这个值,表明测试者就在库内,而与哪个人匹配就根据每组差值的最小值加以判断。把阈值增大到4.3,而在ifdist<=distmin这一语句后加入distmin=dist;以此达到阈值的变动。(3)降噪过程中遇到小波降噪过程中得到的语音信号长度已经发生改变,播放时出现了俩次。经过我们的研究查看矩阵变量维度,将最后的矩阵长度减小为0.5倍,即可实现播放一次。在这次课程设计中,我们尝到了各种滋味,有在困惑中的苦恼,在迷茫中的挣扎,也有在学习中的快乐,在成功中的兴奋,这是一个独立思考、挑战自己的过程。实验中学到的不仅仅是MATLAB的应用和一些课题的解决方法,更重要的是锻炼了自慢慢地学会了一些简单的程序。我们发现课本知识在实践面前很脆弱,不是说课本知识不重要,而是我们在学好课本知识的同时更要注重联系实际,要能解决实际问题,把课本上学到的东西应用到课程设计里面这次项目也仿佛给我们突然打开了一个通往另一个世界的门,在我们眼中高端的语音识别竟然可以在我们的合作下诞生,而不是在电影电视中各种崇拜,却只能望洋兴叹。而我们也体会到,一些平常的软件,在熟练的掌握和设计下竟然也可以解决很多困难的问题,书本上的东西不再是冰冷而苍白的,它们活生生的出现在我们的实践中并与我们的生活如此贴近,让我们在偶尔的失败中也毫不气馁,一直惊叹于它们的强大与神奇。我们懂得了遇到困难首先要思考,查找解决办法,耐心分析错误原因,做事要有耐心,同时注重团队的合作。我们会在以后的学习中更加注重实践。七、分工情况朱凯豪:编写“10秒以上的实际语音至少3种类型噪声的降除”的音效处理功能的代码,同时加入加噪函数,分别为高斯白噪声、调频噪声、工频噪声,并用小波变换和维纳滤波器实现三种噪声的消除,分析总结小波去噪与维纳滤波的基本原理与优缺点。王国平:设计与编写8个频段数字均衡器的代码,分别对应20~100Hz(沉重)、100~200Hz (丰满)、200~500Hz(力度)、500~1KHz(明朗)、1K~2KHz(透亮)、2K~4KHz(尖锐)、4K~8KHz(清脆)、8K~16KHz(纤细),在GUI界面中设计时域图与频域图显示改变均衡器数值后的语音图像变化,并进行代码分析与效果测试。张明星:编写“项目组5人的语音识别”代码,在GUI界面中设计语音识别所需要的录音按钮、音频播放按钮等,进行组内成员语音的录制、调试、并对代码进行修改与完善。陈翔宇:实现人机交互界面的操控,制作降噪模块与八段数字均衡器模块的GUI界面,设置相应按钮进行文件的选取与参数的调节,进行所有功能的演示。费点:与各组员一起查找各部分的资料,综合各部分代码的分析与报告,总结并完成最终报告的书写。[2]哈尔滨工业大学,MATLAB实现语音识别功能【J】,2012;[3]肖正安,湖北第二师范学院学报,基于Matlab的数字均衡器的设计,2008年第25[4]何强,何英.MATLAB扩展编程[M],北京:清华大学出版社,2002。九、完整代码及部分注释%将录音文件写入电脑functionrecordCallback(hObject,eventdata,handles)%hObject%eventdata%handlesreserved-tobedefinedinafutureversionofMATLABstructurewithhandlesanduserdata(seeGUIDATA)set(handles.record,"Enable',off);pause(0.01);Fs=str2double(get(handles.inputFs,'String'));inputtime=str2double(get(handles.inputtime,'String'));handles.Fs=Fs;handles.y=audiorecorder(Fs,16,2);recordblocking(handles.y,inputtime);set(handles.record,'Enable','on');a=getaudiodata(handles.y);audiowrite('C:\Users\dddddd\Desktop\dsp\a6.wav,a,Fs):%输入采样频率functioninputFs_Callback(hObject,eventdata,handles)%hObject%eventdata%handleshandletoinputFs(seeGCBO)reserved-tobedefinedinafutureversionofMATLABstructurewithhandlesanduserdata(seeGUIDATA)%Hints:get(hObject,'String)returnscontentsofinputFsastext%str2double(get(hObject,'String'))returnscontentsofinputFsasadouble%---Executesduringobjectcreation,aftersettingallproperties.functioninputFs_CreateFcn(hObject,eventdata,handles)%hObjecthandletoinputFs(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesempty-handlesnotcreateduntilafterallCreateFcnscalled%Hint:editcontrolsusuallyhaveawhitebackgroundonWindows.%SeeISPCandCOMPUTERifispc&&isequal(get(hObject,'BackgroundColor'),get(0,defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor',white');%输入录音时间functioninputtimeCallback(hObject,eventdata,handles)%hObjecthandletoinputtime(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)%Hints:get(hObject,'String')returnscontentsofinputtimeastext%str2double(get(hObject,'String'))returnscontentsofinputtimeasadouble%---Executesduringobjectcreation,aftersettingallproperties.functioninputtime_CreateFcn(hObject,eventdata,handles)%hObjecthandletoinputtime(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesempty-handlesnotcreateduntilafterallCreateFcnscalled%Hint:editcontrolsusuallyhaveawhitebackgroundonWindows.%SeeISPCandCOMPUTER.ifispc&&isequal(get(hObject,'BackgroundColor'),get(0,defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor',white');%滑动条1%---Executesonslidermovement.functionband1_Callback(hObject,eventdata,handles)%hObject%eventdata%handleshandletoband1(seeGCBO)reserved-tobedefinedinafutureversionofMATLABstructurewithhandlesanduserdata(seeGUIDATA)sliderValue=get(handles.band1,'Value');set(handles.bands1,String',num2str(sliderValue));%Hints:get(hObject,'Value)returnspositionofslider%get(hObject,'Min')andget(hObject,'Max')todeterminerangeofslider%---Executesduringobjectcreation,aftersettingallproperties.functionband1_CreateFcn(hObject,eventdata,handles)%hObject%eventdata%handleshandletoband1(seeGCBO)reserved-tobedefinedinafutureversionofMATLABempty-handlesnotcreateduntilafterallCreateFcnscalled%Hint:slidercontrolsusuallyhavealightgraybackground.ifisequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor',[.9.9.9]);%滑动条2%---Executesonslidermovement.functionband2_Callback(hObject,eventdata,handles)%hObject%eventdata%handleshandletoband2(seeGCBO)reserved-tobedefinedinafutureversionofMATLABstructurewithhandlesanduserdata(seeGUIDATA)sliderValue=get(handles.band2,'Value');set(handles.bands2,'String',num2str(sliderValue));%Hints:get(hObject,'Value')returnspositionofslider%get(hObject,'Min)andget(hObject,Max')todeterminerangeofslider%---Executesduringobjectcreation,aftersettingallproperties.functionband2_CreateFcn(hObject,eventdata,handles)%hObject%eventdata%handleshandletoband2(seeGCBO)reserved-tobedefinedinafutureversionofMATLABempty-handlesnotcreateduntilafterallCreateFcnscalled%Hint:slidercontrolsusuallyhavealightgraybackgroundifisequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor',[.9.9.9]);%滑动条3%---Executesonslidermovement.functionband3_Callback(hObject,eventdata,handles)%hObject%eventdata%handlesreserved-tobedefinedinafutureversionofMATLABstructurewithhandlesanduserdata(seeGUIDATA)sliderValue=get(handles.band3,'Value');set(handles.bands3,'String',num2str(sliderValue));%Hints:get(hObject,'Value')returnspositionofslider%get(hObject,'Min')andget(hObject,Max')todeterminerangeofslider%---Executesduringobjectcreation,aftersettingallproperties.functionband3_CreateFcn(hObject,eventdata,handles)%hObject%eventdata%handleshandletoband3(seeGCBO)reserved-tobedefinedinafutureversionofMATLABempty-handlesnotcreateduntilafterallCreateFcnscalled%Hint:slidercontrolsusuallyhavealightgraybackground.ifisequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor',[.9.9.9]);%滑动条4%---Executesonslidermovement.functionband4_Callback(hObject,eventdata,handles)%hObjecthandletoband4(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)sliderValue=get(handles.band4,'Value');set(handles.bands4,'String',num2str(sliderValue));%Hints:get(hObject,'Value')returnspositionofslider%get(hObject,'Min')andget(hObject,Max')todeterminerangeofslider%--Executesduringobjectcreation,aftersettingallproperties.functionband4_CreateFcn(hObject,eventdata,handles)%hObject%eventdata%handleshandletoband4(seeGCBO)reserved-tobedefinedinafutureversionofMATLABempty-handlesnotcreateduntilafterallCreateFcnscalled%Hint:slidercontrolsusuallyhavealightgraybackground.ifisequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor',[.9.9.9]);%滑动条5functionband5_Callback(hObject,eventdata,handles)%hObjectreserved-tobedefinedinafutureversionofMATLABstructurewithhandlesanduserdata(seeGUIDATA)set(handles.bands5,'String',num2str(sliderValue));%Hints:get(hObject,'Value')returnspositionofslider%get(hObject,'Min')andget(hObject,Max')todeterminerangeofslider%---Executesduringobjectcreation,aftersettingafunctionband5_CreateFcn(hObject,eventdata,handles)handletoband5(seeGCBO)reserved-tobedefinedinafutureversionofMATLABempty-handlesnotcreateduntilaftera%Hint:slidercontrolsusuallyhavifisequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor',[.9.9.9]);%滑动条6functionband6_Callback(hObject,eventdata,handles)%hObjecthandletoband6(see%eventdatareserved-tobedefinedinafuturevers%handlesstructurewithhandlesanduserdata(seeGUIDATA)set(handles.bands6,'String',num2str(sliderValue));%Hints:get(hObject,'Value')returnspositionofslider%get(hObject,'Min')andget(hObject,Max')todeterminerangeofslider%---Executesduringobjectcreation,aftersettingafunctionband6_CreateFcn(hObject,eventdata,handles)handletoband6(seeGCBO)reserved-tobedefinedinafutureversionofMATLABempty-handlesnotcreateduntilafter%Hint:slidercontrolsusuallyhavifisequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor',[.9.9.9]);%---Executesonslidermovement.functionband7_Callback(hObject,eventdata,handles)%hObject%eventdata%handleshandletoband7(seeGCBO)reserved-tobedefinedinafutureversionofMATLABstructurewithhandlesanduserdata(seeGUIDATA)sliderValue=get(handles.band7,'Value');set(handles.bands7,'String',num2str(sliderValue));%Hints:get(hObject,'Value')returnspositionofslider%get(hObject,'Min')andget(hObject,'Max')todeterminerangeofslider%--Executesduringobjectcreation,aftersettingallpropertiesfunctionband7_CreateFcn(hObject,eventdata,handles)%hObject%eventdata%handleshandletoband7(seeGCBO)reserved-tobedefinedinafutureversionofMATLABempty-handlesnotcreateduntilafterallCreateFcnscalled%Hint:slidercontrolsusuallyhavealightgraybackground.ifisequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor))set(hObject,'BackgroundColor',[.9.9.9]);%滑动条8%---Executesonslidermovement.functionband8Callback(hObject,eventdata,handles)%hObjecthandletoband8(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesstructurewithhandlesanduserdata(seeGUIDATA)sliderValue=get(handles.band8,'Value');set(handles.bands8,'String',num2str(sliderValue));%Hints:get(hObject,'Value')returnspositionofslider%get(hObject,'Min)andget(hObject,'Max)todeterminerangeofslider%--Executesduringobjectcreation,aftersettingallproperties.functionband8_CreateFcn(hObject,eventdata,handles)%eventdatareserved-tobedefinedinafutureversionofMATLAB%Hint:slidercontrolsusuallyhavealightgraybackgroundifisequal(get(hObject,BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor',[.9.9.9]);%滑动条1的k值显示functionbands1_Callback(hObject,eventdata,handles)%hObject%eventdata%handleshandletobands1(seeGCBO)reserved-tobedefinedinafutureversionofMATLABstructurewithhandlesanduserdata(seeGUIDATA)sliderValue=get(handles.bands1,'String');if(isempty(sliderValue)llsliderValue<0llsliderValue>2)set(handles.band1,'Value',0);set(handles.bands1,'String','0');set(handles.band1,'Value',sliderValue);%Hints:get(hObject,'String')returnscontentsofbands1astext%str2double(get(hObject,'String'))returnscontentsofbands1asadouble%---Executesduringobjectcreation,aftersettingallproperties.functionbands1_CreateFcn(hObject,eventdata,handles)%hObject%eventdata%handleshandletobands1(seeGCBO)reserved-tobedefinedinafutureversionofMATLABempty-handlesnotcreateduntilafterallCreateFcnscalled%Hint:editcontrolsusuallyhaveawhitebackgroundonWindows.%SeeISPCandCOMPUTER.ifispc&&isequal(get(hObject,'BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor',white');%滑动条2的k值显示functionbands2Callback(hObject,eventdata,handles)%hObject%eventdata%handleshandletobands2(seeGCBO)reserved-tobedefinedinafutureversionofMATLABstructurewithhandlesanduserdata(seeGUIDATA)sliderValue=get(handles.bands2,'String');if(isempty(sliderValue)||sliderValue<0||sliderValue>2)set(handles.band2,'Value',0);set(handles.bands2,String','O');set(handles.band2,'Value',sliderValue);%Hints:get(hObject,'String)returnscontentsofbands2astext%str2double(get(hObject,'String))returnscontentsofbands2asadouble%---Executesduringobjectcreation,aftersettingafunctionbands2_CreateFcn(hObject,eventdata,handles)%hObjecthandletobands2(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesempty-handlesnotcreateduntilafterallCreateFcnscalled%Hint:editcontrolsusuallyhaveawhitebackgroundonWindows.ifispc&&isequal(get(hObject,'BackgroundColor'),get(0,defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor',white');%滑动条3的k值显示functionbands3_Callback(hObject,eventdata,handles)handletobands3(seeGCBO)reserved-tobedefinedinafutureversionofMATLABstructurewithhandlesanduserdata(seeGUIDATA)sliderValue=get(handles.bands3,'String');if(isempty(sliderValue)||sliderValue<0||sliderValue>2)set(handles.band3,'Value',0);set(handles.bands3,String','O');%Hints:get(hObject,String')returnscontentsofbands3astext%str2double(get(hObject,'String))returnscontentsofbands3asadouble%---Executesduringobjectcreation,aftersettingafunctionbands3CreateFcn(hObject,eventdata,handles)%hObjecthandletobands3(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesempty-handlesnotcreateduntilafterallCreateFcnscalled%Hint:editcontrolsusuallyhaveawhitebackgroundonWindows.ifispc&&isequal(get(hObject,BackgroundColor'),get(0,'defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor',white');%滑动条4的k值显示functionbands4_Callback(hObject,eventdata,handles)handletobands4(seeGCBO)reserved-tobedefinedinafutureversionofMATLABstructurewithhandlesanduserdata(seeGUIDATA)sliderValue=get(handles.bands4,'String');if(isempty(sliderValue)||sliderValue<0||sliderValue>2)set(handles.band4,'Value',0);%Hints:get(hObject,'String')returnscontentsofbands4astext%str2double(get(hObject,String'))returnscontentsofbands4asadouble%---Executesduringobjectcreation,aftersettingafunctionbands4_CreateFcn(hObject,eventdata,handles)handletobands4(seeGCBO)reserved-tobedefinedinafutureversionofMATLABempty-handlesnotcreateduntilafterallCreateFcnscalled%Hint:editcontrolsusuallyhaveawhitebackgroundonWindows.ifispc&&isequal(get(hObject,BackgroundColor'),get(0,defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor',white');%滑动条5的k值显示functionbands5_Callback(hObject,eventdata,handles)handletobands5(seeGCBO)reserved-tobedefinedinafutureversionofMATLABstructurewithhandlesanduserdata(seeGUIDATA)sliderValue=get(handles.bands5,'String');if(isempty(sliderValue)||sliderValue<0||sliderValue>2)set(handles.bands5,'String','O');%Hints:get(hObject,String)returnscontentsofbands5astext%str2double(get(hObject,'String'))returnscontentsofbands5asadoubfunctionbands5_CreateFcn(hObject,eventdata,handles)%hObjecthandletobands5(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesempty-handlesnotcreateduntilafterallCreateFcnscalled%Hint:editcontrolsusuallyhaveawhitebackgroundonWindows.ifispc&&isequal(get(hObject,'BackgroundColor'),get(0,defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor',white');%滑动条6的k值显示functionbands6_Callback(hObject,eventdata,handles)handletobands6(seeGCBO)reserved-tobedefinedinafutureversionofMATLABstructurewithhandlesanduserdata(seeGUIDATA)sliderValue=get(handles.bands6,'String');if(isempty(sliderValue)||sliderValue<0||sliderValue>2)set(handles.bands6,'String','0');%Hints:get(hObject,'String')returnscontentsofbands6astext%str2double(get(hObject,'String'))returnscontentsofbands6asadouble%---Executesduringobjectcreation,aftersettingafunctionbands6_CreateFcn(hObject,eventdata,handles)%hObjecthandletobands6(seeGCBO)%eventdatareserved-tobedefinedinafutureversionofMATLAB%handlesempty-handlesnotcreateduntilafterallCreateFcnscalled%Hint:editcontrolsusuallyhaveawhitebackgroundonWindows.ifispc&&isequal(get(hObject,'BackgroundColor'),get(0,defaultUicontrolBackgroundColor'))set(hObject,'BackgroundColor',white');%滑动条7的k值显示functionbands7_Callback(hObject,eventdata,handles)%hObjecthand

温馨提示

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

评论

0/150

提交评论