数字信号处理课程设计
一.课程设计的主要目的:
1.学会 MATLAB 的使用,掌握 MATLAB 的程序设计方法;
2.掌握在 Windows 环境下语音信号采集的方法;
3.掌握数字信号处理的基本概念、基本理论和基本方法;
4.掌握 MATLAB 设计 FIR 和 IIR 数字滤波器的方法;
5.学会用 MATLAB 对信号进行分析和处理。
二、课程设计的主要要求:
1、熟悉离散信号和系统的时域特性;
2、掌握序列快速傅里叶变换 FFT 方法;
3、学会 MATLAB 的使用,掌握 MATLAB 的程序设计方法;
4、利用 MATLAB 对语音信号进行频谱分析;
5、掌握 MATLAB 设计 FIR 和 IIR 数字滤波器的方法。
三、课程设计的主要意义:
电子信息工程专业的培养目标是具备电子技术的基本理论和应用技术,能从事电子、
信息、通信、电信等领域的工作,具有高素质、宽口径、创新晋升的专业人才。对本专业
学生的培养要进行工程素质培养、拓宽专业口径、注重基础和发展潜力。特别是培养学生
的创新能力,以实现技术为主线多进行实验技能的培养。学生通过数字信号处理课程设计
这一重要环节,可以将本专业的主干课程-数字信号处理从理论学习到实践应用,对数字
信号处理技术有较深的了解,进一步增强学生动手能力和适应实际工作的能力。
四、课程设计的基本原理:
语音信号是一种非平稳的时变信号,它携带着各种信息。在语音编码、语音合成、语
音识别和语音增强等语音处理中无一例外需要提取语音中包含的各种信息。语音信号分析
的目的就在与方便有效的提取并表示语音信号所携带的信息。语音信号分析可以分为时域
和变换域等处理方法,其中时域分析是最简单的方法,直接对语音信号的时域波形进行分
析,提取的特征参数主要有语音的短时能量,短时平均过零率,短时自相关函数等。
1.语音信号的时域分析
~0~
数字信号处理课程设计
1)信号提取 通过图形用户界面上的菜单功能按键采集电脑设备上的一段音频信号,完
成音频信号的频率,幅度等信息的提取,并得到该语音信号的波形图。
2)信号调整 在设计的用户图形界面下对输入的音频信号进行各种变化,如变化幅度、
改变频率等操作,以实现对语音信号的调整。
2、语音信号的频域分析
信号的傅立叶表示在信号的分析与处理中起着重要的作用。因为对于线性系统来说,
可以很方便地确定其对正弦或复指数和的响应,所以傅立叶分析方法能完善地解决许多信
号分析和处理问题。另外,傅立叶表示使信号的某些特性变得更明显,因此,它能更深入
地说明信号的各项红物理现象。
由于语音信号是随着时间变化的,通常认为,语音是一个受准周期脉冲或随机噪声源
激励的线性系统的输出。输出频谱是声道系统频率响应与激励源频谱的乘积。声道系统的
频率响应及激励源都是随时间变化的,因此一般标准的傅立叶表示虽然适用于周期及平稳
随机信号的表示,但不能直接用于语音信号。由于语音信号可以认为在短时间内,近似不
变,因而可以采用短时分析法。
1)、信号变换 在用户图形界面下对采集的语音信号进行 Fourier 等变换,并画出变换前
后的频谱图和变换后的倒谱图。
2)、信号滤波 滤除语音信号中的噪音部分,可采用低通滤波、高通滤波、带通滤波和帯
阻滤波,并比较各种滤波后的效果。
五、课程设计的主要仪器及材料:
微型计算机、Matlab7.8.0(R2009a)教学版、TC 编程环境。
六、课程设计报告的内容:
1、录制一段自己的语音信号,完成一个对语音信号的采集;
2、画出语音信号的时域波形,然后对语音信号进行频谱分析;
3、使用双线性变换法由模拟滤波器原型设计要求的三种 IIR 数字滤波器,利用 Matlab
中的函数 freqz 画出各滤波器的频率响应;
4、比较 FIR 和 IIR 数字滤波器的性能,用性能好的各滤波器分别对采集的信号进行
滤波,在 MATLAB 中,FIR 滤波器利用函数 fftfilt 对信号进行滤波,IIR 滤波器利用函数
~1~
数字信号处理课程设计
filter 对信号进行滤波。
5、分析滤波后信号的时域和频域特征,并比较滤波前后语音信号的波形及频谱;
6、回放语音信号。
七、课程设计的主要设计步骤:
1.语音信号的采集
我们利用 windows 下的录音机(开始—程序—附件—娱乐—录音机,文件—属性—立
即转换—8000KHz,8 位,单声道),录制一段自己的话音,时间控制在 1 秒左右。接着保
存在 F 盘中命名为 one.wav,然后在 MATLAB 软件平台下,利用函数 wavread 对语音信号
进行采样,并记录下了采样频率和采样点数。通过 wavread 函数的使用,要求理解采样频
率、采样位数等概念。在这里我们还通过函数 sound 引入听到采样后自己所录的一段声音。
通过 wavread 函数和 sound 的使用,完成了本次课程设计的第一步。
wavread 函数调用格式:
y=wavread(file),读取 file 所规定的 wav 文件,返回采样值放在向量 y 中。
[y,fs,nbits]=wavread(file),采样值放在向量 y 中,fs 表示采样频率(Hz),nbits
表示采样位数。
y=wavread(file,N),读取前 N 点的采样值放在向量 y 中。
y=wavread(file,[N1,N2]),读取从 N1 点到 N2 点的采样值放在向量 y 中。
通过使用 wavread 函数读取语音信号,实现语句如下:
[x,fs,bits]=wavread(‘F:/one.wav’);
为了得到原始信号的波形和频谱,可运行如下语句:
xx=fft(x);
subplot(2,1,1);plot(x);title('原始信号波形');
subplot(2,1,2);plot(abs(xx)); title('原始信号频谱');
运行后得到的波形、频谱图如下:
~2~
数字信号处理课程设计
原始的语音信号经过 wavread 函数的处理,由连续信号变成离散信号,抽样率如图
中 fs 所示为 22050 Hz/s,为了使抽样率满足 8000 Hz/s 的要求,需要用到 resample
函数,实现语句如下:
y=resample(x,8000,22050);
经过重采样,原信号的抽样率变成 8000Hz/s。由于采样频率的改变,在模拟信号
中选取的点数也有所不同,采样频率由 22050 Hz/s 变成 8000 Hz/s,采样点数也相应地
由 58520 变成 21232
为了得到重采样后的波形和频谱,可运行如下语句:
yy=fft(y);
subplot(2,1,1);plot(y);title('重采样信号波形');
subplot(2,1,2);plot(abs(yy)); title('重采样信号频谱');
运行后得到的波形、频谱图如下:
~3~
数字信号处理课程设计
2.语音信号的频谱分析
等间隔取 8000 个数据,首先画出语音信号的时域波形,然后对语音信号进行频谱
分析。在 MATLAB 中,可以利用函数 fft 对信号进行快速傅里叶变换,得到信号的频谱
特性(幅度和相位谱)。
等间隔取 16000 个数据,画出语音信号的时域波形,然后对语音信号进行频谱分析。
运用“四舍五入”法对 y 信号进行等间隔抽取,编写程序如下:
[m,n]=size(y);
z1=zeros(1,8000);
k1=1;
for i=1:m/8000:m
i=round(i);
z1(k1)=y(i);
k1=k1+1;
end
z2=zeros(1,16000);
k2=1;
~4~
数字信号处理课程设计
for i=1:m/16000:m
i=round(i);
z2(k2)=y(i);
k2=k2+1;
end
分别运行如下程序,输出各自对应波形、频谱图
y1=fft(z1);
subplot(3,2,3);plot(z1);title('等间隔采样 8000 点的波形');
subplot(3,2,4);plot(abs(y1));title('等间隔采样 8000 点的频谱');
y2=fft(z2);
subplot(3,2,5);plot(z2);title('等间隔采样 16000 点的波形');
subplot(3,2,6);plot(abs(y2));title('等间隔采样 16000 点的频谱');
3.设计数字滤波器和画出频率响应
根据 语音 信号的 特点 给出有 关滤 波器的 性能 指标:1)低 通滤 波器性 能指 标,
fp=1000Hz,fc=1200 Hz, As=100dB,Ap=1dB;2)高通滤波器性能指标,fc=2800 Hz,
~5~
数字信号处理课程设计
fp=3000 Hz As=100dB,Ap=1dB;3)带通滤波器性能指标,fp1=1200 Hz,fp2=3000
Hz,fc1=1000 Hz,fc2=3200 Hz,As=100dB,Ap=1dB。要求学生首先用窗函数法设计上
面要求的三种滤波器,,之后再利用函数 butter 和 cheby1 设计上面要求的三种 FIR 滤
波器。最后,利用 MATLAB 中的函数 freqz 画出各滤波器的频率响应。
1)用窗函数法设计 FIR 低通滤波器,编写程序如下:
fp=1000;
fc=1200;
as=100;
ap=1;
fs=22000;
wp=2*fp/fs;
wc=2*fc/fs;
N=ceil((as-7.95)/(14.36*(wc-wp)/2))+1;
beta=0.1102*(as-8.7);
window=Kaiser(N+1,beta);
b=fir1(N,wc,window);
freqz(b,1,512,fs);
2)用窗函数法设计 FIR 高通滤波器,编写程序如下:
fs=22000;
Wp=2*3000/fs;
Wc=2*2800/fs;
Ap=1;
As=100;
N=ceil(8*pi/(Wp-Ws))+1;
N=N+mod(N+1,2)+1;
Wc=(Wp+Ws)/2/pi;
b=fir1(N,Wc,'high');
omega=linspace(0,pi,512);
~6~
数字信号处理课程设计
freqz(b,1,omega);
3) 用窗函数法设计 FIR 带通滤波器,编写程序如下:
fs=22000;
Wp1=2*1200/fs;
Wp2=2*3000/fs;
Wc1=2*1000/fs;
Wc2=2*3200/fs;
Ap=1;
As=100;
W1=(Wp1+Wc1)/2;
W2=(Wp2+Wc2)/2;
wdth=min((Wp1-Wc1),(Wc2-Wp2));
N=ceil(11*pi/wdth)+1;
b = fir1(N,[W1 W2]);
freqz(b,1,512,fs);
用窗函数法设计的 FIR 低通滤波器的幅度谱、相位谱
~7~