数字信号处理课程设计_精品文档.doc
《数字信号处理课程设计_精品文档.doc》由会员分享,可在线阅读,更多相关《数字信号处理课程设计_精品文档.doc(17页珍藏版)》请在冰豆网上搜索。
![数字信号处理课程设计_精品文档.doc](https://file1.bdocx.com/fileroot1/2022-10/12/62c71bb0-bf53-4166-9bb4-df8eff286388/62c71bb0-bf53-4166-9bb4-df8eff2863881.gif)
广西工学院
数字信号处理课程设计
题目:
语音信号的处理与滤波
系别:
计算机系
专业:
通信工程
班级:
学号:
姓名:
指导教师:
日期:
2012-1-3
目录
摘要:
……………………………………………………………………3
一:
设计目的……………………………………………………………3
二:
设计内容……………………………………………………………3
三:
基本步骤……………………………………………………………3
四:
相关原理知识 5
1.录音原理…………………………………………………………………5
2.滤波器的设计原理及设计方法…………………………………………5
3.IIR数字滤波器…………………………………………………………8
五:
实现过程 9
1.录制声音 9
2.分别取8000个和16000个数据进行频谱分析,得到幅度和相位谱,比较二者异同并分析原因 11
3.滤波器的设计 13
4.对声音进行滤波 14
5.把处理后的所有数据存储为声音文件,与原始声音进行比较 15
六、心得体会 17
七、参考文献 17
摘要:
本次设计主要是利用MATLAB工具对自己的语音进行录制,然后通过自己设计IIR滤波器进行语音信号滤波以及分析等,从而对以前所学的知识进行一个系统的归纳和理解,从实际应用操作当中体会《数字信号处理》这门课程的相关乐趣及其重要的知识点。
一、课程设计目的:
综合运用本课程的理论知识进行频谱分析以及滤波器设计,通过理论推导得出相应结论,并利用MATLAB作为工具进行实现,从而复习巩固课堂所学的理论知识,提高对所学知识的综合应用能力,并从实践上初步实现对数字信号的处理。
二、课程设计内容:
设计题目一:
语音信号的处理与滤波
1.熟悉并掌握MATLAB中有关声音(wave)录制、播放、存储和读取的函数。
2.在MATLAB环境中,使用声音相关函数录制2秒左右自己的声音,抽样率是8000Hz/s。
(考虑如何解决一个实际问题:
录制刚开始时,常会出现实际发出声音落后录制动作半拍的现象,如何排除对这些无效点的采样?
)
3.分别取8000个和16000个数据进行频谱分析,得到幅度和相位谱,比较二者异同并分析原因。
4.针对电话信道(最高3500Hz),设计一个FIR或IIR滤波器进行滤波,把抽样率转变为7000Hz/s,并进行频谱分析,得到幅度和相位谱。
5.把处理后的所有数据储存为声音文件,与原始声音进行比较。
三、基本步骤:
1.语音信号的采集
熟悉并掌握MATLAB中有关声音(wave)录制、播放、存储和读取的函数,在MATLAB环境中,使用声音相关函数录制3秒左右自己的声音。
(考虑如何解决一个实际问题:
录制刚开始时,常会出现实际发出声音落后录制动作半拍的现象,如何排除对这些无效点的采样?
)
2.语音信号的频谱分析
要求首先画出语音信号的时域波形;然后对语音号进行快速傅里叶变换,得到信号的频谱特性,从而加深对频谱特性的理解。
3.设计数字滤波器并画出其频率响应
给出各滤波器的性能指标:
(1)低通滤波器性能指标:
fb=1000Hz,fc=1200Hz,As=100dB,Ap=1dB。
(2)高通滤波器性能指标:
fc=4800Hz,fb=5000HzAs=100dB,Ap=1dB。
(3)带通滤波器性能指标:
fp1=1200Hz,fp2=3000Hz,fsc1=1000Hz,fsc2=3200Hz,As=100dB,Ap=1dB。
要求用窗函数法和双线性变换法设计上面要求的3种滤波器。
在Matlab中,使用函数butter,cheby1等函数设计IIR滤波器;利用Matlab中的函数freqz画出各滤波器的频率响应。
4.用滤波器对信号进行滤波
要求用自己设计的各种滤波器分别对采集的信号进行滤波,在Matlab中,FIR滤波器利用函数fftfilt对信号进行滤波,IIR滤波器利用函数filter对信号进行滤波。
5.比较滤波前后语音信号的波形及频谱
要求在一个窗口同时画出滤波前后的波形及频谱。
6.回放语音信号
在Matlab中,使用相关声音函数对声音进行回放。
辨别滤波前后的声音有何变化。
7.男女声语音信号频谱特点分析
换一个与你性别相异的人录制同样一段语音内容,分析两段内容相同的语音信号频谱之间有什么特点。
8.背景噪声滤除
再录制一段同样长时间的背景噪声(频谱能量集中在某个小范围内)叠加到你的语音信号中,分析叠加前后信号频谱的变化,设计一个合适的滤波器,能够把该噪声滤除。
9.设计系统界面(用MATLAB中GUIDE工具,要求自学)
为了使编制的程序操作方便,要求有能力的同学,设计处理系统的用户界面。
在所设计的系统界面上可以选择滤波器的类型,输入滤波器的参数,显示滤波器的频率响应,选择信号等。
四、相关原理知识
1、录音原理
采用Matlab中的两个函数可以用于实现录音功能,一个是waverecord函数调用windows音频设备进行录音,主要用于实时语音采集。
第二个是使用Matlab中的wavread函数也可以进行语音采集。
不过wavread函数只能读取计算机中已经有的“.wav”文件,因此必须事先使用windows的录音机等设备把要用的语音录制并存为“.wav”文件格式。
显然wavread函数不能用于实时语音信号采集。
另外语音采集的频率和精度不能改变。
回放同样也有两个函数Sound函数和wavplay,而后者的功能比前者少。
但在本设计中主要是对已有的信号进行处理,所以选用wavread函数。
但,由于信号的时域描述只能反映信号的幅值随时间的变化情况,除只有一个频率分量的简谐波外一般很难明确揭示信号的频率组成和各频率分量的大小,因此,我们要把它转换成频域来分析,它能够提供比时域信号波形更直观,丰富的信息。
2、滤波器的设计原理及设计方法
FIR滤波器的设计问题在于寻求一系统函数,使其频率响应逼近滤波器要求的理想频率响应,其对应的单位脉冲响应。
1、用窗函数设计FIR滤波器的基本方法
设计思想:
从时域从发,设计逼近理想。
设理想滤波器的单位脉冲响应为。
以低通线性相位FIR数字滤波器为例。
一般是无限长的,且是非因果的,不能直接作为FIR滤波器的单位脉冲响应。
要想得到一个因果的有限长的滤波器h(n),最直接的方法是截断,即截取为有限长因果序列,并用合适的窗函数进行加权作为FIR滤波器的单位脉冲响应。
按照线性相位滤波器的要求,h(n)必须是偶对称的。
对称中心必须等于滤波器的延时常数,即
用矩形窗设计的FIR低通滤波器,所设计滤波器的幅度函数在通带和阻带都呈现出振荡现象,且最大波纹大约为幅度的9%,这个现象称为吉布斯(Gibbs)效应。
为了消除吉布斯效应,一般采用其他类型的窗函数。
2、典型的窗函数
(1)矩形窗(RectangleWindow)
其频率响应和幅度响应分别为:
,
(2)三角形窗(BartlettWindow)
其频率响应为:
(3)汉宁(Hanning)窗,又称升余弦窗
其频率响应和幅度响应分别为:
(4)汉明(Hamming)窗,又称改进的升余弦窗
其幅度响应为:
(5)布莱克曼(Blankman)窗,又称二阶升余弦窗
其幅度响应为:
(6)凯泽(Kaiser)窗
其中:
β是一个可选参数,用来选择主瓣宽度和旁瓣衰减之间的交换关系,一般说来,β越大,过渡带越宽,阻带越小衰减也越大。
I0(·)是第一类修正零阶贝塞尔函数。
若阻带最小衰减表示为,β的确定可采用下述经验公式:
若滤波器通带和阻带波纹相等即δp=δs时,滤波器节数可通过下式确定:
式中:
3.利用窗函数设计FIR滤波器的具体步骤如下:
(1)按允许的过渡带宽度△ω及阻带衰减AS,选择合适的窗函数,并估计节数N:
其中A由窗函数的类型决定。
(2)由给定的滤波器的幅频响应参数求出理想的单位脉冲响应。
(3)确定延时值
(4)计算滤波器的单位取样响应,。
(5)验算技术指标是否满足要求。
3.IIR数字滤波器
IIR数字滤波器的系统是Z的有理数,可表示为系统的设计就是要确定系数,以使滤波器达到要求.设计方法为,用模拟滤波器理论来设计数字滤波器.在IIR数字滤波器的设计中较多的采用这种方法.用计算机助设计,优化技术设计.针对电话信道我们可以设计一个IIR低通滤波器来过滤我们录制的语音,用fftfilt函数可以把我们录制的语音放到设计好的滤波器进行滤波.然后angle函数求出滤波后语音的相位谱,用abs求出幅度谱.然后再用wavwrite对滤波后的语音保存为声音文件.
五、实现过程
1.录制自己的声音文件(wav格式),内容为“恭喜发财”其实现代码:
fs=8000;%抽样频率
channel=1;%1信道
t=3;%设定录音时间为3秒钟
fprintf('按任意键后开始%d秒录音:
',t);%提示按任意键后开始t秒录音
pause;%暂停命令
fprintf('录音中...');%显示当前正在录音当中
x=wavrecord(t*fs,fs,channel,'double');%调用录制自己的声音信号函数
fprintf('录音结束\n');%显示录音已经结束
wavwrite(x,fs,'F:
\数字信号处理\数字信号课程设计\CEG和弦音.wav');%存储录音信号的文件夹
fprintf('按任意键后回放:
');%提示文字
pause;%作用是暂停
wavplay(x,fs);%播放录制的声音函数
下面读取原有声音文件,画出它的时域图形,实现代码:
y=wavread('F:
\数字信号处理\数字信号课程设计\CEG和弦音.wav',[120000]);%读取原有声音文件及取点范围
plot(y);%画出声音时域图形
title('原始声音信号时域图形');%标题
xlabel('时间');