数字信号处理终期报告改_第1页
数字信号处理终期报告改_第2页
数字信号处理终期报告改_第3页
数字信号处理终期报告改_第4页
数字信号处理终期报告改_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

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

文档简介

1、数字信号处理B课程项目实施报告题目: 设计数字音效处理器 组号: 20 任课教师: 方勇 联系方式:二零一五年十月十九日一、项目实施方案2项目要求2设计思想2设计指标3实现方式4一 系统设计及可行性分析4人机交互界面4(1).设计步骤5(2).设计过程及内容5(3).人机交互界面5语音识别5原理5主要代码7测试过程8结果分析8降噪83.1 小波与谱减法降噪83.2功频降噪113.3环境降噪13音频特效134.1.倒序播放134.2变声小黄人144.3数字均衡器1452一、项目实施方案项目要求 设计一个数字音效处理器,能够实现语音信号的各种音效处理。 (1)输入语音信号

2、源为实际环境采集语音; (2)至少实现3种音效处理功能(其中至少包含下述2种功能:1、项目组5人的语音识别;2、10秒以上的实际语音至少;3、3种类型噪声的降除); (3)用人机交互界面操控、扬声器/耳机输出音效。设计思想通过MATLAB软件我们可以方便地进行音频信号的处理,利用离散付里叶变换及其反变换进行频谱分析;音频信号采样后通过对时域信号和频域采样频率的处理等方法,做出各种音效效果。另外,利用MATLAB可减少工作量,节约时间,加深理解,同样可以培养应用能力。同时,人机交互界面可以由MATLAB内的GUI实现框图如下:人 机 交 互 界 面加 噪语 音 特 效语 音 识 别降 噪时 域

3、图数 字 均 衡 器变 声 小 黄 人倒 序 播 放环 境 噪 声功 频 噪 声白 噪 声识 别 与 防 伪录 音 1.使用MATLAB软件,利用库里的函数和功能,使得人机交互界面制作比较简单,也方便录音和对音频信号进行处理。 2 .设计数字滤波器组,对语音信号进行降噪处理,并对降噪前后的语音信号进行时域和频域的分析。3. 通过对音频信号的时域采样和频域处理,设计各种音频特效,如:变声器,倒序播放。设计指标1、外界声音的采集及简单处理利用MATLAB自带录音功能,按下开始录音按钮,对外界声音进行采集。要保存文件时,利用了计算机上的A/D转换器,把模拟的声音信号变成了离散的量化了的数字信号,录音

4、完成后保存为.文件。在MATLAB软件平台下利用函数对语音信号进行读取,得到了声音数据变量。为了更方便的进行实时音效处理,我们添加了实时录音功能并直接对录音采样完的数据进行音频处理,这样音频处理的效率更高。然后对语音信号进行频谱分析,在MATLAB中首先画出语音信号的时域波形;然后对语音号进行快速傅里叶变换,得到信号的频谱特性,分析基频。这样方便和之后处理后的时域波形和频域波形进行比较,从而从时域和频域特性上看到音频信号的变化,语音处理的效果。2、对采集的声音进行音效处理 我们项目小组实现下列各项音效处理效果: 实现项目组5人的语音识别; 实现3种类型噪声的降除,包括白噪声、功频噪声和环境噪声

5、; 实现倒序播放; 实现变声小黄人 实现数字均衡器等 测试方法:在MATLAB中首先画出语音信号的时域波形;然后对语音号进行快速傅里叶变换,得到信号的频谱特性。将处理前后的时域波形和频域波形进行比较,分析其在形状,数值上面的差异,结合音效变换的原理,判断功能是否实现。同时使用函数对音频进行回放,方便直观的比较音效变换结果是否与预期相符,如果相差太多,则继续修改代码或者参数。实现方式利用MATLAB编程实现音频信号处理并分析处理后的音频时域频域特性,比较处理前后音频播放效果。利用MATLAB中GUI实现人机交互界面的设计。一 系统设计及可行性分析人机交互界面 GUIDE相当于一个控制面板,从中可

