基于 MATLAB 的语音信号分析与处理的课程设计.doc
华东交通大学基于matlab的语音信号分析与处理的课程设计
收藏
资源目录
压缩包内文档预览:(预览前20页/共21页)
编号:516920
类型:共享资源
大小:211.56KB
格式:RAR
上传时间:2015-11-12
上传人:QQ28****1120
认证信息
个人认证
孙**(实名认证)
辽宁
IP属地:辽宁
3.6
积分
- 关 键 词:
-
毕业设计论文
- 资源描述:
-
华东交通大学基于matlab的语音信号分析与处理的课程设计,毕业设计论文
- 内容简介:
-
课程设计 (论文 )任务书 信息工程 学院 通信工程 专业 05-(1) 班级 一、课程设计 (论文 )题目 基于 MATLAB 的语音信号分析与处理的课程设计 二、课程设计 (论文 )工作自 2007 年 12月 31 日起至 2008 年 1 月 4 日止。 三、课程设计 (论文 ) 地点 : 15#520 四、课程设计 (论文 )内容要求: 1. 本课程设计的目的 : 综合运用数字信号处理的理论知识进行频谱分析和滤波器设计,通过理论推 导得出相应结论,再利用 MATLAB 作为编程工具进行计算机实现,从而加深对所学知识的理解,建立概念。 2. 课程设计的任务及要求 : . 课程设计的基本要求 : 学会 MATLAB 的使用,掌握 MATLAB 的程序设计方法。 掌握在 Windows 环境下语音信号采集的方法。 掌握数字信号处理的基本概念、基本理论和基本方法。 掌握 MATLAB 设计 FIR 和 nR 数字滤波器的方法。 学会用 MATLAB 对信号进行分析和处理。 . 课程设计的内容 : 录制一段自 己的语音信号,并对录制的信号进行采样;画出采样后语音信号的时域波形和频谱图;给定滤波器的性能指标,采用窗函数法或双线性变换设计滤波器,并画出滤波器的频率响应;然后用自己设计的滤波器对采集的语音信号进行滤波,画出滤波后信号的时域波形和频谱,并对滤波前后的信号进行对比,分析信号的变化;回放语音信号;最后,用 MATLAB 设计一信号处理系统界面。 nts 目 录 第 一 章 绪 论 1 第二 章 总体设计及思路分析 3 第三 章 程序设计实现 4 第四章 总 结 5 . 语音信号的采集 1. . 语音信号的频谱分析 2. . 设计数字滤波器和画出频率响应 3. . 用滤波器对信号进行滤波 4. . 比较滤波前后语音信号的波形及频谱 5. . 回放语音信号 6. . 设计系统界面 7. . 调试分析 8. . 设计小结 8. . 设计心得体会 9. . 参考文献 10. nts 第一章 绪论 MATLAB是一种科学计算软件 ,主要适用于矩阵运算和信息处理领域的分析设计 ,它使用方便 ,输入简捷 ,运算高效 ,内容丰富 ,并且很容易由用户自行扩展 .MATLAB 当前已成为美国和其他发达国家在大学教 学和教学研究中最常用而必不可少的工具 . 传统的数字滤波器的设计过程复杂,计算工作量大,滤波特性调整困难,影响了它的应用。本文介绍了利用 MATLAB 快速有效的设计由软件组成的常规数字滤波器的设计方法 ,综合运用数字信号处理的理论知识进行频谱分析和滤波器设计,通过理论推导得到相应结论 。给出了使用 MATLAB语言进行程序设计 并 进行界面设计的详细步骤。利用 MATLAB设计滤波器,可以随时对比设计要求和滤波器特性调整参数,直观简便,极大的减轻了工作量,有利于滤波器设计的最优化。 利用 MATLAB 作为编程工具进行计算机实现 ,从而加深对所学知识的理解,建立概念。 nts 第二章 总体设计及思路分析 1课程设计基本要求 学会 MATLAB 的使用,掌握 MATLAB 的程序设计方法。 掌握在 Windows 环境下语音信号采集的方法。 掌握数字信号处理的基本概念、基本理论和基本方法。 掌握 MATLAB 设计 FIR 和 nR 数字滤波器的方法。 学会用 MATLAB 对信号进行分析和处理。 2课程设计内容 录制一段自己的语音信号,并对录制的信号进行采样 ;画出采样后语音信号的时域波形和频谱图;给定滤波器的性能指标,采用窗函数法或双线性变换设计滤波器,并画出滤波器的频率响应;然后用自己设计的滤波器对采集的语音信号进行滤波,画出滤波后信号的时域波形和频谱,并对滤波前后的信号进行对比,分析信号的变化;回放语音信号;最后,用 MATLAB 设计一信号处理系统界面。 2.3.1 声音的导入、采样和频谱分析 声音文件的导入:我们可以采集语音信号利用计算机 Windows 下的录音机设备,可以采集语音信号并采样,得出数据文件 12.wav保存在 MATLAB 的 work 路径 下,在 M 文件中键入:“ x1=wavread(I:work12.wav );”读取语音信号的数据,赋给变量 x1。并且播出声音,键入“ sound(x1,22050);”。对声音型号进行采样和频谱分析:我们对信号做 1024 点 FFT 变换;然后在对型号做出时域波形图、 FFT 频谱图。 2.3.2 滤波器的选择和分析 数字滤波器是一种用来过滤时间离散信号的数字系统,通过对抽样数据进行数学处理来达到频域滤波的目的。根据其单位冲激响应函数的时域特性可分为两类:无限冲激响应( IIR)滤波器和有限冲激响应( FIR) 滤波器。与 FIR滤波器相比, IIR的实现是非递归的 。所以我们这次设计在 MATLAB中设计的就是 IIR数字滤波器 因此这次设计采用一个 BUTTERWORTH 的低通滤波器,并且我们采取双线性变换法来实现。 N,Wn=buttord(Wp,Ws,Rp,Rs)估算巴特沃思滤波器的阶数 N 和 3dB 截止频率 Wn。输入参数是通带截止频率 Wp,阻带截止频率 Ws,通带波纹 Rp,阻带波纹 Rs. 2.3.3 回放语音信号 在 Matlab 中,函数 sound 可以对声音进行回放。其调用格式: sound(x, fs, bits);可以感觉滤波前后的声音有变化 。 反复听取原信号和滤波后的声音,进行对比;不停的调整滤波器的参数。最后选择一个效果不错的滤波器使用。 2.3.4 整合图形界面 最后设计一个人机对话界面,分别加入滤波前的原信号、和滤波后的信号。并在界面上画出采样和频谱分析。 nts 第三章 程序设计实现 总体概述:本程序分为五块:原始语音信号读入、声音信号采样 后语音信号的时域波形 和频谱分析图、 3.1 声音信号的导入 程序: figure(1) x1,fs,nbits=wavread(C:MATLAB6p5leakeypjl.wav); %读取语音信号的数据,赋给变量 x1 sound(x1,fs); %播放语音信号 3.1 声音信号采样 后语音信号的时域波形 和频谱分析 程序: figure(1) x1,fs,nbits=wavread(pjl.wav); %读取语音信号的数据,赋给变量 x1 y1=fft(x1,1024); %对信号做 1024 点 FFT 变换 f=fs*(0:255)/1024; subplot(211); plot(x1); %做原始语音信号的时域图形 title(原始语音信号 );xlabel(时间 );ylabel(幅度 ); subplot(212); h,w=freqz(x1); %绘制原始语音信号的频 率响应图 plot(w,abs(h);title(频率响应图 ); 程序图: 图 3.1 nts 3.2 Butterworth滤波器的设计 程序: figure(1) wp=0.1*pi; ws=0.3*pi; Rp=30; Rs=120; Fs=fs; 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); bz,az=bilinear(b,a,Fs); %用双线性变换法实现模拟滤波器到数字滤波器的转换 H,W=freqz(bz,az); %绘制频率响应曲线 plot(W*Fs/(2*pi),abs(H) xlabel(频率 Hz) ylabel(频率响应幅度 ) title(Butterworth) 程序图: 图 3.2 nts 3.3 滤波后 语音信号的时域波形 和频谱分析 程序: figure(1) x1,fs,nbits=wavread(pjl.wav); %读取语音信号的数据,赋给变量 x1 y1=fft(x1,1024); %对信号做 1024点 FFT变换 f=fs*(0:255)/1024; subplot(211); plot(x1); %做原始语音信号的时域图形 title(原始语音信号 );xlabel(时间 );ylabel(幅度 ); subplot(212); h,w=freqz(x1); %绘制原始语音信号的频率响应图 plot(w,abs(h);title(频率响应图 ); 程序图: 图 3.3 nts 3.4 滤波后语音信号输出 程序: figure(1) x1,fs,nbits=wavread(C:MATLAB6p5leakeypjl.wav); %读取语音信号的数据,赋给变量 x1 y1=fft(x1,1024); %对信号做 1024点 FFT变换 f=fs*(0:255)/1024; wp=0.1*pi; ws=0.3*pi; Rp=30; Rs=120; Fs=fs; 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); bz,az=bilinear(b,a,Fs); %用双线性变换法实现模拟滤波器到数字滤波器的转换 sf=filter(bz,az,x1); y2=fft(sf,1024); sound(sf,fs); nts 3.5 滤波前后 时域图 比较 程序: f1=filter(bz,az,x1); subplot(2,1,1) plot(t,x1) %画出滤波前的时域图 title(滤波前的时域波形 ); subplot(2,1,2) plot(t,f1); %画出滤波后的时域图 title(滤波后的时域波形 ); 时域图比较如下: 图 3.4 滤波前后时域波形图比较图 nts 3.6 滤波前后频谱比较 程序: sound(f1,22050); %播放滤波后的信号 F0=fft(f1,1024); f=fs*(0:511)/1024; y2=fft(x1,1024); subplot(2,1,1); plot(f,abs(y2(1:512); %画出滤波前的频谱图 title(滤波前的频谱 ) xlabel(Hz); ylabel(fuzhi); subplot(2,1,2) plot(f,abs(F0(1:512); %画出滤波后的频谱图 title(滤波后的频谱 ) xlabel(Hz); ylabel(fuzhi); 滤波前后频谱比较图: 图 3.5 滤波前后频谱比较图 nts 滤波前后波形与频谱比较: 从滤波前后的时域波形看, 滤波前后波形基本上不变,但是 滤波后的波形比滤波前的采样更精确一点,密集地方变少,幅度变小。而 从频谱图看,滤波后比滤波前的频谱更宽一点,集中性变好。从反复听取语音信号得来,滤波后的没有滤波前的响亮,声音有点浑厚,基本保持了原始声音,明显看出滤波的效果。 3.6 图形整合: 本过程使用 MATLAB 的 guide 命令进行界面的整合。 输入 guide 命令后,会产生 2 个文件,一个为 .fig,一个为 .m,两个文件。 FIG 文件中保存了我们能够看到的的用户界面代码,而 M 文件里保存着 GUI 进行调用的各种函数和代码。当我们编辑好一个 GUI 并激活它的时候, GUIDE 将运行 M 文件,执行里面的调用。 设置了 7 个 Push Button,它们是按钮控件,单击后自动弹起,常来做出发、调用一些事件。我们这里分别设置为: oldwave ,yuansheng ,butterworth ,shiyubijiao ,lvhousheng ,pinpu bijiao 。我们在本程序中就是要用 Push Button 来触发这六个编写好的程序。 下面有两个 Axes,都含有坐标轴的绘图区域,我们需要实现的正是在按下 Push Button后在 Axes中能够显示所要出现的采样和频谱分析图。 在最左边我们设置了一个 Static Text,这是一个静态文本区, 可以在 GUI中拖动每个控件的位置,把它调整为我们上图中的位置。然后我们设置每个按钮的属性及与 M 文件的连接,之后再运行 GUI 程序,这样让 MATLAB 自动生成一个对应的 M 文件。在当中我们再把我们编好的程序整合到自动生成的界面 M文件中。 我们可以发现这正是我们要需要的 Push Button。 在其下我们可以粘贴上我们编好的程序,这样 untitled4 这个按钮鼠标按下后就会自动执行我们的原声音的导入、采样和频谱分析。 如此类推我们可以分别实现我们上述的程序。 下面就是 Axes控件的运用。我们可以在我们编好的程序中找到我们的 plot程序段,我们 plot语句就是单独的画出每一个采样和频谱图。我们在 GUI中我们可以将 plot程序段用axes(handles.axes n );代替,当中 n代表你想要把 plot的图放在第几个 Axes控件中,即输出图形的位置。 这样我们就大概的设置出了每个控件实现的主要功能。我们再次打开我们的 GUI 可视nts 化界面,我们再次对他进行设置。我们可以把每个控件的名字改为我们所需要的名字。这里我们就需要用到每个控件的对象属性查看器 。当中我们可以找到 String 命令行,其值为一个字符串,为显示在控件上的文本串。我们可以运用此命令行改为我们所需要的名称。 最后运行 GUI程序,我们的图形界面就和我们编好的程序整合好了。分别点击每个 Push Button我们就可以看到我们所需要的采样和频谱分析图。 3.6.1 整合界面: 整合界面图: 图 3.6 整合界面总图 nts 3.6.2 按钮 yuanshiyuying功能 : 播放原始录音“我叫潘金龙”。 3.6.3 按钮 yuanshi功能 :产生原始语音 信号图和频谱图 图形: 图 3.7 按钮 yuanshi产生 3.6.4 按钮 Butterworth功能 : 产生 Butterworth滤波器 图形: 图 3.8 按钮 Butterworth nts 3.6.5 按钮 lubohoutu功能 :产生滤波后语音信号图和频谱图。 图形: 图 3.9 按钮 lubohoutu产生 3.6.6 按钮 boxingbijiao功能 :产生滤波前后波形比较图。 图形: 图 3.9 按钮 boxingbijiao产生 nts 3.6.7 按钮 pinpubijiao功能 : 产生滤波前后频谱比较图。 图形: 图 3.10 按钮 pinpubijiao产生 3.6.8 按钮 lubohouyuyin功能 : 播放 滤波后 录音“我叫潘金龙”。 nts 第四章 小结 本次我们主要是围绕声音信号,运用 MATLAB 对其进行分析。我们把声音采样再用滤波器对其进行滤波,是运用 MATLAB 中的 IIR滤波器对其进行分析。 通过这次课设过程我们能够不仅对 MATLAB的使用和 MATLAB滤波器的运用有更深刻的理解, 加深了对课堂抽象概念的理解,巩固了课堂上所学的理论知识,并能很好地理解与掌握数字信号处理中的基本概念、基本原理、基本分析方法 , 而且我们对 MATLAB 中的界面设计有了新的体验。我们把数字信号处理的理论知识和 MATLAB 运用联系在了一起。有利于我们更好的掌握理论知识。 培养了我们利用 matlab 对进行信号分析,处理和设计的能力,以及独立思考、善于创造,运用综合知识的能力。 nts 第五章 谢辞 我非常感谢指导老师张青苗老师在论文选题以及研究方法上给予的悉心指导,使我尽快理清思路,纠正错误,顺利完成课程设计的写作。张老师广博的学识,如沐春风的教诲令我受益匪浅。同时让我更加明白一定要把自己所学的知识学扎实,这样才有利于我以后的学习或者是工作。 我还要感谢我的舍友,他们在学习和生活上热心帮助,并在论文写作过程中提出 宝贵的意见和给予无私的帮助。是他们,让我体会到一个集体的凝聚力,让我学会在挫折中依然选择坚强,让我懂得团体的重要性。 nts 附录(源程序) function varargout = yuanshiyuyin1(varargin) % YUANSHIYUYIN1 M-file for yuanshiyuyin1.fig % YUANSHIYUYIN1, by itself, creates a new YUANSHIYUYIN1 or raises the existing % singleton*. % % H = YUANSHIYUYIN1 returns the handle to a new YUANSHIYUYIN1 or the handle to % the existing singleton*. % % YUANSHIYUYIN1(Property,Value,.) creates a new YUANSHIYUYIN1 using the % given property value pairs. Unrecognized properties are passed via % varargin to yuanshiyuyin1_OpeningFcn. This calling syntax produces a % warning when there is an existing singleton*. % % YUANSHIYUYIN1(CALLBACK) and YUANSHIYUYIN1(CALLBACK,hObject,.) call the % local function named CALLBACK in YUANSHIYUYIN1.M with the given input % arguments. % % *See GUI Options on GUIDEs 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 yuanshiyuyin1 % Last Modified by GUIDE v2.5 07-Jan-2008 14:33:17 % Begin initialization code - DO NOT EDIT gui_Singleton = 1; gui_State = struct(gui_Name, mfilename, . gui_Singleton, gui_Singleton, . gui_OpeningFcn, yuanshiyuyin1_OpeningFcn, . gui_OutputFcn, yuanshiyuyin1_OutputFcn, . gui_LayoutFcn, , . gui_Callback, ); if nargin & isstr(varargin1) gui_State.gui_Callback = str2func(varargin1); end if nargout varargout1:nargout = gui_mainfcn(gui_State, varargin:); else nts gui_mainfcn(gui_State, varargin:); end % End initialization code - DO NOT EDIT % - Executes just before yuanshiyuyin1 is made visible. function yuanshiyuyin1_OpeningFcn(hObject, eventdata, handles, varargin) % This 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 unrecognized PropertyName/PropertyValue pairs from the % command line (see VARARGIN) % Choose default command line output for yuanshiyuyin1 handles.output = hObject; % Update handles structure guidata(hObject, handles); % UIWAIT makes yuanshiyuyin1 wait for user response (see UIRESUME) % uiwait(handles.figure1); % - Outputs from this function are returned to the command line. function varargout = yuanshiyuyin1_OutputFcn(hObject, eventdata, handles) % varargout 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 structure varargout1 = handles.output; % - 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) % - Executes on button press in pushbutton2. function pushbutton2_Callback(hObject, eventdata, handles) nts % 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) % - 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 futu
- 温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

人人文库网所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
2:不支持迅雷下载,请使用浏览器下载
3:不支持QQ浏览器下载,请用其他浏览器
4:下载后的文档和图纸-无水印
5:文档经过压缩,下载后原文更清晰
|