淮 阴 工 学 院
数字信号处理课程设计报告
题目:
基于 MATLAB 的语音处理系统设计
系 (院):
计算机工程学院
专
班
学
姓
业:
级:
号:
名:
计算机(嵌入式系统设计)
计算机 107*
10713061**
****
指导教师:
***********
学年学期:
2009 ~ 2010 学年 第 1 学期
2009 年 12 月 25 日
课题
名称
设计
目的
实验
环境
任务
要求
设计任务书
基于 MATLAB 的语音处理系统设计
1. 巩固所学的数字信号处理理论知识, 理解信号的采集、处理、传输、显示和存储过
程;
2. 综合运用专业及基础知识,解决实际工程技术问题的能力;
3. 学习资料的收集与整理,学会撰写课程设计报告。
1. 微型电子计算机(PC);
2. 安装 Windows 2000 以上操作系统,MATLAB 等开发工具。
1. 录制一段个人自己的语音信号,并对录制的信号进行采样;画出采样后语音信号的
时域波形和频谱图;给定滤波器的性能指标, 采用窗函数法和双线性变换设计滤波
器, 并画出滤波器的频率响应;然后用自己设计的滤波器对采集的信号进行滤波,
画出滤波后信号的时域波形和频谱, 并对滤波前后的信号进行对比,分析信号的变
化;回放语音信号;最后设计一个信号处理系统界面。
2. 利用课余时间去图书馆或上网查阅课题相关资料,深入理解课题含义及设计要求,
注意材料收集与整理;
3. 在第 15 周末之前完成预设计,并请指导教师审查,通过后方可进行下一步工作;
4. 结束后,及时提交设计报告(含纸质稿、电子稿),要求格式规范、内容完整、结论
正确,正文字数不少于 3000 字(不含代码)。
工作进度计划
序号
起止日期
工 作 内 容
1
2
3
4
2009.12.21~2009.12.21
在预设计的基础上,进一步查阅资料,完善设计方案。
2009.12.21~2009.12.24
设计总体方案,构建、绘制流程框图,编写代码,上机调试。
2009.12.24~2009.12.24
测试程序,完善功能,撰写设计报告。
2009.12.25
参加答辩,根据教师反馈意见,修改、完善设计报告。
指导教师(签章):
年
月
日
摘要
根据目前数字信号处理实验课程教学的现状,利用 Matlab(工程设计软件)
设计数字信号处理课程设计,并且给出了具体的软件实施方案。Matlab 功能强
大、简单易学、编程效率高,深受广大科技工作者的欢迎。特别是 Matlab 还具有
信号分析工具箱,不需具备很强的编程能力,就可以很方便地进行信号分析、处理
和设计。此次设计利用 Matlab 对录制的信号进行采样后;并画出采样后语音信
号的时域波形和频谱图;然后分别用窗函数法和双线性法设计的滤波器对采集的
信号进行滤波,画出滤波后信号的时域波形和频谱,并对滤波前后的信号进行对
比,分析信号的变化;回放语音信号;最后利用 GUI 设计一个信号处理系统界面。
关键字 Matlab 采样 频谱 窗函数 语音
目录
1. 数字信号课程的特点及设计目的 .................................... 1
2. 基于 Matlab 的课程设计 ........................................... 1
3.详细设计 ......................................................... 2
3.1.语音信号的采集 ............................................. 2
3.2.语音信号的时频分析 ......................................... 2
3.3. 设计 FIR 和 IIR 数字滤波器 ................................... 3
3.4. 用滤波器对语音信号进行滤波 ................................. 9
4.信号处理代码编写 ................................................ 10
5.运行与测试 ...................................................... 16
总结 .............................................................. 21
致谢 ............................................................. 222
参考文献 ......................................................... 233
数字信号处理课程设计
1.数字信号课程的特点及设计目的
《数字信号处理》课程是一门理论和技术发展十分迅速、应用非常广泛的前沿
性学科,他的理论性和实践性都很强,他的特点是:
(1)要求的数学知识多,包括高等代数、数值分析、概率统计、随机过程等。
(2)要求掌握的基础知识强,网络理论、信号与系统是本课程的理论基础。
(3)与其他学科密切相关,即与通信理论、计算机、微电子技术不可分,又是
人工智能、模式识别、神经网络等新兴学科的理论基础之一。
在学习这门课程时,普遍感到数字信号处理的概念抽象,对其中的分析方法
与基本理论不能很好地理解与掌握。因此,理解与掌握课程中的基本概念、基本
原理、基本分析方法以及综合应用所学知识解决实际问题的能力,是本次课程设
计中所要解决的关键问题。学习巩固所学的知识,加强理论和实际结合的能力,
培养综合设计能力与实际工作能力。
Matlab 语言是一种广泛应用于工程计算及数值分析 领域的新型高级语言,
Matlab 功能强大、简单易学、编程效率高,深受广大科技工作者的欢迎。特别
是 Matlab 还具有信号分析工具箱,不需具备很强的编程能力,就可以很方便地
进行信号分析、处理和设计。因此,选择用 Matlab 进行课程设计。
在学习这门课程时, 普遍感到数字信号处理的概念抽象, 对其中的分析方
法与基本理论不能很好地理解与掌握。为了巩固所学的数字信号处理理论知识,
对信号的采集、处理、传输、显示和存储等有一个系统的掌握和理解,我们应该
注意如下能力的培养:1、独立工作能力和创造力;2、综合运用专业及基础知识,
解决实际工程技术问题的能力;3、查阅图书资料、产品手册和各种工具书的能
力;4、编写技术报告和编制技术资料的能力。
2.基于 Matlab 的课程设计
巩固所学的数字信号处理理论知识,对信号的采集、处理、传输、显示和
存储等有一个系统的掌握和理解,录制一段个人自己的语音信号,并对录制的信
号进行采样;分析采样后语音信号的时域波形和频谱图;给定滤波器的性能指标,
采用窗函数法和双线性变换设计滤波器,并分析滤波器的频率响应;利用 MATLAB
1
数字信号处理课程设计
对语音信号进行 8000 点及 16000 点采样分析;然后用自己设计的滤波器对采集
的信号进行滤波,分析滤波后信号的时域波形和频谱,并对滤波前后的信号进行
对比,分析信号的变化;回放语音信号;最后,设计一个信号处理系统界面。
3.详细设计
3.1. 语音信号的采集
要求利用 Windows 下的录音机,录制一段自己的话音,时间在 1 s 内。然
后在 Matlab 软件平台下,利用函数 wavread 对语音信号进行采样,记住采样频
率和采样点数。通过 wavread 函数的使用,理解采样频率、采样位数等概念。将
话筒输入计算机的语音输入插口上,启动录音机。按下录音按钮,接着对话筒说话
“数字信号处理”,说完后停止录音,屏幕左侧将显示所录声音的长度。点击放音
按钮,可以实现所录音的重现。以文件名“2”保存入 D :\ MATLAB \ work 中。
可以看到,文件存储器的后缀默认为. wav ,这是 windows 操作系统规定的声音文
件存的标准。
3.2. 语音信号的时频分析
Matlab软件平台下,利用wavread函数对语音信号进行采样,记住采样频率
和采样点数,Wavread 函数调用格式
y=wavread(file)%读取 file 所规定的 wav 文件,返回采样值放在向量 y 中。
[y,fs,bits]=wavread(file) %采样值放在向量 y 中,fs 表示采样频率(hz),bits
表示采样位数。
y=wavread(file,N)%读取钱 N 点的采样值放在向量 y 中。
y=wavread(file,[N1,N2])%读取从 N1 到 N2 点的采样值放在向量 y 中。
对语音信号 speech.wav 进行采样其程序如下:
[y,fs,nbits]=wavered ('D:/2.wav');
%把语音信号进行加载入 Matlab 仿真
软件平台中
fs =8000;bits =32
首先画出语音信号的时域波形,然后对语音信号进行频谱分析。在 matlab
中利用 fft 对信号进行快速傅里叶变换,得到信号的频谱特性。
2
数字信号处理课程设计
其程序如下:
[y,fs,bits]=wavread ('d:/2.wav');
sound(y,fs,nbits); %回放语音信号
n = length (y) ;
Y=fft(y,n);
%求出语音信号的长度
%傅里叶变换
3.3. 设计 FIR 和 IIR 数字滤波器
根据语音信号的特点给出有关滤波器的新能指标:
1.通滤波器的性能指标
fp=1000Hz,fc=1200Hz,As=50db ,Ap=1dB
2.高通滤波器的性能指标
fp=3500Hz,fc=4000Hz,As=50dB,Ap=1dB;
3.带通滤波器的性能指标
fp1=1200Hz,fp2=3000hZ,fc1=1000Hz,fc2=3200Hz,
As=50dB,Ap=1dB
在 Matlab 中,可以利用函数 fir1 设计 FIR 滤波器,利用函数 butter,cheby1
和 ellip 设计 IIR 滤波器,利用 Matlab 中的函数 freqz 画出各步步器的频率响应。
分析如下:函数 fir1 默认的设计滤波器的方法为窗函数法,其中可选的窗函
数有 Rectangular Barlrtt Hamming Hann Blackman 窗,其相应的都有实现函数。
函数 butter,cheby1 和 ellip 设计 IIR 滤波器时都是默认的双线性变换法,所
以在设计滤波器时只需要代入相应的实现函数即可。
1.IIR 低通
Ft=8000;
Fp=1000;
Fs=1200;
wp=2*pi*Fp/Ft;
ws=2*pi*Fs/Ft;
fp=2*Ft*tan(wp/2);
fs=2*Fs*tan(wp/2);
3
数字信号处理课程设计
%求 S 域的频率响应的参数
[n11,wn11]=buttord(wp,ws,1,50,'s'); %求低通滤波器的阶数和截止频率
[b11,a11]=butter(n11,wn11,'s');
[num11,den11]=bilinear(b11,a11,0.5);
[h,w]=freqz(num11,den11); %根据参数求出频率响应
plot(w*8000*0.5/pi,abs(h));
legend('用 butter 设计');
grid
程序结果如下图:
图 2-1 IIR 低通滤波器
2.IIR 带通:
Fp1=1200;
Fp2=3000;
Fs1=1000;
Fs2=3200;
Ft=8000;
wp1=tan(pi*Fp1/Ft);
wp2=tan(pi*Fp2/Ft);
ws1=tan(pi*Fs1/Ft);
ws2=tan(pi*Fs2/Ft);
w=wp1*wp2/ws2;
4