6、以调用各种设计工具以辅助完成界面设计任务,例如控件的创建和布局、控件属性的编辑和菜单设计等。 (1).设计步骤 将所需控件从控件面板拖拽到GUIDE的设计区域; 利用工具条中的工具(或相应的菜单和现场菜单),快速完成界面布局; 设置控件的属性。尤其是tag属性,它是控件在程序内部的唯一标识; 如果需要,打开菜单编辑器为界面添加菜单或现场菜单; 保存设计。GUIDE默认把GUI程序保存为两个同名文件:一个是.fig文件,用来保存窗体布局和所有控件的界面信息;一个是m文件,该文件的初始内容是GUIDE自动产生的程序框架,其中包括了各个控件回调函数的定义。该m文件与一般的M文件没有本质区别,但是鉴于

7、它的特殊性,MATALAB把这类文件统称为GUI-M文件。保存完后GUI-M文件自动在编辑调试器中打开以供编辑。 为每个回调函数添加代码以实现GUI程序的具体功能。这一步与一般函数文件的编辑调试过程相同。 (2).设计过程及内容 在MATLAB版面上,通过键入GUIDE弹出一个菜单栏进入制作界面(或者在File到new来进入),从而开始应用界面的制作。 该界面主要实现了以下几个功能: 打开格式的音频文件,并将该音频信号的值读取并赋予某一向量; 播放音频文件,可以选择性的显示该音频信号的波形、频谱、幅值以及相位; (3).人机交互界面语音识别 原理我们采用了MFCC算法提取录音码本的特征函数,然

8、后将2段MFCC矩阵进行用VQ方法计算平均失真测度最后比较判断声源的归属MFCC参数是基于人的听觉特性利用人听觉的屏蔽效应,在Mel标度频率域提取出来的倒谱特征参数,其提取过程如下:a) 对输入的语音信号进行分帧、加窗,然后作离散傅立叶变换,获得频谱分布信息。 设语音信号的DFT为(其中式中为输入的语音信号,N表示傅立叶变换的点数): b) 再求频谱幅度的平方,得到能量谱。 c) 将能量谱通过一组Mel尺度的三角形滤波器组。 我们定义一个有M个滤波器的滤波器组(滤波器的个数和临界带的个数相近),采用的滤波器为三角滤波器,中心频率为,,本系统取。d) 计算每个滤波器组输出的对数能量。 其中为三角

9、滤波器的频率响应。 e) 经过离散弦变换(DCT)得到MFCC系数。 MFCC系数个数通常取2030,常常不用0阶倒谱系数,因为它反映的是频谱能量,故在一般识别系统中将称为能量系数,并不作为倒谱系数,本系统选取20阶倒谱系数。关于码本的生成我们采用矢量量化聚类法,每个待识的说话人看作是一个信源,用一个码本来表征。码本是从该说话人的训练序列中提取的MFCC特征矢量聚类而生成,只要训练的序列足够长,可认为这个码本有效地包含了说话人的个人特征,而与讲话的内容无关。本系统采用基于分裂的LBG的算法设计VQ码本,为训练序列,B为码本。 具体实现过程如下: 1.取提取出来的所有帧的特征矢量的型心(均值)作

10、为第一个码字矢量B1。 2.将当前的码本根据以下规则分裂,形成2m个码字。 其中m从1变化到当前的码本的码字数,是分裂时的参数,本文。 3.根据得到的码本把所有的训练序列(特征矢量)进行分类,然后按照下面两个公式计算训练矢量量化失真量的总和以及相对失真为迭代次数,初始化(, ,B为当前的码书),若相对失真小于某一阈值,迭代结束,当前的码书就是设计好的个码字的码书,转5。否则,转下一步。 量化失真量和: 相对失真: 4.重新计算各个区域的新型心,得到新的码书,转3。 5.重复2,3和4步,直到形成有M个码字的码书(M是所要求的码字数),其中。关于VQ的说话人识别原理如下:设未知的说话人的特征矢量

11、,共有T帧是训练阶段形成的码书,表示码书第个码字,每一个码书有个码字。再计算测试者的平均量化失真,并设置一个阈值,若D小于此阈值,则是原训练者,反之则认为不是原训练者。 主要代码见附录“语音识别”代码部分 测试过程录入一段语音,结果如下: 识别图 时域图 图 2.1 图 2.2 结果分析 经过反复测试,语言识别的成功率达到90%,但是在嘈杂的环境中,对识别有所干扰,所以我们加一个预滤波处理,即:用低通滤波器,将2KHz以上的高频噪声信号滤除。降噪3.1 小波与谱减法降噪 原理 一个含噪声的一维信号的模型可以表示成如下的形式: , 式中为含噪信号;为原始号;为噪声信号;为噪声强度 由于傅里叶变换

