Matlab语音信号处理
一 、
目的
综合运用数字信号处理的理论知识进行频谱分析和滤波器设计,通过理论推
导得出相应结论,再利用 MATLAB 作为编程工具进行计算机实现,从而加深
对所学知识的理解,建立概念。
二、设计要求
1、 MATLAB 的使用,掌握 MATLAB 的程序设计方法。
2、 Windows 环境下语音信号采集的方法。
3、数字信号处理的基本概念、基本理论和基本方法。
4、TLAB 设计 FIR 和 nR 数字滤波器的方法。
5、用 MATLAB 对信号进行分析和处理
6、计报告4000以上,含程序设计说明,用户使用说明,源程序清单及程
序框图。
7、机演示。
8、有详细的文档。文档中包括设计思路、设计仿真程序、仿真结果及相
应的分析与结论。
目 录
一、课题的主要功能.................................................. 1
1.1语音信号采集................................................. 1
1.2语音信号分析................................................. 1
1.3含噪语音信号合成............................................. 1
1.4数字滤波器设计及滤波,完成以下的两个题目...................... 1
1.5回放语音信号................................................. 2
1.6课程设计的参考文献........................................... 2 二、课题的功能模块的划分............................................ 3 三、主要功能的实现.................................................. 4
3.1绘出源信号的时域波形图和频域波形图........................... 4
3.2加入噪声干扰................................................. 5
3.3滤波......................................................... 5 四、程序调试........................................................ 9 五、总结............................................................ 9
六、附件........................................................... 10
6.1导入源声音信号代码.......................................... 10
6.2加入噪声干扰................................................ 10
6.3实现对干扰信号的滤波作用的代码.............................. 12
6.3.1 凯撒窗低通滤波器...................................... 12
6.3.2 凯撒窗带通滤波器...................................... 13
6.3.3凯撒窗高通滤波器 ...................................... 14 七、评分表....................................... 错误~未定义
签。16
一、课题的主要功能
1.1语音信号采集
录制一段课程设计学生的语音信号并保存为文件,要求长度不小于10秒,并对录制的信号进行采样;录制时可以使用Windows自带的录音机,或者使用其它专业的录音软件,录制时需要配备录音硬件(如麦克风),为便于比较,需要在安静、干扰小的环境下录音。
1.2语音信号分析
使用MATLAB绘出采样后的语音信号的时域波形和频谱图。根据频谱图求出其带宽,并说明语音信号的采样频率不能低于多少赫兹。
1.3含噪语音信号合成
在MATLAB软件平台下,给原始的语音信号叠加上噪声,噪声类型分为如下几种:(1)白噪声;(2)单频噪色(正弦干扰);(3)多频噪声(多正弦干扰);(4)其它干扰,可设置为低频、高频、带限噪声,或Chirp干扰、冲激干扰。绘出叠加噪声后的语音信号时域和频谱图,在视觉上与原始语音信号图形对比,也可通过Windows播放软件从听觉上进行对比,分析并体会含噪语音信号频谱和时域波形的改变。
1.4数字滤波器设计及滤波,完成以下的两个题目
给定滤波器的规一化性能指标(参考指标,实际中依据每个同学所叠加噪声情况而定)例如:通带截止频率wp=0.25*pi, 阻通带截止频率ws=0.3*pi; 通带最大衰减Rp=1 dB; 阻带最小衰减Rs=15 dB,每个题目至少设计出4个用不同方法的不同类型滤波器。
题目(1):采用窗函数法与等波纹法分别设计各型FIR滤波器(低通、高通、带通、带阻中的至少3种类型)来对叠加噪声前后的语音信号进行滤波处理,绘
1
出滤波器的频域响应,绘出滤波后信号的时域波形和频谱,并对滤波前后的信号进行对比,分析信号的变化;在相同的性能指标下比较各方法的滤波效果,并从理论上进行分析(或解释)。
题目(2):采用双线性变换法与脉冲响应不变法,分别利用不同的原型低通滤波器(Butterworth型与切比雪夫I型)来设计各型IIR滤波器(低通、高通、带通、带阻中的至少3种类型),绘出滤波器的频域响应;并用这些数字滤波器对含噪语音信号分别进行滤波处理,比较不同方法下设计出来的数字滤波器的滤波效果,并从理论上进行分析(或解释)。
1.5回放语音信号
对滤波后的语音信号进行回放,感觉滤波前后语音信号的变化。 1.6课程设计的参考文献
【1】丁玉美、高全西。数字信号处理第2版。西安:西安电子科技大学出版社,2001
【2】楼顺天、李博菡。基于MATLAB的系统分析与设计——信号处理。西安:西安电子科技大学出版社,1998
【3】胡广书。数字信号处理——理论、算法与实现。北京:清华大学出版社,1998
2
二、课题的功能模块的划分
课题系统功能模块如下
导入声音源,绘出源信号的时域波形图和频域波形图
添加噪声干扰
白单多
噪频频
声噪噪
干声声
干干扰
扰 扰
低带高
通通通 滤滤滤
波波波 器 器 器
3
三、主要功能的实现
3.1绘出源信号的时域波形图和频域波形图
图1原始语音信号的时域及频域波形图
导入源声音信号[x,fs,bits]=wavread('E:1.wav');然后求x的32768点的DFT。从而得到图1所得的原始语音信号的时域及频域波形图,由此图我们可知信号的时域与频域之间的关系,时域无限则频域有限。同时也了解该语音信号的谱线主要集中在0~2000Hz之间。将此图与加噪后的信号的时域及频域波形图进行对比,从而了解用何种滤波器能达到滤波作用。
4
3.2加入噪声干扰
图中是加入信噪比为10的白噪声,d=0.09*sin(2*pi*5000*t)的单频噪声,多频噪声分别加入的是d=0.09*sin(2*pi*2000*t) ,d= 0.09*sin(2*pi*3000*t),d=0.09*sin(2*pi*3500*t)。
3.3滤波
下图为多正弦干扰信号通过凯撒窗低通滤波器后的信号波形和信号频谱:
5
6
下图为多正弦干扰信号通过凯撒窗带通滤波器后的信号波形和频谱:
7
下图为多正弦干扰信号通过凯撒窗高通滤波器后的信号波形和信号频谱:
8
四、程序调试
axis([0 32768 0 1500])对图形的调整,让我的图形显得更为饱满。事实上,一开始的时候,我的图形的后面很大一部分是空白的,然后通过询问同学,利用这个函数实现了图形的修正。
a=[0.09*sin(2*pi*2000*t)]';b=[0.09*sin(2*pi*3000*t)]';c=[0.09*sin
(2*pi*3500*t)]'三个噪声函数的添加。一开始我对噪声的添加是随意的,导致,滤波器设计和噪声的滤除显得很是蛋疼。然后,通过老师的讲述,说要通过信号频域的位置适当的加噪声。这样低通、带通、高通才显得明显的效果。 五、总结
本次课设可以说的现实生活与课本知识的结合,是实践验证书本知识的过程。通过本次课程设计,我相信,每个同学对自己的声音会更为熟悉,对各种滤波器更为理解,同时,对滤除各种噪声都会有自己独到的讲解。
低通滤波器,顾名思义就是很低的地方能够通过的滤波器。因为,我录制的声音的频谱主要集中在低端,也就是说,如果我假如的噪声也在低端的话,这是很难滤除的,这样,我们可以人为的将噪声加在中端或者是高端。这样,信号通过一个低通滤波器,便得到了我所需要的自己的声音信号,而把假如的噪声率除掉了。
对于带通和高通滤波器,由于我的声音信号的频谱大部分都在低端,这样,带通和高通,都会将我所需要的大部分的有用的声音信号滤除,事实上,这不是我们所需要的效果,因此也就有了如图所示的各种扯淡的频谱图形。
通过对这三种滤波器效果的比较,我们很容易的发现,其实,低通滤波器是最适合我所录制的声音的,他能将我所需要的大部分有用的声音信号保留下来,而将加入的噪声信号大部分的滤除,这正是我们滤波器想要达到的效果。
虽然本次课设遇到了种种困难,但是通过请教同学,上网查资料,我还是顺利的完成了自己的课设,我相信,不论是学习还是生活上,只要自己想做,就没设么多不到的,我们要努力克服各种困难,我相信,只有这样我们才能不断的成
9
长起来。
六、附件
6.1导入源声音信号代码
[x1,fs,bits]=wavread('E:/1.wav');
sound(x1,fs,bits); y1=fft(x1,32768); figure(1)
subplot(2,1,1)
plot(x1);
title('原始语音信号时域波形');
axis([0 230000 -1 1]) subplot(2,1,2)
plot(abs(y1));
title('原始语音信号频谱')
axis([0 32768 0 1500]) 6.2加入噪声干扰
[x1,fs,bits]=wavread('E:/1.wav');
y1=fft(x1,32768); x2=awgn(x1,10);
%sound(x2,fs,bits) y2=fft(x2,32768); f=0:fs/32768:fs/32768*32767
figure(2)
subplot(3,2,1)
plot(x2);
title('加高斯白噪声语音信号的时域波形')
10
axis([0 230000 -2 2])
subplot(3,2,2)
plot(f,abs(y1));
xlabel('频率( Hz)'); ylabel('幅度(dB)');
title('加高斯白噪声语音信号的频谱')
axis([0 23000 0 1500]) N=length(x1)-1;
t=0:1/fs:N/fs;
d=[0.09*sin(2*pi*5000*t)]'; x3=x1+d;
sound(x3,fs,bits);
f=0:fs/32768:fs/32768*32767 subplot(3,2,3)
plot(x3)
title('加单频正弦信号的语音信号时域波形') axis([0 230000 -2 2])
y3=fft(x3,32768);
subplot(3,2,4)
plot(f,abs(y3));
xlabel('频率( Hz)'); ylabel('幅度(dB)'); title('加单频正弦信号的语音信号频谱')
axis([0 23000 0 1500]) N=length(x1)-1;
t=0:1/fs:N/fs; a=[0.09*sin(2*pi*2000*t)]'; b=[0.09*sin(2*pi*3000*t)]'; c=[0.09*sin(2*pi*3500*t)]'; x4=x1+a+b+c;
%sound(x4,fs,bits)
y4=fft(x4,32768); %对加噪音后的信号取1024个点的fft变换
subplot(3,2,5);
11
plot(x4)
title('加多个正弦干扰信号后的信号时域图'); axis([0 230000 -2 2]) ylabel('幅值');
subplot(3,2,6);
plot(f,abs(y4));
title('加多个正弦干扰信号后的信号频谱图') axis([0 23000 0 1500]) ylabel('幅值');
xlabel('频率(Hz)');
6.3实现对干扰信号的滤波作用的代码
6.3.1 凯撒窗低通滤波器
fp=1000;Fs=1800;As=40;Ap=0.25; %As=40;Ap=0.25;Fs=20000 wp=2*pi*fp/fs;ws=2*pi*Fs/fs; %wp=2*pi*[1500,3500]/Fs;ws=2*pi*[1800,3800]/Fs;
Bt=ws-wp;
alph=0.5842*(As-21)^0.4+0.07886*(As-21);
%alph=0.112*(As-8.7); %alph=0;
M=ceil((As-8)/2.285/Bt); wc=(wp+ws)/2/pi;
hn=fir1(M,wc,kaiser(M+1,alph)); hk=fft(hn);
hk=freqz(hn,1,Fs);
xn3=fftfilt(hn,x4);
sound(xn3,fs,bits);
yn3=fft(xn3);
figure(3);
12
subplot(2,1,1);
plot(xn3);
title('多正弦干扰滤波后信号波形');
axis([0 230000 -2 2]) subplot(2,1,2);
plot(abs(yn3));
title('多正弦干扰滤波后信号频谱');
axis([0 230000 0 6000]) figure(4);
subplot(2,1,1);
stem(hn);
title('凯撒窗hn波形');
subplot(2,1,2);
plot(abs(hk));
title('凯撒窗hn信号频谱');
sound(xn3,Fs, bits);
6.3.2 凯撒窗带通滤波器
fp=1400;Fs=1800;As=40;Ap=0.25;
%As=40;Ap=0.25;Fs=20000 wp=2*pi*fp/fs;ws=2*pi*Fs/fs; %wp=2*pi*[1500,3500]/Fs;ws=2*pi*[1800,3800]/Fs;
Bt=ws-wp;
alph=0.5842*(As-21)^0.4+0.07886*(As-21);
%alph=0.112*(As-8.7); %alph=0;
M=ceil((As-8)/2.285/Bt);
13
wc=(wp+ws)/2/pi;
ww=[wp,ws];
hn=fir1(M,ww,kaiser(M+1,alph));
hk=fft(hn);
hk=freqz(hn,1,Fs);
xn3=fftfilt(hn,x4);
sound(xn3,fs,bits);
yn3=fft(xn3);
figure(3);
subplot(2,1,1);
plot(xn3);
title('多正弦干扰滤波后信号波形');
axis([0 230000 -2 2]) subplot(2,1,2);
plot(abs(yn3));
title('多正弦干扰滤波后信号频谱');
axis([0 230000 0 6000]) figure(4);
subplot(2,1,1);
stem(hn);
title('凯撒窗hn波形');
subplot(2,1,2);
plot(abs(hk));
title('凯撒窗hn信号频谱'); sound(xn3,Fs, bits);
6.3.3凯撒窗高通滤波器
fp=2800;Fs=3500;As=40;Ap=0.25; %As=40;Ap=0.25;Fs=20000 wp=2*pi*fp/fs;ws=2*pi*Fs/fs; %wp=2*pi*[1500,3500]/Fs;ws=2*pi*[1800,3800]/Fs;
Bt=ws-wp;
14
alph=0.5842*(As-21)^0.4+0.07886*(As-21);
%alph=0.112*(As-8.7); %alph=0;
M=ceil((As-8)/2.285/Bt); ww=[wp,ws];
hn=fir1(M,ww,kaiser(M+1,alph));
hk=fft(hn);
hk=freqz(hn,1,Fs); xn3=fftfilt(hn,x4); sound(xn3,fs,bits); yn3=fft(xn3);
figure(3);
subplot(2,1,1);
plot(xn3);
title('多正弦干扰滤波后信号波形'); axis([0 230000 -2 2]) subplot(2,1,2);
plot(abs(yn3));
title('多正弦干扰滤波后信号频谱'); axis([0 230000 0 6000]) figure(4);
subplot(2,1,1);
stem(hn);
title('凯撒窗hn波形');
subplot(2,1,2);
plot(abs(hk));
title('凯撒窗hn信号频谱');
axis([0 3400 0 1.5]) sound(xn3,Fs, bits);
15