广西科技大学
数字信号处理 课程设计
题目:语音信号的处理与滤波(难度系数:0.8)
系 别: 计算机工程学院 专 业 : 通 信 工 程 班 级: 学 号 : 姓 名 : 指导教师: 日 期:
目 录
摘要: ................................................... 2 一.设计容 ............................................... 3 二.设计目的 ............................................. 4 三.基本步骤 ............................................. 3 四、相关原理知识 ......................................... 5 五、实现过程 ............................................. 9 1.录制声音 ........................................... 9 2.分别取8000个和16000个数据进行频谱分析,得到幅度和相位谱,比较二者异同并分析原因 ......................... 11 3.滤波器的设计 ...................................... 13 4.对声音进行滤波 .................................... 14 5.把处理后的所有数据存储为声音文件,与原始声音进行比较 ..................................................... 15 六、心得体会 ............................................ 16 七、参考文献 ............................................ 17
摘要:
本次设计主要是利用MATLAB工具对自己的语音进行录制,然后设
计IIR滤波器,并通过所设计的滤波器进行语音信号滤波以及分析等,
对以前所学的知识进行一个系统的归纳和进一步理解,并且在实际应用操作当中体会我们《数字信号处理》这门课程的相关知识点。
一、设计容
1. 设计题目一: 语音信号的处理与滤波(难度系数:0.8)
1.熟悉并掌握MATLAB中有关声音(wave)录制、播放、存储和读取的函数。
2.在MATLAB环境中,使用声音相关函数录制2秒左右自己的声音,抽样率是8000Hz/s。(考虑如何解决一个实际问题:录制刚开始时,常会出现实际发出声音落后录制动作半拍的现象,如何排除对这些无效点的采样?)
3.画出语音信号的时域波形;然后对语音信号进行FFT, 得到信号的频谱特性,然后分别取8000个和16000个数据进行频谱分析,得到幅度和相位谱,比较二者异同并分析原因。 4.针对信道(最高3500Hz),设计一个FIR或IIR滤波器进行滤波,把抽样率转变为7000Hz/s,并进行频谱分析,得到幅度和相位谱。
5. 用自己设计的IIR滤波器分别对采集的信号进行滤波比较滤波前后语音信号的波形及频谱.. 画出滤波前后的波形和频谱.加深对滤波器的了解.
6.把处理后的所有数据储存为声音文件,与原始声音进行比较。 7. 保存滤波后的语音
二、设计目的
综合运用本课程的理论知识进行频谱分析以及滤波器设计,通过理论推导得出相应结论,并利用MATLAB作为工具进行实现,从而复习巩固课堂所学的理论知识,提高对所学知识的综合应用能力,并从实践上初步实现对数字信号的处理。
三、基本步骤
1.语音信号的采集
熟悉并掌握MATLAB中有关声音(wave)录制、播放、存储和读取的函数,在MATLAB环境中,使用声音相关函数录制3秒左右自己的声音。(考虑如何解决一个实际问题:录制刚开始时,常会出现实际发出声音落后录制动作半拍的现象,如何排除对这些无效点的采样?)
2.语音信号的频谱分析
要求首先画出语音信号的时域波形;然后对语音号进行快速傅里叶变换,得到信号的频谱特性,从而加深对频谱特性的理解。
3.设计数字滤波器并画出其频率响应 给出各滤波器的性能指标:
(1)低通滤波器性能指标:fb=1000 Hz,fc=1200 Hz,As=100dB,Ap=1dB。
(2)高通滤波器性能指标:fc=4800 Hz,fb=5000 Hz As=100dB,Ap=1dB。
(3)带通滤波器性能指标:fp1=1200 Hz,fp2=3000 Hz,fsc1=1000 Hz,fsc2=3200Hz,As=100dB,Ap=1dB。
要求用窗函数法和双线性变换法设计上面要求的3种滤波器。在Matlab中,使用函数butter,cheby1等函数设计IIR滤波器;利用Matlab中的函数freqz画出各滤波器的频率响应。
4.用滤波器对信号进行滤波
要求用自己设计的各种滤波器分别对采集的信号进行滤波,在Matlab中,FIR滤波器利用函数fftfilt对信号进行滤波,IIR滤波器利用函数filter对信号进行滤波。
5.比较滤波前后语音信号的波形及频谱
要求在一个窗口同时画出滤波前后的波形及频谱。 6.回放语音信号
在Matlab中,使用相关声音函数对声音进行回放。辨别滤波前
后的声音有何变化。
四、相关原理知识
1.录音原理
Matlab中有两个函数可以用于实现录音功能 ,一个是waverecord函数调用windows音频设备进行录音,主要用于实时语音采集。第二个是使用Matlab 中的wavread函数也可以进行语音采集。不过wavread函数只能读取计算机中已经有的“.wav” 文件,也就是说必须事先使用windows的录音机等设备把有关的语音资料录制并存储为“.wav” 文件。显然wavread函数不能用于实时语音信号采集。另外语音采集的频率和精度不能改变。 回放时也有两个函数可以选用。Sound函数和wavplay,只不过后者的功能没有前者强大。不过在本设计中主要是对已有的信号进行处理,所以选用wavread录放。同时,由于信号的时域描述只能反映信号的幅值随时间的变化情况,除只有一个频率分量的简谐波外一般很难明确揭示信号的频率组成和各频率分量的大小,因此,我们要把它转换成频域来分析,它能够提供比时域信号波形更直观,丰富的信息。 2、滤波器的设计原理及设计方法
FIR滤波器的设计问题在于寻求一系统函数H(z),使其频率响应
H(ej)逼近滤波器要求的理想频率响应Hd(ej),其对应的单位脉冲响
应hd(n)。
1、用窗函数设计FIR滤波器的基本方法
设计思想:从时域从发,设计h(n)逼近理想hd(n)。设理想滤波器
Hd(ej)的单位脉冲响应为hd(n)。以低通线性相位FIR数字滤波器为
例。
Hd(e)hd(n)12jnhd(n)ejn
dH(ej)ejndhd(n)一般是无限长的,且是非因果的,不能直接作为FIR滤波器
的单位脉冲响应。要想得到一个因果的有限长的滤波器h(n),最直接的方法是截断h(n)hd(n)w(n),即截取为有限长因果序列,并用合适的窗函数进行加权作为FIR滤波器的单位脉冲响应。按照线性相位滤波器的要求,h(n)必须是偶对称的。对称中心必须等于滤波器的延时常数,即
h(n)hd(n)w(n) a(N1)/2用矩形窗设计的FIR低通滤波器,所设计滤波器的幅度函数在通带和阻带都呈现出振荡现象,且最大波纹大约为幅度的9%,这个现象称为吉布斯(Gibbs)效应。为了消除吉布斯效应,一般采用其他类型的窗函数。
2、典型的窗函数
(1)矩形窗(Rectangle Window)
w(n)RN(n)
其频率响应和幅度响应分别为:
sin(N/2)jW(e)esin(/2)jN12,WR()sin(N/2)
sin(/2)(2)三角形窗(Bartlett Window)
2nN1,w(n)2n2,N1jN12
N1nN120n2sin(N/4)2jN21]e其频率响应为:W(e)[
Nsin(/2)(3)汉宁(Hanning)窗,又称升余弦窗
12nw(n)[1cos()]RN(n)
2N1其频率响应和幅度响应分别为:
j(22jW(e){0.5WR()0.25[WR()WR()]}eN1N1W()ejaN1)2
W()0.5WR()0.25[WR(22)WR()]N1N1(4)汉明(Hamming)窗,又称改进的升余弦窗
w(n)[0.540.46cos(2n)]RN(n) N122)WR()] N1N1其幅度响应为:W()0.54WR()0.23[WR((5)布莱克曼(Blankman)窗,又称二阶升余弦窗
2n4n)0.08cos()]RN(n) N1N122W()0.42WR()0.25[WR()WR()]N1N1其幅度响应为:
440.04[WR()WR()]N1N1w(n)[0.420.5cos((6)凯泽(Kaiser)窗
I0(1[12n/(N1)]2)w(n),0nN1
I0()其中:β是一个可选参数,用来选择主瓣宽度和旁瓣衰减之间的交换关系,一般说来,β越大,过渡带越宽,阻带越小衰减也越大。I0(·)是第一类修正零阶贝塞尔函数。
若阻带最小衰减表示为As20log10s,β的确定可采用下述经验公式:
00.5842(As21)0.40.07886(As21)0.1102(A8.7)sAs2121As50 As50若滤波器通带和阻带波纹相等即δp=δs时,滤波器节数可通过下式确定:
NAs7.951
14.36F式中:Fsp 223.利用窗函数设计FIR滤波器的具体步骤如下:
(1)按允许的过渡带宽度△ω及阻带衰减AS,选择合适的窗函数,并估计节数N:
其中A由窗函数的类型决定。
(2)由给定的滤波器的幅频响应参数求出理想的单位脉冲响应
hd(n)。
(3)确定延时值
(4)计算滤波器的单位取样响应h(n),h(n)hd(n)w(n)。 (5)验算技术指标是否满足要求。 3.IIR数字滤波器
IIR数字滤波器的系统是Z的有理数,可表示为系统的设计就是要确定系数,以使滤波器达到要求.设计方法为,用模拟滤波器理论来设计数字滤波器.在IIR数字滤波器的设计中较多的采用这种方法.用计算机助设计,优化技术设计.针对信道我们可以设计一个IIR低通滤波器来滤我们录制的语音,用fftfilt函数可以把我们录制的语音放到设计好的滤波器进行滤波.然后angle函数求出滤波后语音的相位谱,用abs求出幅度谱. 然后再用wavwrite对滤波后的语音保存为声音文件.
五、实现过程
1.录制自己的声音文件(wav格式),容为“数字信号课程设计,邓国望”
程序如下:
fs=8000; %抽样频率 channel=1; %1信道
t=3; %设定录音时间为3秒钟
fprintf('按任意键后开始 %d 秒录音:',t); pause;%文字提示 %暂停命令 fprintf('录音中...'); %提示当前正在录音当中
x=wavrecord(t*fs, fs,channel,'double'); %录制自己的声音信号 fprintf('录音结束\\n'); %提示录音已经结束 wavwrite(x,fs,'F:\\新建文件夹\\dgw.wav');%存储录音信号 fprintf('按任意键后回放:');pause; wavplay(x,fs); %播放录制的声音
下面读取原始声音,并且画出它的时域图形,程序如下:
y=wavread('F:\\新建文件夹\\dgw.wav',[1 20000]); %读取声音 plot(y); %画出声音时域图形 title('原始声音信号时域图形'); %标题 xlabel('时间'); %x轴坐标 ylabel('幅值'); %y轴坐标 grid; %添加网格线
通过观察图形,发现在录音过程中出现了这样一个现象:录制刚开始时,出现一些无效的点,后面也出现一些无效的点。出现这种现象的原因主要是录音开始时,人的反应慢了半拍,导致出现了一些无效点,而后面出现的无效的点,主要是已经没有声音的动作。我们首先要想办法要去掉这些无效点,可以这样操作:
截取有效点程序如下:
y=wavread('F:\\新建文件夹\\dgw.wav',[3000 18000]); %从3000点开始截取到18000点结束 plot(y); %重新画出截取后的图形 title('截取后的声音时域图形'); %标题 xlabel('时间'); %x轴坐标 ylabel('幅值'); %y轴坐标 grid; %添加网格线
2.分别取8000个和16000个数据进行频谱分析,得到幅度和相位谱,比较二者异同并分析原因。
取8000点频谱分析
y=wavread('F:\\新建文件夹\\dgw.wav'); %读取原始语音信号 d=fft(y,8000); %对语音信号做8000点的FFT变换 subplot(2,2,1); %分割窗口
plot(abs(d)); %绘出语音信号的幅度谱 xlabel('频率'); %加X轴说明 ylabel('幅值'); %加Y轴说明 title('8000点幅度谱'); %加图形说明 grid; %添加网格 subplot(2,2,2); %分割窗口
plot(angle(d)); %绘出语音信号的相位谱 xlabel('频率'); %加X轴说明 ylabel('angle(d)'); %加Y轴说明 title('8000点相位谱'); %加图形说明
grid; %添加网格
%取16000点进行频谱分析
y=wavread('F:\\新建文件夹\\dgw.wav');%读取原始语音信号
d=fft(y,16000); %对语音信号做16000点的FFT变换 subplot(2,2,3); %分割窗口
plot(abs(d)); %绘出语音信号的幅度谱 xlabel('频率'); %加X轴说明 ylabel('幅值'); %加Y轴说明 title('16000点幅度谱'); %加图形说明 grid; %添加网格 subplot(2,2,4); %分割窗口
plot(angle(d)); %绘出语音信号的相位谱 xlabel('频率'); %加X轴说明 ylabel('angle(d)'); %加Y轴说明 title('16000点相位谱'); %加图形说明 grid
观察两图可以看出,取8000点进行频谱分析和取16000点进行频谱分析所得的幅度谱和相位谱的图形基本上是相同的;不同之处是8000点图形线比16000点的图形线梳,原因是在同样的抽样频率下,对不同点数进行频谱分析得出的幅度谱和相位谱线疏密不同,点数越多,线越密。
3.滤波器的设计:
针对信道我们设计一个IIR低通滤波器对我们录制的语音进行滤波,具体程序如下:
%低通滤波器设计
wp=2*1200/7000; %归一化通带数字频率wp ws=2*2000/7000; %归一化阻带数字截止频率ws Rp=0.5; %通带波纹系数Rp Rs=60; %最小阻带衰减Rs [N,Wn]=buttord(wp,ws,Rp,Rs); %求阶数N和滤波器截止频率Wn [num,den]=butter(N,Rp); %传输分子和分母的系数 [h,w]=freqz(num,den); %求频率响应
subplot(2,1,1); %窗口分成2行1列绘图区,第1个区为当前活动区 plot(w/pi,abs(h)); %二维连续图形 grid; %添加网格 title('巴特沃思型低通滤波器的幅频响应'); %加图形说明
xlabel('\\omega/\\pi'); %加X轴说明(/后表示转义字符) ylabel('振幅(幅值)'); %加Y轴说明
subplot(2,1,2); %窗口分成2行1列绘图区,第2个区为当前活动区 plot(w/pi,20*log10(abs(h))); %二维连续图形 grid; %添加网格 title('巴特沃思型低通滤波器的幅频响应'); %加图形说明
xlabel('\\omega/\\pi'); %加X轴说明(/后表示转义字符)
ylabel('振幅(分贝)'); %加Y轴说明
4.对声音进行滤波:
把我们上面录制的语音放到滤波器里进行滤波,具体程序如下:
%滤滤后的幅度、相位谱图 fs=8000;
y=wavread('F:\\新建文件夹\\dgw.wav'); %读取原始语音信号 f=filter(num,den,y); %滤波 f1=fft(f,1024); subplot(2,1,1)
plot(abs(f1)); %画出滤波后的时域图 title('滤波后的幅度谱'); grid;
subplot(2,1,2)
plot(angle(f1)); %画出滤波后的时域图 title('滤波后的相位谱'); grid;
wavwrite(f,fs, 'F:\\新建文件夹\\dgw1.wav');
5.把处理后的所有数据存储为声音文件,与原始声音进行比较 程序如下:
%原始语音与滤波后的信号比较 fs=8000;
y=wavread('F:\\新建文件夹\\dgw.wav'); %读取原始语音信号 y1=wavread('F:\\新建文件夹\\dgw1.wav'); %读取滤波后语音信号 yx=fft(y); yx1=fft(y1); subplot(2,1,1)
plot(20*log10(abs(yx))); title('滤波前的相对幅度谱'); subplot(2,1,2);
plot(20*log10(abs(yx1))); title('滤波后的相对幅度谱');
结论:通过滤波前后两种信号的比较, 它们的幅度谱基本上是一样的,只是有些地方不同。还有原始声音信号比滤波后的信号清晰,滤波后的声音显得比较低沉,因为原始信号经过低通滤波器后,低通滤波器已经把信号高频部分滤掉了,只剩下低频部分
六、心得体会
《数字信号处理教程》这门课是我们通信专业的专业课,是一
门以数学为基础,推理性很强的学科。因此我们在学习这门课的时候,学要细心和耐心。这次课程设计是用学过的数字信号理论为依据,用MATLAB代码实现,通过这次课程设计,感触特别多,也学到了很多东西。首先,为了完成这次的课程设计,从图书馆借了很多有关这次设计的参考书,对这些参考书的有关容都做了认真的分析,了解了一些函数的用法。其次,通过本次课程设计,使我们对信号的采集,处理,传输,显示,存储和分析等有一个系统的掌握和理解。同时可以看到滤波器在语音处理的重要性,学到了很多滤波器的设计方法,对
MATLAB这个软件有了进一步的了解,巩固和运用在数字信号处理课程中所学的理论知识和实验技能,掌握最基本的数字信号处理的理论和方法,提高了自己的发现问题,分析问题和解决问题的能力。再次,在做课程设计的过程中会遇到很多的困难,在困难面前不要放弃,只要有细心和耐心,坚持下去会达到想要的设计结果。最后,无论做什么课程设计,都需要要有一定的理论知识作为基础,同时通过这次课程设计,我对于以前所学的数字信号处理知识有了更深的理解。
七、参考文献:
[1]MATLAB6x.信号处理 清华大学, 2002年5月第一版 邹鲲 袁俊泉 龚享铱 编著 [2]MATLAB在信号处理中的应用(第二版 )
清华大学,2008年1月
薛年喜编著
[3]信号分析与处理-MATLAB语言及应用.
:国防科技大学, 2000 黄文梅,熊,勇编著.
[5] MATLAB信号处理详解.
:人民邮电, 2001年9月
亚勇等编著.
因篇幅问题不能全部显示,请点此查看更多更全内容