12、不具有时频分析的局域性,它在降噪的同时平滑了信号的突变部分,而小波变换可以保留原始信号中的突变部分.如果利用小波变换进行信号降噪的话,那么降噪过程可按如下方法进行: 1)一维信号的小波分解.选择一个小波并确定一个小波分解的层次N,然后对信号进行N层小波分解计算. 2)小波分解高频系数的阈值量化.对第1层到第N层的每一层高频系数,选择一个阈值进行软阈值量化处理. 3)一维小波的重构.根据小波分解的第N层 的低频系数和经过量化处理后的第1层到第N层的高频系数,进行一维信号的小波重构 但是实际过程中,我们发现降噪效果并不理想,在此基础上,我们又采用减谱法对小波降噪后的信号进行处理,即:从带噪语音估值

13、中减去噪声频谱估值,从而得到纯净语音的频谱。谱相减方法是基于人的感觉特性,因为语音信号的短时幅度比短时相位更容易对人的听觉系统产生影响,从而对语音短时幅度谱进行估计,适用于受加性噪声污染的语音。 主要代码y,fs,nbits=wavread ('C:UsersdingyuDesktopmatlab语音识别Matlab语音识别1ss4');n = length (y);Noise=0.02*randn(n,1);s=y+Noise;%sound(s);thr,sorh,deepapp,crit = ddencmp('den','wp',s);thr

