齐鲁工业大学.docx
《齐鲁工业大学.docx》由会员分享,可在线阅读,更多相关《齐鲁工业大学.docx(21页珍藏版)》请在冰豆网上搜索。
![齐鲁工业大学.docx](https://file1.bdocx.com/fileroot1/2023-2/25/60f40e70-1299-4cb9-84ca-f3827ac58383/60f40e70-1299-4cb9-84ca-f3827ac583831.gif)
齐鲁工业大学
齐鲁工业大学
课程设计任务书
学院电子信息与控制工程学院专业通信工程
题目有噪语音信号处理设计
主要内容:
综合运用数字信号处理的理论知识进行频谱分析和滤波器设计,通过理论推导得出相应结论,在利用matlab作为开发工具进行计算机实习,从而加深对所学知识的理解,建立概念。
录制一段语音信号,确定采样频率;画出采样得到信号的时域波形和频谱图;对语音进行加噪声处理(随机噪声、周期型噪声等),采用窗函数法(或等波纹最佳逼近法)和双线性变换法设计滤波器,画出滤波器的频率响应;然后用设计的滤波器对采集的信号进行滤波去噪处理,画出去噪后的信号波形及其频谱;并进行回放。
基本要求
(1)掌握数字信号处理的基本概念、基本原理和基本方法;掌握DFT对模拟信号进行频谱分析的方法;确定系统的采样频率;掌握windows环境下进行语音信号采集数据的方法;
(2)掌握设计FIR和IIR数字滤波器的方法;
(3)设计出系统模块图,记录仿真结果;
(4)对结果进行分析,写出设计报告。
完成期限:
自2013年6月10日至2013年7月10号
目录
1、主要内容1
2、基于滤波器的语音信号的处理1
2.1语音信号的采集2
2.2加噪后的语音信号及其频谱分析3
2.3IIR数字滤波器的设计3
2.3.1IIR数字滤波器的设计思想3
2.3.2IIR数字滤波器的设计步骤4
2.4FIR数字滤波器的设计6
2.5用滤波器对加噪语音信号进行滤波:
6
3、仿真及其结果分析7
3.1录制语音信号7
3.2对语音信号的分析7
3.2对语音信号进行加噪声处理,对滤波前后进行对比9
3.3设计滤波器指标及matlab代码10
3.4对语音信号进行滤波,对滤波前后进行对比12
4、结论15
5、收获与体会16
6、实验源程序17
7、参考文献20
1、主要内容
数字滤波器,是数字信号处理中及其重要的一部分。
随着信息时
代和数字技术的发展,受到人们越来越多的重视。
数字滤波器可以通过数值运算实现滤波,所以数字滤波器处理精度高、稳定、体积小、重量轻、灵活不存在阻抗匹配问题,可以实现模拟滤波器无法实现的特殊功能。
IIR滤波器采用递归型结构,即结构上带有反馈环路。
IIR滤波器运算结构通常由延时、乘以系数和相加等基本运算组成,可以组合成直接型、正准型、级联型、并联型四种结构形式,都具有反馈回路。
同时,IIR数字滤波器在设计上可以借助成熟的模拟滤波器的成果,如巴特沃斯、契比雪夫和椭圆滤波器等,有现成的设计数据或图表可查,在设计一个IIR数字滤波器时,我们根据指标先写出模拟滤波器的公式,然后通过一定的变换,将模拟滤波器的公式转换成数字滤波器的公式。
本设计研究的主要内容中是先进行语音信号的采集,然后对语音信号进行频谱分析,再利用IIR和FIR两种滤波器对语音信号进行过滤和频谱分析,画出滤波之后的频谱图与时域波形,并对信号滤波前后进行分析比较,分析信号的变化,得出滤波性能
2、基于滤波器的语音信号的处理
选择一个语音信号作为分析的对象,或录制一段语音信号,对其进行频谱分析;利用MATLAB中的随机函数产生噪声加入到语音信号中,模仿语音信号被污染,并对其进行频谱分析;设计IIR数字滤波器和FIR数字滤波器,并对被噪声污染的语音信号进行滤波,分析滤波后信号的时域和频域特征,最后回放语音信号。
2.1语音信号的采集
利用WINDOWS操作系统可以进行数字信号的采集。
将话筒输入计算机的语音输入插口上,启动录音机。
按下录音按钮,接着对话筒说话,说完后停止录音,屏幕左侧将显示所录声音的长度。
点击放音按钮,可以实现所录音的重现。
然后保存入硬盘中。
可以看到,文件存储器的后缀默认为.wav,这是WINDOWS操作系统规定的声音文件存的标准。
利用MATLAB中的“wavread”命令来读入(采集)语音信号,将它赋值给某一向量。
再对其进行采样,记住采样频率和采样点数。
下面介绍Wavread函数几种调用格式。
(1)y=wavread(file)
功能说明:
读取file所规定的wav文件,返回采样值放在向量y中。
(2)[y,fs,nbits]=wavread(file)
功能说明:
采样值放在向量y中,fs表示采样频率(hz),nbits表示采样位数。
(3)y=wavread(file,N)
功能说明:
读取前N点的采样值放在向量y中。
(4)y=wavread(file,[N1,N2])
功能说明:
读取从N1到N2点的采样值放在向量y中。
2.2加噪后的语音信号及其频谱分析
本设计中,利用MATLAB中的随机函数randn产生噪声加入到语音信号中,模仿语音信号被污染,并对其频谱分析。
Randn函数有两种基本调用格式:
Randn(n)和Randn(m,n),前者产生n×n服从标准高斯分布的随机数矩阵,后者产生m×n的随机数矩阵。
在这里,我们选用Randn(m,n)函数。
2.3IIR数字滤波器的设计
2.3.1IIR数字滤波器的设计思想
IIR数字滤波器可用一个n阶差分方程:
或者用它的Z与系统函数:
对照模拟滤波器的传递函数:
不难看出,数字滤波器与模拟滤波器的设计思路相仿,其设计实质也是寻找一组系数{b,a},司,去逼近所要求的频率响应,使其在性能上满足预定的技术要求;不同的是模拟滤波器的设计是在S平面上用数学逼近法去寻找近似的所需特性H(S),而数字滤波器则是在Z平面寻找合适的H(Z)。
IIR数字滤波器的单位响应是无限长的,而模拟滤波器一般都具有无限长的单位脉冲响应,因此与模拟滤波器相匹配。
由于模拟滤波器的设计在理论上已十分成熟,因此数字滤波器设计的关键是将H(S)变换为H(Z),即,利用复值映射将模拟滤波器离散化。
已经证明,冲击响应不变法和双线性变换法能较好地担当此任,则在此基础上,数字滤波器的设计就可首先归结为模拟滤波器的设计了。
2.3.2IIR数字滤波器的设计步骤
(1)确定数字滤波器的技术指标:
通带边界频率
、通带最大衰减
、阻带截止频率
、阻带最小衰减
。
(2)将数字滤波器的技术指标转换成相应的模拟滤波器的技术指标。
这里主要是边界频率
、
的转换,
、
指标不变。
如果采用脉冲响应不变法,边界频率的转换关系为:
如果采用双线性变换法,边界频率的转换关系为:
(3)根据归一化频率,确定最小阶数N和频率参数Wn。
归一化频率可以由以下公式得到:
(4)运用最小阶数N设计模拟低通滤波器原型。
(5)根据第(3)步的频率参数Wn,将模拟低通滤波器原型转换成模拟低通、高通、带通、带阻滤波器。
(6)运用脉冲响应不变法或双线性变换法把模拟滤波器转换成数字滤波器。
本设计中用的是双线性变换法,因此这里简单介绍一下。
双线性变换法的S域与Z域间的变换关系为:
(1)
由式
(1)可以看出,z和s之间可以直接代换,由于这是一非线性变换,需考察一下是否能把jΩ映射成单位圆,以及是否能将s域左半平面映射到单位圆内部。
对于s平面上的虚轴jΩ,用s=jΩ代入式
(1)得:
可见:
上面表示S平面与Z平面一一单位对应,S平面的虚轴经映射后确已成为Z平面的单位圆,但是
与
为非线性关系,因此,通过双线性变换后两个滤波器的频率特性形状不能保持相同,双线性变换不存在混叠效应。
对于s域的左半平面,用
代入式
(1),得到:
由此得:
|Z|=
此式表明,当σ<0,有|z|<1,因而s平面的左半平面被映射在单位圆内部,这意味着稳定的模拟滤波器经双线性变换可以映射成稳定的数字滤波器。
2.4FIR数字滤波器的设计
用窗函数法设计FIR滤波器的步骤。
如下:
(1)根据对阻带衰减及过渡带的指标要求,选择串窗数类型(矩形窗、三角窗、汉宁窗、哈明窗、凯塞窗等),并估计窗口长度N。
先按照阻带衰减选择窗函数类型。
原则是在保证阻带衰减满足要求的情况下,尽量选择主瓣的窗函数。
(2)构造希望逼近的频率响应函数。
(3)计算h(n).。
(4)加窗得到设计结果。
2.5用滤波器对加噪语音信号进行滤波:
用自己设计的各滤波器分别对加噪的语音信号进行滤波,在Matlab中,IIR滤波器利用函数filter对信号进行滤波。
函数filter的调用格式:
yn=filter(B,A,xn),它是按照直线型结构实现对xn的滤波。
其中xn是输入信号向量,yn输出信号向量。
3、仿真及其结果分析
3.1录制语音信号
用windows工具中的录音机录一段自己说的话(语音信号),为:
“人之初,性本善,性相近,习相远”。
将语音信号的文件命名为b.wav,将语音文件保存后,在MATLAB软件平台下,首先调用wavread函数可采集到录制的音乐信号,并得到其采样率fs和比特数bits。
具体调用如下:
>>[y,fs,bits]=wavread('d:
\bobo.wav')%读取语音信号
运行后得出fs=22050,bits=16。
其中参数y是每个样本的值,fs是生成该波形文件时的采样率,bits是波形文件每样的编码位数。
sound(y);用于对声音的回放。
向量y则就代表了一个信号,也即一个复杂的“函数表达式”,也可以说像处理一个信号的表达式一样处理这个声音信号。
3.2对语音信号的分析
语音信号分析是语音信号处理的前提和基础,只有分析出可表示语音信号本质特征的参数,才有可能利用这些参数进行高效的语音通信、语音合成和语音识别等处理。
而且,语音合成的音质好坏,语音识别率的高低,也都取决于对语音信号分桥的准确性和精确性。
因此语音信号分析在语音信号处理应用中具有举足轻重的地位。
(1)语音信号的时域分析
语音信号的时域分析就是分析和提取语音信号的时域参数。
运用matlab软件,调用plot函数,在读取语音信号的基础上画出语音信号的时域波形图。
分析:
可以从上图的波形看出来,不同发音,其幅度大小不同,并且在时间轴上大致成对称状态。
但是在理想状态下,语音信号的时域波形应该是关于时间轴对称的,从上面的波形图可以看出来,此段录音存在着一些噪音,使得波形看上去不是那么完美。
(2)语音信号的频谱分析
信号的频谱分析就是利用傅里叶分析的方法,求出与时域描述相对应的频域描述,从中找出信号频谱的变化规律,以达到特征提取的目的。
利用matlab软件,调用fft函数得到语音信号的快速傅里叶变换序列,再用plot函数画出信号的频谱图。
分析:
一般来说,人的听觉能感知的声音频率范围为20~20000Hz,在这一频率范围内可感知的声音强度为0~140dB,其中人耳比较敏感的区域在50~4000Hz。
根据这个,再结合上面的频域波形图可以看出,在频率为4000Hz以上的波形应该是噪音所产生的。
同时通过波形的走向可以看出,设计一个低通滤波器可以保留自己的语音信号和消除噪音。
3.2对语音信号进行加噪声处理,对滤波前后进行对比
本设计中,利用MATLAB中的随机函数(rand或randn)产生噪声加入到语音信号中,模仿语音信号被污染,并对其频谱分析
3.3设计滤波器指标及matlab代码
(1)指标
结合上面的语音信号的时域和频域分析,现在运用matlab软件来设计一个数字信号IIR低通滤波器和FIR低通滤波器。
滤波器的指标为通带截止频率4KHZ,阻带截止频率4.5KHZ,通带最大衰减0.1db,阻带最小衰减50db。
(2)双线性变换法设计IIR滤波器matlab代码
fp=4000;%通带截止频率
fs=4500;%阻带截止频率
Fs=22050;%采样点数
wp=2*pi*fp/Fs;%通带频率归一化
ws=2*pi*fs/Fs;%阻带频率归一化
Rp=0.1;%通带最大衰减
Rs=50;%阻带最小衰减
Ts=1/Fs;%采样频率
wp1=2/Ts*tan(wp/2);%将模拟指标转换成数字指标
ws1=2/Ts*tan(ws/2);%将模拟指标转换成数字指标
[N,Wn]=buttord(wp1,ws1,Rp,Rs,'s');%选择滤波器的最小阶数N以及滤波器固有频率Wn
%其中wp1和wp2以弧度为单位
[Z,P,K]=buttap(N);%产生一个低通模拟butterworth滤波器原型
[Bap,Aap]=zp2tf(Z,P,K);%零极点形式的传递函数的转换
[b,a]=lp2lp(Bap,Aap,Wn);%将表示为传递函数形式的模拟低通滤波器原型转
%成截止频率为Wn的低通滤波器
[bd,ad]=bilinear(b,a,Fs);%用双线性变换法实现模拟滤波器到数字滤波器的转换
[h,w]=freqz(bd,ad);%数字滤波器的频率响应
figure(4);
plot(Fs*w/(2*pi),20*log10(abs(h)));
axis([08000-15020]);
grid;
title('滤波器的性能分析');
(3)窗函数法设计FIR滤波器matlab代码
f1=4000;f2=4500;
fs=22050;
wp=2*pi*f2/fs;
ws=2*pi*f1/fs;
bt=wp-ws;%计算过渡带宽度
n0=ceil(6.6*pi/bt);%矩形窗计算h(n)长度n0,ceil(x)取大于等于x的最小整数
t=n0+mod(n0+1,2);%确保好h(n)长度n是奇数
wc=(wp+ws)/2/pi;%计算高通滤波器通带截止频率
b=fir1(t-1,wc,hamming(t));%调用firl计算高通FIR数字滤波器的h(n)
figure(3)
[H,W]=freqz(b,1,512);
plot(W*fs/(2*pi),20*log10(abs(H)));
xlabel('频率/Hz');
ylabel('幅度/dB');
title('滤波器的幅频特性');
3.4对语音信号进行滤波,对滤波前后进行对比
(1)绘制IIR滤波器特征曲线。
调用图形界面tool工具栏中的datacursor标记图形,观察其是否符合指标。
结果:
上图是matlab软件绘制的滤器的特征曲线。
可以看出该滤波器在4KHZ处衰减-0.08149db,在4.5KHZ处衰减-50.31db。
并且,大于4.5KHZ的语音信号可以衰减的更大。
目的是尽量保留频率在4000HZ以下的语音信号,而尽量压缩高于4000HZ频率的语音信号,使得高频处的语音可以忽略.
(2)绘制FIR滤波器特征曲线
调用图形界面tool工具栏中的datacursor标记图形,观察其是否符合指标
结果与上分析相同,不再赘述!
(2)绘制语音信号滤波前后的时域与频域图形。
观察两者,得出结论。
时域波形对比,可以看出滤波后的波形关于时间轴对称更加明显了,而且其幅度相对原始语音信号在许多地方变小了,这是由于滤波器把部分的语音滤波掉了。
频谱图的对比,0~4KHZ左右的频谱波形保持不变,高频处幅值几乎为0。
说明滤波器确实是低通型的,同时通过声音的回放,可以听到滤波后的声音比原来声音更加纯净了,因此滤波器设计达到了预期效果。
4、结论
语音信号处理是语音学与数字信号处理技术相结合的交叉学科,课题在这里不讨论语音学,而是将语音当做一种特殊的信号,即一种“复杂向量”来看待。
也就是说,课题更多的还是体现了数字信号处理技术。
从课题的中心来看,课题“有噪声语音信号处理”是希望将数字信号处理技术应用于某一实际领域,这里就是指对语音信号做加噪处理。
作为存储于计算机中的语音信号,其本身就是离散化了的向量,我们只需将这些离散的量提取出来,就可以对其进行处理了。
这一过程的实现,用到了处理数字信号的强有力工具MATLAB。
通过MATLAB里几个命令函数的调用,很轻易的在实际语音与数字信号的理论之间搭了一座桥。
课题的特色在于它将语音信号看作一个向量,于是就把语音数
字化了。
那么,就可以完全利用数字信号处理的知识来解决语音信号分析以及加噪处理的问题。
我们可以像给一般信号做频谱分析一样,来对语音信号做频谱分析,也可以较容易的用数字滤波器来对语音进行滤波处理。
通过比较加噪前后,语音的频谱和语音回放,能明显的感觉到加入噪声后回放的声音与原始的语音信号有很大的不同。
从含噪语音信号的频谱图中可以看出含噪声的语音信号频谱,在整个频域范围内分是布均匀。
其实,这正是干扰所造成的。
通过滤波前后的对比,低通滤波后效果最好,高通滤波后的效果最差。
由此可见,语音信号主要分布在低频段,而噪声主要分布在高频段。
5、收获与体会
维持一周的课程设计即将结束了,回想起这期间的过程,还是有很多值得去认真总结的,可以说是受益匪浅吧!
实践出“真知”。
这里的“真知”有两个。
第一个“真知”是我“真”正地“知”道自己对以前所学习的知识的掌握是很肤浅的,是纸上谈兵。
想想自己平常学习的时候也很认真,自己认为对知识的掌握还是很到位的。
在为此次课程设计着手之前,我简单的对此次课程设计构思一番:
“就是4个指标,设计滤波器。
录一段语音,用滤波器处理。
”但是,当自己动手的时候,发现了问题:
“指标怎么得到”,“理论依据是什么”,“设计滤波器后又怎么去应用”等等。
原来平常以为很简单的问题,实际起来不是那么简单的,原因就是基础不牢固,对知识掌握的很肤浅。
因此我又重新拿起了书本好好地看了两遍,并且还借阅了其它的书籍,从书本做起,还是先搞懂理论吧。
第二个“真知”是在学习课本知识之后,我“真”的“知”到了。
在看完书本后,对滤波器设计原理的前后有了全面的认识,并且知道滤波器有很多种类,针对不同的情况,我们要选择合理的滤波器设计,再之后就是滤波器的设计有多种不同的方法,根据所要求的用最适合的方法去设计。
这时候再去设计滤波器时,感觉有了方向一样,很有安全感的!
经过这次的滤波器课程设计,让我有机会将自己学到的理论知识运用到实际中,提高了自己的动手能力和思维能力。
在课程设计中发现自己的不足,所以在今后的学习和生活中我们要更加努力,学习好我们的专业知识并要能运用到实际。
这次的设计中出的几个问题,在同学的帮助下解决了,当然也少不了自己的努力和思考。
能将自己平时学到的东西能运用到实际中,让理论和实际得以结合还是很不错的。
也让我在课程设计中找到了动手的乐趣和思考的快乐,很有成就感。
我从这次的课程设计中体会到,什么事都要我们真正用心去做了,才会使自己更加成长,没有学习就不可能有实践的机会,没有自己的实践就不会有所突破,希望这次的经历能让我们在以后的学习生活中不断成长。
最后,在此衷心地感谢老师和同学对我的帮助,让我们能够将自己学到的知识运用到实际中!
6、实验源程序
%----------------------------------------------------------
%原始信号波形以及频谱分析
[y1,fs,bits]=wavread('C:
\Users\sweet-heart\Desktop\b.wav');
%sound(y1,22050);%播放语音信号
n=length(y1);
f=fs*(0:
(n/2-1))/n;
y=fft(y1);%对信号做FFT变换
figure
(1)
subplot(2,1,1);
plot(y1)%做原始语音信号的波形
axis([0,1.8e5,-1.2,1.2])
xlabel('时间/s');
ylabel('幅度');
title('原始语音信号波形');
subplot(2,1,2);
plot(f,abs(y(1:
n/2)))%做原始语音信号的FFT频谱图
xlabel('频率/Hz')
ylabel('幅度')
title('原始语音信号频谱')
%-------------------------------------------------------------------------
%加入噪声后对波形和频谱分析
n=length(y1);%求出语音信号的长度
noise=0.1*randn(n,2);%随机函数产生噪声
si=y1+noise;%语音信号加入噪声
S=fft(si);%傅里叶变换
%sound(si,22050)
figure
(2)
subplot(2,1,1);
plot(si);%做加噪声后语音信号的波形图
axis([0,1.8e5,-1.2,1.2])
xlabel('时间/s');
ylabel('幅度');
title('加噪语音信号的波形');
subplot(2,1,2);
plot(f,abs(S(1:
n/2)));%做加噪声后语音信号的频谱图
xlabel('频率/Hz')
ylabel('幅度')
title('加噪语音信号的频域波形');
%----------------------------------------------------------------------
%双线性变换法设计一个数字信号低通滤波器:
滤波器的指标为通带截止频率4KHZ,
%阻带截止频率4.5KHZ,通带最大衰减0.1db,阻带最小衰减50db。
fp=4000;%通带截止频率
fs=4500;%阻带截止频率
Fs=22050;%采样点数
wp=2*pi*fp/Fs;%通带频率归一化
ws=2*pi*fs/Fs;%阻带频率归一化
Rp=0.1;%通带最大衰减
Rs=50;%阻带最小衰减
Ts=1/Fs;%采样频率
wp1=2/Ts*tan(wp/2);%将模拟指标转换成数字指标
ws1=2/Ts*tan(ws/2);%将模拟指标转换成数字指标
[N,Wn]=buttord(wp1,ws1,Rp,Rs,'s');%选择滤波器的最小阶数N以及滤波器固有频率Wn
%其中wp1和wp2以弧度为单位
[Z,P,K]=buttap(N);%产生一个低通模拟butterworth滤波器原型
[Bap,Aap]=zp2tf(Z,P,K);%零极点形式的传递函数的转换
[b,a]=lp2lp(Bap,Aap,Wn);%将表示为传递函数形式的模拟低通滤波器原型转
%成截止频率为Wn的低通滤波器
[bd,ad]=bilinear(b,a,Fs);%用双线性变换法实现模拟滤波器到数字滤波器的转换
[h,w]=freqz(bd,ad);%数字滤波器的频率响应
figure(4);
plot(Fs*w/(2*pi),20*log10(abs(h)));
axis([08000-15020]);
grid;
title('滤波器的性能分析');
%--------------------------------------------------------------------------
%加噪声的信号滤波后波形以及频谱分析
z=filter(bd,ad,si);
%sound(z,22050);
Z=fft(z);
figure(3);
subplot(2,1,1);
plot(z);
xlabel('时间/s');
ylabel('幅度');
title('滤波后信号的波形');
axis