1、基于 MATLAB 的个人语音信号处理 课程设计说明书 1 目 录 洗手 摘要 错误 !未定义书签。 洗手 Abstract 错误 !未定义书签。 洗手 1 MATLAB 简介 错误 !未定义书签。 洗手 1.1 MATLAB 的概况 3 洗手 1.2 MATLAB 的语言特点 3 洗手 2 语音信号的采集 5 洗手 3 语音 信号 的频谱分析 错误 !未定义书签。 洗手 4 设计数字滤波器和画出其频率响应 8 洗手 4.1 FIR 滤波器的分析与设计 8 洗手 4.1.1 窗函数法设计 FIR 滤波器 8 洗手 4.1.2 FIR 低通滤波器 9 洗手 4.1.2.1 程序 设计及 流程图
2、9 洗手 4.1.2.2 输出结果仿真 10 洗手 4.1.3 FIR 高通滤波器 10 洗手 4.1.3.1 程序 设计及 流程图 10 洗手 4.1.3.2 输出结果仿真 11 洗手 4.1.4 FIR 带通滤波器 12 洗 手 基于 MATLAB 的个人语音信号处理 课程设计说明书 2 4.1.4.1 程序 设计及 流程图 12 洗手 4.1.4.2 输出结果仿真 13 洗手 4.2 IIR 滤波器的分析与设计 错误 !未定义书签。 洗手 4.2.1 双线性变换法设计 IIR 滤波器 11 洗手 4.2.2 IIR 低通滤波器 14 洗手 4.2.2.1 程序 设计及 流程图 错误 !未
3、定义书签。 洗手 4.2.2.2 输出结果仿真 错误 !未定义书签。 洗手 4.2.3 IIR 高通滤波器 错误 !未定义书签。 洗手 4.2.3.1 程序 设计及 流程图 错误 !未定义书签。 洗手 4.2.3.2 输出结果仿真 错误 !未定义书签。 洗手 4.2.4 IIR 带通滤波器 错误 !未定义书签。 洗手 4.2.4.1 程序 设计及 流程图 错误 !未定义书签。 洗手 4.2.4.2 输出结果仿真 20 洗手 5 声音信号的滤波 21 洗手 5.1 对信号进行滤波的流程 21 洗手 5.2 对信号进行滤波的仿真 21 洗手 5.2.1 滤波前后的时域对比 21 洗手 5.2.2
4、滤波前后的频域对比 23 洗手 基于 MATLAB 的个人语音信号处理 课程设计说明书 3 6 总结及心得 体会 23 洗手 7 参考文献 24 洗手 7 附录 24 洗手 洗手 洗手 1 摘 要 洗手 MATLAB 语言是一种广泛应用于工程计算及数值分析领域的新型高级语言 ,MATLAB 功能强大 、 bef简单易学 、 beef编程效率高 , 吃饭 深受广大科技工作者的欢迎 。 洗手 特别是 MATLAB 还具有信号分析工具箱 , 吃饭 不需具备很强的编程能力 , 吃饭 就可以很方便地进行信号分析 、 bef处理和设计 。洗手洗手 MATLAB 为数据分析和数据可视化 、 beef算法和应
5、用程序开发提供了最核心的数学和高级图形工具 。 洗手 根据它提供的 500 多个数学和工程函数 , 吃饭 工程技术人员和科学工作者可以在它的集成环境中交互或编程以完成各自的计算 。 洗手 MATLAB 中集成了功能强大的语音信号处理工具箱 。 洗手 由于 MATLAB 语言的语法特征与 C 语言极为相似 , 吃饭 而且 更加简单 , 吃饭 更加符合科技人员对数学表达式的书写格式 , 吃饭 而且这种语言可移植性好 、 bef可扩展性强 , 吃饭 再加上其中有丰富的语音信号处理函数 , 吃饭 所以 MATLAB 在语音信号处理的应用中具有很大的优势 。 洗手 洗手 为了巩固所学的数字信号处理理论知
6、识 ,使学生对信号的采集 、 bef处理 、 bef传输 、 bef显示和存储等有一个系统的掌握和理解 , 吃饭 精心地安排了课程设计的内容 : bef录制一段个人自己的语音信号 ,吃饭 并对录制的信号进行采样 ; bef画出采样后语音信号的时域波形和频谱图 ; bef给定滤波器的性能指标 , 吃饭 采用窗函数法和双线性变换设计滤波器 , 吃饭 并画出滤波器的频率响应 ; bef然后用自己设计的滤波器对采集的信号进行滤波 , 吃饭 画出滤波后信号的时域波形和频谱 , 吃饭 并对滤波前后的信号进行对比 , 吃饭 分析信号的变化 ; bef回放语音信号 ; bef最后 , 吃饭 设计一个信号处理系
7、统界面 。 洗手洗手 关键词 : beefMATLAB, 吃饭 语音信号处理 洗手 洗手 2 Abstract 洗手 MATLAB language is a widely used in engineering calculation and numerical analysis domain new languages, and MATLAB powerful functions, easy to operate, programming, high efficiency, favored by the vast number of scientific and technical wor
8、kers welcome. Especially MATLAB also has signal analysis toolbox, without the need to have strong ability of programming, it can be easily signal analysis, processing and design.洗手 MATLAB for data analysis and data visualization, algorithm and application development provides the most core of math a
9、nd advanced graphical tool. According to provide it with the more than 500 math and engineering function, engineering and technical personnel and scientific workers may in its integration environment interactive or programming to complete their calculations. MATLAB integration of the powerful speech
10、 signal processing toolbox. Because of MATLAB language grammatical features and C language is very similar, and simpler, more in line with the scientific and technical personnel to the mathematical expression of the written form, and the language portability good, extensible, plus one is rich in spe
11、ech signal processing function, so MATLAB in speech signal processing applications of great advantage.洗手 In order to strengthen the learning of digital signal processing theory knowledge, enables the student to the signal collection, processing and transmission, display and storage, etc have a syste
12、m of mastery and understanding, meticulously arranged curriculum design of content: making a video personal own voice signal, and then the recording of signal sampling, Draw after speech signal sampling time domain waveform and spectrum diagrams, Given filter performance index, the window function m
13、ethod and bilinear transformation design filter, and draw the filter frequency response, Then use the design of your own filters to sampled signal for filter and draw the filtered signal waveform and spectrum, and time domain to filter the signal, compared before and after the analysis of signal cha
14、nges, Playback speech signal, Finally, design a signal processing system interface.洗手 Keywords: MATLAB, the speech signal processing 洗手 3 1 MATLAB 简介 洗手 1.1 MATLAB 的概况 洗手 MATLAB 是矩阵实验室( Matrix Laboratory)之意 。 洗手 除具备卓越的数值计算能力外 , 吃饭 它还提供了专业水平的符号计算 , 吃饭 文字处理 , 吃饭 可视化建模仿真和实时控制等功能 。 洗手洗手 MATLAB 的基本数据单位是矩
15、阵 , 吃饭 它的指令表达式与数学 , 吃饭 工程中常用的形式十分相似 ,吃饭 故用 MATLAB 来解算问题要比用 C、 beefFORTRAN 等语言完相同的事情简捷得多 。 洗手洗手 MATLAB 包括拥有数百个内部函数的主包和三十几种工具包 (Toolbox)。 洗手 工具包又可以分为功能性工具包和学科工具包 。 洗手 功能工具包用 来扩充 MATLAB 的符号计算 、 beef可视化建模仿真 、 bef文字处理及实时控制等功能 。 洗手 学科工具包是专业性比较强的工具包 、 bef控制工具包 、beef信号处理工具包 、 bef通信工具包等都属于此类 。 洗手洗手 开放性使 MATL
16、AB 广受用户欢迎 .除内部函数外 , 吃饭 所有 MATLAB 主包文件和各种工具包都是可读可修改的文件 , 吃饭 用户通过对源程序的修改或加入自己编写程序构造新的专用工具包 。 洗手洗手 1.2 MATLAB 的语言特点 洗手 MATLAB 最突出的特点就是简洁 。 洗手 MATLAB 用更直观的 , 吃饭 符合人们思维习 惯的代码 , 吃饭 代替了 C 和 FORTRAN 语言的冗长代码 。 洗手 MATLAB 给用户带来的是最直观 , 吃饭 最简洁的程序开发环境 。 洗手 以下简单介绍一下 MATLAB 的主要特点 : beef洗手 1语言简洁紧凑 , 吃饭 使用方便灵活 , 吃饭 库
17、函数极其丰富 。 洗手 MATLAB 程序书写形式自由 , 吃饭 利用起丰富的库函数避开繁杂的子程序编程任务 , 吃饭 压缩了一切不必要的编程工作 。 洗手 由于库函数都由本领域的专家编写 , 吃饭 用户不必担心函数的可靠性 。 洗手洗手 2运算符丰富 。 洗手 由于 MATLAB 是用 C 语言编写的 , 吃饭 MATLAB 提供了和 C 语言几乎一 样多的运算符 , 吃饭 灵活使用 MATLAB 的运算符将使程序变得极为简短 。 洗手洗手 3 MATLAB 既具有结构化的控制语句(如 for 循环 , 吃饭 while 循环 , 吃饭 break 语句和 if 语句) ,吃饭 又有面向对象
18、编程的特性 。 洗手洗手 4程序限制不严格 , 吃饭 程序设计自由度大 。 洗手 例如 , 吃饭 在 MATLAB 里 , 吃饭 用户无需对矩阵预定义就可使用 。 洗手洗手 5程序的可移植性很好 , 吃饭 基本上不做修改就可以在各种型号的计算机和操作系统上运行 。洗手洗手 6 MATLAB 的图形功能强大 。 洗手 在 FORTRAN 和 C 语言里 , 吃饭 绘图都很不 容易 , 吃饭 但在 MATLAB里 , 吃饭 数据的可视化非常简单 。 洗手 MATLAB 还具有较强的编辑图形界面的能力 。 洗手洗手 7 MATLAB 的缺点是 , 吃饭 它和其他高级程序相比 , 吃饭 程序的执行速度
19、较慢 。 洗手 由于 MATLAB的程序不用编译等预处理 , 吃饭 也不生成可执行文件 , 吃饭 程序为解释执行 , 吃饭 所以速度较慢 。 洗手洗手 8功能强大的工具箱是 MATLAB 的另一特色 。 洗手 MATLAB 包含两个部分 : beef核心部分和各种可选的工具箱 。 洗手 核心部分中有数百个核心内部函数 。 洗手 其工具箱又分为两类 : bef功能性工具箱和学科性工具箱 。 洗手洗手 9源程序的开放性 。 洗手 开放性也许是 MATLAB 最受人们欢迎的特点 。 洗手 除内部函数以外 , 吃饭所有 MATLAB 的核心文件和工具箱文件都是可读可改的源文件 , 吃饭 用户可通过对源
20、文件的修改以及加入自己的文件构成新的工具箱 。 洗手洗手 4 2 语音信号的采集 洗手 首先利用 Windows 下的录音机 , 吃饭 录制一段自己的话音 , 吃饭 时间在 1 s 内 , 吃饭 存为文件 : befmusic.wav。洗手 然后在 MATLAB 软件平台下 , 吃饭 利用函数 wavread 对语音信号进行采样 , 吃饭 记下采样频率和采样点数为 : befPCM 44.100 kHz, 16 位 。 洗手 通过 wavread 函数的使用 , 吃饭 我们能很快理解采样频率 、 beef采样位数等概念 。 洗手 利用函数 wavread 对语音信号的采集的程序如下 : bee
21、f洗手 close all;beef 洗手 i=1;beef 洗手 x,fs,bits=wavread(music.wav);beef %x: beef语音数据 ; beeffs: beef采样频率 ; befbits: beef采样点数 洗手 sound(x,fs,bits);beef %话音回放 洗手 N=length(x);beef 洗手 n=0:N-1;beef洗手 figure(i);beef 洗手 subplot(2,1,1);beef 洗手 plot(n,x);beef %画出原始语音信号的波形 洗手 xlabel(n);beef 洗手 ylabel(x(n);beef 洗手 t
22、itle(原始语音信号 );beef 洗手 subplot(2,1,2);beef 洗手 H,f=freqz(x,1,512,fs);beef 洗手 plot(f,20*log10(abs(H);beef %画出原始语音信号的频谱 洗手 xlabel(n);beef 洗手 ylabel(x(n);beef 洗手 title(原始语音信号的频谱 );beef 洗手 文件名 ywavread 洗手 运行结果 : beeffs = 22.050 kHz 洗手 bits =16 洗手 5 洗手 图 1 原始语音信号及其频谱 洗手 洗手 洗手 6 3 语音 信号 的频谱分析 洗手 先画出语音信号的时域波
23、形 , 吃饭 然后对语音号进行快速傅里叶变换 , 吃饭 得到信号的频谱特性 。 洗手 语音信号的 FFT 频 谱分析程序如下 : bef洗手 f=fft(x,N);beef %对语音号进行快速傅里叶变换 ,得出频谱 洗手 i=i+1;beef 洗手 figure(i);beef 洗手 plot(abs(n),abs(f);beef 洗手 xlabel(k);beef 洗手 ylabel(|y(k)|);beef 洗手 title(FFT 后的波形 );beef 洗手 运行结果 : beef洗手 图 2 傅里叶变换后 的频谱 洗手 7 4 设计数字滤波器和画出其频率响应 洗手 要求用窗函数法和双
24、线性变换法设计以下三种数字滤波器 , 吃饭 其性能指标如下 : bef洗手 a.低通滤波器性能指标 fb=1000hz ,fc=1200hz ,最大衰减 As=100db ,最小衰减 Ap=1db ; beef洗手 b.高通滤波器性能指标 fs=4800hz,fb=5000hz, 最大衰减 As=100db , 吃饭 最小衰减 Ap=1db ; bef 洗手 c.带通滤波器性能指标 fb1=1200hz, 吃饭 fb2=3000hz , 吃饭 fc1=1000hz, fc2=3200hz, 吃饭 最大衰减 As=100db , 吃饭 最小衰减 Ap=1db ; beef 洗手 4.1 FIR
25、滤波器的分析与设计 洗手 IIR 滤波器的最大缺点是不容易实现线性相位 , 吃饭 而在语音 、 bef图像 、 bef数据通信等系统中普遍都要求数字滤波器具有线性相位特性 , 吃饭 FIR 滤波器正是因为具有线性相位特性因而在各个科技领域都获得了广泛的应用 。 洗手 设计 FIR 常用方法有窗函数法 、 bef频率采样法等 , 吃饭 本次课程设计采用的是窗函数法 。 洗 手 洗手 4.1.1 窗函数法设计 FIR 滤波器 洗手 FIR 滤波器的设计目标就是通过傅里叶变换 , 吃饭 得到理想滤波器与近似数字滤波器在频域上的对应关系为 , 吃饭 就称为窗函数 。 洗手 用实际的系统函数逼近理想的系
26、统函数时 , 吃饭 其精确程度取决于窗函数的频率特性 。 洗手 经过截取后 , 吃饭 会带来误差 , 吃饭在频域上引起截断效应 , 吃饭 称为吉布斯效应 (Gibbs)。 洗手 为了改善这种情况 , 吃饭 需要窗函数的主瓣宽度尽可能窄 , 吃饭 以获得最小的过渡带 ; bef旁瓣相对值尽可能小 , 吃饭 以使通带波纹小 , 吃饭 并且阻带衰减大 。 洗手 实际上 , 吃饭 这两个要求并不能同时满足 , 吃饭 如何设计尽量满足这两个条件的窗函数就是用窗函数的关键所在 。 洗手 用窗函数设计 FIR 滤波器 , 吃饭 需要根据给定的滤波器指标选择适当的窗函数和窗函数的宽度 N。 洗手洗手 利用窗函
27、数法设计 FIR 滤波器的步骤为 : beef洗手 根据设计的技术要求确定待求滤波器的单位脉冲响应或频域响应 。 洗手洗手 根据实际中对过渡带和阻带衰减的要求 , 吃饭 选择窗函数的形式 , 吃饭 并估计窗长度 N。 洗手洗手 计算滤波器的单位脉冲响应 。 洗手洗手 检验所设计的滤波器的性能 , 吃饭 根据是否达到设计指标重复上述步骤 。 洗手洗手 4.1.2 FIR 低通滤波器 洗手 4.1.2.1 程序设计及流程图 洗手 ( 1)程序设计 洗手 fp=1000;beef s=1200;beefAs=120;beefFs=22050;beef %确定技术指标 洗手 wp=2*pi*fp/Fs
28、;beef ws=2*pi*fs/Fs;beef %求归一化频率 洗手 wo=ws-wp;beef %求过渡带 洗手 beta=0.1102*(As-0.87);beef %求凯泽窗函数参数 洗手 N=ceil(As-8)/2.285/wo);beef %由过渡带决定 N 的值 洗手 wc=(wp+ws)/2/pi;beef 洗手 b=fir1(N,wc,kaiser(N+1,beta);beef 洗手 Hw,w=freqz(b,1);beef 洗手 figure(1);beef 洗手 plot(w*Fs/2/pi,20*log10(abs(Hw);beef %绘制频率响应曲线 洗手 grid ;beef洗手 title(FIR 低通滤波器 );beef 洗手 ( 2) 程序流程图 洗手 凯泽窗低通滤波器设计流程图如图 3 所示 : beef洗手 洗手 洗手 洗手 jjdj eWeHeH *21 nw开始 确定 模拟 低通滤波器的 技术指标 技术指标从 模拟到数字 转换 利用 fir1 函数确定滤波器的实际单位脉冲响应h(n) 利用 freqz 函数确定幅频响应 作出凯泽窗低通滤波器的幅频响应曲线 计算中心频率、过渡带宽,设定旁瓣高度 alfa 结束