14、 = 0.065;x = wpdencmp(s,sorh,6,'sym9',crit,thr,deepapp);subplot(2,1,1);plot(x);grid;title('小波包去噪波形');sound(x);wavwrite(x,9000,'C:UsersdingyuDesktopmatlab语音识别Matlab语音识别1s11.wav');wavwrite(s,9000,'C:UsersdingyuDesktopmatlab语音识别Matlab语音识别1s12.wav');xx,fs=wavread('C:U

15、sersdingyuDesktop数字信号处理matlab语音识别1sshi1.wav'); x=xx/max(abs(xx); SNR=10; signal=Gnoisegen(x,SNR); % 叠加噪声%sound(signal,fs);N=length(x); time=(0:N-1)/fs; IS=.15; % 设置IS% 调用SSBoll79m_2函数做谱减output,voiceseg,vosl,SF,Ef=SSBoll79m_2(xx,fs,IS,0.12);ol=length(output); % 把output补到与x等长if ol<N output=outp

16、ut; zeros(N-ol,1);endsound(output,fs); 测试过程 首先录入一段语音,对这段语音加上白噪声,再进行降噪处理。降噪前后的语音波形对比如下: 图3.1 图3.2 图3.3 图3.4结果分析 从时域上看,波形有明显改变,更加接近原始信号波形。 实际播放时,声音也更加清晰,基本上无失真。 3.2功频降噪 原理我们设计了数字巴特沃斯低通滤波器,来滤除功频噪声。在设计此滤波器时,我们采用了双线变换法,即:使DF的频率响应与AF的频率响应相似的一种变换法。直接使数字滤波器的频率响应,逼近模拟滤波器的频率响应,进而求得。 主要代码y,fs,nbits=wavread (&#

17、39;C:UsersdingyuDesktopÊý×ÖÐźŴ¦Àíeg.wav');N=80000;t=(0:1:N-1)/fs;f=5000;s0=0.1*sin(2*pi*f*t);s=y+s0'Ft=12000;Fp=800;Fs=1000;wp=2*pi*Fp/Ft;ws=2*pi*Fs/Ft;n11,wn11=buttord(wp,ws,1,50,'s');b11,a11=butter(n11,wn11,'s');

18、num11,den11=bilinear(b11,a11,0.5);z11=filter(num11,den11,s);wavplay(4*z11,fs); 测试过程首先给语音加上功频噪声,也就是正弦噪声;此时,再次播放音频,会伴随着刺耳的长滴声;再通过功频降噪模块,播放降噪后的语音。降噪后频谱与时域波形如下: 图3.2.1结果分析从时域上看,波形与原语音波形基本一致,这说明噪音部分已经滤除, 从实际测试中,我们发现通过降噪后,长滴声完全消失,降噪后的语音也没有失真,此方法比较可靠。3.3褐色降噪 原理 对于褐色噪声的降除,我们也使用了小波降噪的方法 主要代码 测试过程 首先录入一段语音,再加

19、入褐色噪声,即:一种全频带的,像海边特有的潮汐噪声波,其频率分量功率主要集中在低频段。再通过小波降噪系统,滤除了低频的褐色噪声,使得播放声音效果中的低频潮汐声得到明显的降除。 结果分析 从结果上了来说如果没有刻意通过低频放大器对滤除后的语音进行放大,可以达到另人满意的降噪效果,从实际角度出发我们觉得褐色噪声适合在实际的环境中进行处理,因为在实际的环境中低频的噪声不容易被人耳分辨出来。音频特效4.1.倒序播放 原理 因为时域谱的搬移不会对频谱造成影响,所以改变每个字时域波形的位置,即可实现倒序播放。也就是说,当对一段语言进行采样后,计算信号的长度,得到采样点数N,并得到语音信号的矩阵。然后在电压

20、跳变点处切割,即可得到每个字的矩阵。在MATLAB中,语音信号以矩阵的形式存储,所以将每个字的矩阵倒置,就能得到倒序的语言信号 主要代码由于主要代码较长见附录倒叙播放代码部分 测试过程 首先录制时长一定的语音(这里我们默认是10S),例如:然后通过倒序模块,再播放语音。实际测试中,可以比较清晰地听见的倒序语音 结果分析 因为只是简单地对时域信号进行等间隔切割,再进行倒置,所以具有局限性,必须控制说每个字的步长一定,才能成功。4.2变声小黄人 原理 人的声音不同的原因是音调不同,也就是声带振动的频率不同。因为小黄人声音频率更高,所以只要改变原始语音信号的频谱,让它增长一定的倍数,即可简单地实现小

21、黄人变声器这一功能。 主要代码function pushbutton5_Callback(hObject, eventdata, handles)% hObject handle to pushbutton5 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)y,fs,nbits=wavread('C:UsersdingyuDesktopÊý

22、15;ÖÐźŴ¦Àíeg.wav');sound(y,1.6*fs);4.3数字均衡器均衡器简介 均衡器是一种用来对频响曲线进行调节的音频设备,换句话说,均衡器能对不同频率的声音信号中的各频率成分进行放大或缩小。它能补偿由于各种原因造成的信号欠缺的频率成分,也能抑制信号中过多的频率成分。利用均衡器的这个特性,可以对声音进行音调调节和音色加工。均衡器的原意是将传输系统中不平衡的频率特性用相反的特性曲线进行频率均衡,在此基础上增加了音色加工和美化的功能。均衡器的作用主要如下:校正各种音频

23、设备产生的频率失真,以获得平坦响应。  改善室内声场,改善由于房间共振特性或吸声特性不均匀而造成的传输增益(频率)失真,确保其频率特性平直。  抑制声反馈,提高系统传声增益,改善扩声音质。  提高语言清晰度和自然度。  在音响艺术创作中,用于刻画乐器和演员的音色个性,提高音响艺术的表现效果。  设计原理均衡器的种类很多,但基本上工作原理都是相同的。它们都是将音频信号的全频带(一般为20Hz20kHz)或全频带的主要部分,按一定的规律分成几个甚至几十个频段,再构造出通带为对应频段的滤波器,通过改变

24、滤波器的增益,增强或削弱某一特定的频率成分,达到均衡的目的。在本程序中,根据不同频率的声音的音感,将全频带分为8段:30100Hz(沉重);100200Hz(丰满);200500Hz(力度);5001KHz(明朗);1K2KHz(透亮);2K4Kz(尖锐);4K8Kz(清脆);8K16Kz(纤细),构造出滤波器组函数。图 4.3.1 滤波器组的构造如图1所示,先做出原型滤波器 的频率响应,之后将它在频域上移动,派生出一系列频率响应形状相同但截止频率不同的滤波器,将这些滤波器叠加在一起形成滤波器组,即: 因此,对滤波器组的设计问题转化为原型滤波器的设计,本程序设计了下拉菜单,用户可选取基于巴特沃

25、斯法、切比雪夫I、切比雪夫II、椭圆法构造的滤波器,并且可以选择滤波器的阶数。对于以上四种滤波器,阶数 越高特性越接近理想滤波器,但随着N的增长算法复杂度会上升,因此阶数也不可取得太大。MATLAB中内置了等函数,只需输入截止频率、通带衰减、阻带衰减等滤波器技术参数,即可算出符合该参数的最小阶数 ,通过计算和实践,发现阶数最小可取1,因此设置13阶作为用户可以选择的阶数范围。此外,还需确定分析频率 ,将截止频率转化为归一化频率,查阅资料发现,应取采样频率 的一半。至此,只需调用MATLAB中的滤波器构造函数即可设计出原型滤波器,利用循环即可设计出滤波器组。滤波器组设计好后,还需确定各频段对应的

26、加权,程序充分利用MATLAB提供的组件,使用了8个滑动条提取相应的权值(如图2),权值大小最终由数学公式给出:当滑动条在中间的时候值为0.5,增益刚好为1倍;滑动条滑至顶部值为1,增益为24dB;滑动条滑至底部为0,增益接近无穷小。图 4.3.2 滑动条设计最后,利用函数让声音序列以此通过这些滤波器,并乘以各滤波器对应的幅度加权(如图3.3),即可完成均衡。图 4.3.3 滤波器组传输函数演示调用的函数(1) 函数用于计算滤波器的输出,其中,B、A是滤波器传输函数的系数,X为输入序列,Y为滤波后的输出序列。具体的,该函数遵循如下方程: (2) 通过这四个函数,可以很方便地构造滤波器,其中代表

27、通带范围,分别代表通带纹波和阻带纹波。 结果分析如图4.3.4所示,当将滑动条设置为放大低音的状态,进行均衡后,发现原来的声音信号在时域上的毛刺波形减少,波形看上去“规则”了许多,频域上低频部分被放大,高频部分几乎消失。打开声音文件,发现均衡后的声音深沉、黯淡,低音明显,说明达到了均衡效果。图 4.3.4 均衡后的时频域波形附录:主程序function varargout = luyin(varargin)% LUYIN MATLAB code for luyin.fig% LUYIN, by itself, creates a new LUYIN or raises the existing

28、% singleton*.% H = LUYIN returns the handle to a new LUYIN or the handle to% the existing singleton*.% LUYIN('CALLBACK',hObject,eventData,handles,.) calls the local% function named CALLBACK in LUYIN.M with the given input arguments.% LUYIN('Property','Value',.) creates a new

29、LUYIN or raises the% existing singleton*. Starting from the left, property value pairs are% applied to the GUI before luyin_OpeningFcn gets called. An% unrecognized property name or invalid value makes property application% stop. All inputs are passed to luyin_OpeningFcn via varargin.% *See GUI Opti

30、ons on GUIDE's Tools menu. Choose "GUI allows only one% instance to run (singleton)".% See also: GUIDE, GUIDATA, GUIHANDLES % Edit the above text to modify the response to help luyin % Last Modified by GUIDE v2.5 24-Oct-2015 07:52:09 % Begin initialization code - DO NOT EDITgui_Singlet

31、on = 1;gui_State = struct('gui_Name', mfilename, . 'gui_Singleton', gui_Singleton, . 'gui_OpeningFcn', luyin_OpeningFcn, . 'gui_OutputFcn', luyin_OutputFcn, . 'gui_LayoutFcn', , . 'gui_Callback', );if nargin && ischar(varargin1) gui_State.gui_C

32、allback = str2func(varargin1);end if nargout varargout1:nargout = gui_mainfcn(gui_State, varargin:);else gui_mainfcn(gui_State, varargin:);end% End initialization code - DO NOT EDIT % - Executes just before luyin is made visible.function luyin_OpeningFcn(hObject, eventdata, handles, varargin)% This

33、function has no output args, see OutputFcn.% hObject handle to figure% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)% varargin command line arguments to luyin (see VARARGIN) % Choose default command line output for luyinh

34、andles.output = hObject; % Update handles structureguidata(hObject, handles); % UIWAIT makes luyin wait for user response (see UIRESUME)% uiwait(handles.figure1); % - Outputs from this function are returned to the command line.function varargout = luyin_OutputFcn(hObject, eventdata, handles) % varar

35、gout cell array for returning output args (see VARARGOUT);% hObject handle to figure% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA) % Get default command line output from handles structurevarargout1 = handles.output; 录音部分

36、代码:% - Executes on button press in pushbutton1.function pushbutton1_Callback(hObject, eventdata, handles)% hObject handle to pushbutton1 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA) msgbox('¼&#

37、210;ô¿ªÊ¼')fs=8000;time=10;y=wavrecord(fs*time,fs);wavwrite(y,fs,'C:UsersdingyuDesktopÊý×ÖÐźŴ¦Àíeg.wav');msgbox('¼Òô½áÊø')%close start 白噪声加噪代码:% - Execu

38、tes on button press in pushbutton2.function pushbutton2_Callback(hObject, eventdata, handles)% hObject handle to pushbutton2 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)y,fs,nbits=wavread ('C:UsersdingyuD

39、esktopÊý×ÖÐźŴ¦Àíeg.wav');n = length (y);Noise=0.02*randn(n,1);s=y+Noise;S=fft(s);axes(handles.axes1);plot(s);title('¼ÓÔëʱÓò²¨ÐÎ');set(handles.axes1,'XminorTick&#

40、39;,'on'); %ƵÓò»æÍ¼n=length(s);%²ÉÑùµã¸öÊýdf=fs/(n-1);%·Ö±æÂÊf=(0:n-1)*df;%ÆäÖÐÿµãµÄƵÂÊx=abs(fft(y(

41、1:n)/n*2); axes(handles.axes3);plot(f(1:n/8),x(1:n/8);title('¼ÓÔëÆµÓò²¨ÐÎ');xlabel('f/hz','FontName','Times New Roman','FontSize',8) wavplay(s,fs); 白噪声降噪代码:% - Executes on button press in pushbutton4.

42、function pushbutton4_Callback(hObject, eventdata, handles)% hObject handle to pushbutton4 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)y,fs,nbits=wavread ('C:UsersdingyuDesktopÊý×ÖÐ

43、;źŴ¦Àíeg.wav');n = length (y);Noise=0.02*randn(n,1);s=y+Noise;wavwrite(s,fs,'C:UsersdingyuDesktopÊý×ÖÐźŴ¦Àíeg2.wav');thr,sorh,deepapp,crit = ddencmp('den','wp',s);thr = 0.07

44、5;x = wpdencmp(s,sorh,6,'sym25',crit,thr,deepapp);N=80000;t=(0:1:N-1)/fs;f=5000;wavwrite(x,fs,'C:UsersdingyuDesktopÊý×ÖÐźŴ¦Àíeg1.wav');%С²¨½µÔëx=y/max(abs(y); SNR=10; signal=Gnoiseg

45、en(x,SNR); % µþ¼ÓÔëÉùN=length(x); time=(0:N-1)/fs; IS=.15; % ÉèÖÃIS% µ÷ÓÃSSBoll79m_2º¯Êý×öÆ×¼õoutput,voiceseg,vosl,SF,Ef=SSBoll79m_2(y,fs,IS,0.12);ol=length(output); % &#

46、176;Ñoutput²¹µ½ÓëxµÈ³¤if ol<N output=output; zeros(N-ol,1);endsound(output,fs);%µÍͨÂ˲¨s0=0.1*sin(2*pi*f*t);s=x+s0'Ft=12000;Fp=800;Fs=1000;wp=2*pi*Fp/Ft;ws=2*pi*Fs/Ft;n11,wn11=buttord(wp,ws,1,50,&#

47、39;s');b11,a11=butter(n11,wn11,'s');num11,den11=bilinear(b11,a11,0.5);z11=filter(num11,den11,s);X=fft(x);wavwrite(output,8000,'C:UsersdingyuDesktopÊý×ÖÐźŴ¦ÀímatlabÓïÒôʶ±ð1sshi1.wav&

48、#39;);axes(handles.axes2);plot(output);%wavwrite(x,fs,'C:UsersdingyuDesktopÊý×ÖÐźŴ¦Àíeg1.wav');title('È¥ÔëʱÓò²¨ÐÎ');set(handles.axes2,'XminorTick','o

49、n');grid on%wavplay(5*x,fs);%ƵÓò»æÍ¼n=length(output);%²ÉÑùµã¸öÊýdf=fs/(n-1);%·Ö±æÂÊf=(0:n-1)*df;%ÆäÖÐÿµãµÄƵÂ

50、Êx=abs(fft(y(1:n)/n*2); axes(handles.axes4);plot(f(1:n/8),x(1:n/8);title('È¥ÔëÆµÓò²¨ÐÎ');xlabel('f/hz','FontName','Times New Roman','FontSize',8) 小黄人变声代码:% - Executes on button press in pushbutto

51、n5.function pushbutton5_Callback(hObject, eventdata, handles)% hObject handle to pushbutton5 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)y,fs,nbits=wavread('C:UsersdingyuDesktopÊý×Ö

52、08;źŴ¦Àíeg.wav');sound(y,1.6*fs); 倒叙代码详见后面:% - Executes on button press in pushbutton6.function pushbutton6_Callback(hObject, eventdata, handles)% hObject handle to pushbutton6 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% hand

53、les structure with handles and user data (see GUIDATA)run daoxu.m % - Executes on button press in pushbutton7.function pushbutton7_Callback(hObject, eventdata, handles)% hObject handle to pushbutton7 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with

54、 handles and user data (see GUIDATA)y,fs,nbits=wavread ('C:UsersdingyuDesktopÊý×ÖÐźŴ¦Àíeg.wav');N=80000;t=(0:1:N-1)/fs;f=5000;s0=0.1*sin(2*pi*f*t);s=y+s0'wavplay(s,fs);axes(handles.axes1);plot(s);title('¼ÓÔ&

55、#235;ʱÓò²¨ÐÎ');set(handles.axes1,'XminorTick','on');%»­ÆµÓò²¨ÐÎn=length(s);%²ÉÑùµã¸öÊýdf=fs/(n-1);%·Ö±æÂÊf=(0

56、:n-1)*df;%ÆäÖÐÿµãµÄƵÂÊx=abs(fft(y(1:n)/n*2); axes(handles.axes3);plot(f(1:n/8),x(1:n/8);title('¼ÓÔëÆµÓò²¨ÐÎ');xlabel('f/hz','FontName','Time

57、s New Roman','FontSize',8) 工频噪声降噪代码:% - Executes on button press in pushbutton8.function pushbutton8_Callback(hObject, eventdata, handles)% hObject handle to pushbutton8 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user

58、data (see GUIDATA)y,fs,nbits=wavread ('C:UsersdingyuDesktopÊý×ÖÐźŴ¦Àíeg.wav');N=80000;t=(0:1:N-1)/fs;f=5000;s0=0.1*sin(2*pi*f*t);s=y+s0'Ft=12000;Fp=800;Fs=1000;wp=2*pi*Fp/Ft;ws=2*pi*Fs/Ft;n11,wn11=buttord(wp,ws,1,50,'s'

59、;);b11,a11=butter(n11,wn11,'s');num11,den11=bilinear(b11,a11,0.5);z11=filter(num11,den11,s);wavplay(4*z11,fs);axes(handles.axes2);plot(z11);title('¹¤ÆµÈ¥ÔëʱÓò²¨ÐÎ');set(handles.axes1,'XminorTick'

60、,'on');%»­ÆµÓò²¨ÐÎn=length(z11);%²ÉÑùµã¸öÊýdf=fs/(n-1);%·Ö±æÂÊf=(0:n-1)*df;%ÆäÖÐÿµãµÄƵÂÊx=

61、abs(fft(y(1:n)/n*2); axes(handles.axes4);plot(f(1:n/8),x(1:n/8);title('¹¤ÆµÈ¥ÔëÆµÓò²¨ÐÎ');xlabel('f/hz','FontName','Times New Roman','FontSize',8) 白噪声降噪代码:% - Executes on button pr

62、ess in pushbutton9.function pushbutton9_Callback(hObject, eventdata, handles)% hObject handle to pushbutton9 (see GCBO)% eventdata reserved - to be defined in a future version of MATLAB% handles structure with handles and user data (see GUIDATA)y,fs,nbits=wavread ('C:UsersdingyuDesktopÊý×ÖÐ

温馨提示

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

评论

0/150

提交评论