1、对语音信号进行分析及处理1、设计目的1.进一步巩固数字信号处理的基本概念、理论、分析方法和实现方法;使自身对信号的采集、处理、传输、显示和存储等有一个系统的掌握和理解;2.增强应用Matlab语言编写数字信号处理的应用程序及分析、解决实际问题的能力;3培养自我学习的能力和对相关课程的兴趣;二、设计过程1、语音信号的采集 采样频率,也称为采样速度或者采样率,定义了每秒从连续信号中提取并组成离散信号的采样个数,它用赫兹(Hz)来表示。 采样位数可以理解为声卡处理声音的解析度。这个数值越大,解析度就越高,录制和回放的声音就越真实 采样定理又称奈奎斯特定理,在进行模拟/数字信号的转换过程中,当采样频率
2、fs不小于信号中最高频率fm的2倍时,采样之后的数字信号完整地保留了原始信号中的信息,一般实际应用中保证采样频率为信号最高频率的510倍。 利用Windows下的录音机,录制了一段发出的声音,内容是“数字信号”,时间在3 s内。接着在D盘保存为WAV格式,然后在Matlab软件平台下利用函数wavread对语音信号进行采样,并记录下了采样频率和采样点数,在这里我们还通过函数sound引入听到采样后自己所录的一段声音。x1,fs,bits=wavread(E:数字信号.wav); %读取语音信号的数据,赋给变量x1,返回频率fs 44100Hz,比特率为16 。2 、语音信号的频谱分析(1)首先
3、画出语音信号的时域波形;程序段:x=x1(60001:1:120000); %?60000?plot(x) %?title(?);xlabel(? n);ylabel(? A);(2)然后用函数fft对语音号进行快速傅里叶变换,得到信号的频谱特性;y1=fft(x,6000); %?N=6000?FFT?figure(2)subplot(2,1,1),plot(k,abs(y1);title(|X(k)|);ylabel(?);subplot(2,1,2),plot(k,angle(y1);title(arg|X(k)|);ylabel(?);(3)产生高斯白噪声,并且对噪声进行一定的衰减,然
4、后把噪声加到信号中,再次对信号进行频谱特性分析,从而加深对频谱特性的理解;d=randn(1,60000); %?d=d/100; %?x2=x+d; %?3、设计数字滤波器(1)IIR低通滤波器性能指标通带截止频,阻带截止频率,通带最大衰减,阻带最小衰减。(2)FIR低通滤波器性能指标通带截止频率,阻带截止频率, 通带衰减1dB,阻带衰减100dB。(3)IIR高通滤波器的设计指标,阻带最小衰减,通带最大衰减。(4)(4)FIR高通滤波器的设计指标,阻带最小衰减,通带最大衰减。(5)用自己设计的各滤波器分别对采集的信号进行滤波,在Matlab中,FIR滤波器利用函数fftfilt对信号进行滤
5、波,IIR滤波器利用函数filter对信号进行滤波。比较滤波前后语音信号的波形及频谱,在一个窗口同时画出滤波前后的波形及频谱。在Matlab中,函数sound可以对声音进行回放。其调用格式:sound(x,fs,bits);可以感觉滤波前后的声音有变化。3、结果分析1、原始语音信号采样后的时域波形及FFT变换后频谱图 1.原始信号时域图图 2.原始信号的频谱图2、加入噪声后信号的时域波形及FFT变换后频谱 图 3.加入噪声后的时域信号分析:由图可以看出加入噪声后有明显的不一样,运行sound(x2 ,fs);播放加入高斯噪声后的语音,可以明显听出兹兹的噪声 图 4.加入噪声后的频谱图3、IIR
6、滤波器及原始信号通过IIR后的时域波形频谱变化图 5. IIR低通滤波器图 6. IIR低通滤波器滤波前后时域波形分析:经过滤波器后的信号和原始信号很近似 图 7. IIR低通滤波器滤波前后的频谱分析:从图7可以看出,经过IIR低通滤波器滤波后将高频部分滤除了。4、FIR滤波器及原始信号通过FIR后的时域波形频谱变化 图 8. FIR低通滤波器图 9.FIR低通滤波器滤波前后时域波形图 10.FIR低通滤波器滤波前后频谱分析:从图10可以看出,经过FIR低通滤波器滤波后将高频部分滤除了。5、IIR高通滤波器的设计图 11. IIR高通滤波器 图 12. IIR高通滤波器滤波前后时域波形图 13
7、. IIR高通滤波器滤波前后频谱6、FIR高通滤波器的设计图 14. FIR高通滤波器 图 15. FIR高通滤波器滤波前后时域波形图 16.FIR高通滤波器滤波前后频谱 4、结束语 这次的数字信号处理大作业的题目是应用Matlab对语音信号进行频谱分析及滤波,首先通过网络和书籍查找有关本次作业所需的资料,编写相关程序,并通过Matlab软件运行得到相关波形频谱图。在做作业的过程中,我将上课所学的理论知识运用到实践中。通过这次应用Matlab对语音信号进行频谱分析及滤波,让我对Matlab的应用以及数字滤波器的设计有了更深层次的理解,每个程序中的语句表示什么意思也有了很清楚的了解。在实践中增强
8、了我的动手能力,并提高了我的综合能力,使自身得到了很大的锻炼。另外,在设计滤波器的过程中由于个人知识学得不到位,后面的仿真结果不是很理想,我希望以后多查阅资料,多积累,多思考,只有这样,才能取得更大的进步,才能学有所用,学有所长。5、程序附录(1)采样+噪声clearclcx1,fs,bits=wavread(E:?.wav); %?,?x1sound(x1,fs); %?N=length(x1)fs %?44100Hzbits %?16 x=x1(60001:1:120000); %?60000?N1=length(x) figure(1)plot(x) %?title(?);xlabel(
9、? n);ylabel(? A);sound(x,fs); %?,?“?” k=0:5999;y1=fft(x,6000); %?N=6000?FFT? figure(2)subplot(2,1,1),plot(k,abs(y1);title(|X(k)|);ylabel(?);subplot(2,1,2),plot(k,angle(y1);title(arg|X(k)|);ylabel(?); mean(x) %?-2.1368e-04 d=randn(1,60000); %?mean(d)d=d/100; %? x2=x+d; %?sound(x2 ,fs); %?,? figure(3)
10、plot(x2) title(?);xlabel(? n);ylabel(? A); k=0:5999;y2=fft(x2,6000); %?N?FFT? figure(4)subplot(2,1,1),plot(k,abs(y2);title(?|X(k)|);ylabel(?);subplot(2,1,2),plot(k,angle(y2);title(?arg|X(k)|);ylabel(?);(2)IIR?%IIR?clearclcx1,fs,bits=wavread(E:?.wav); %?,?x1 x=x1(60001:1:120000); %?60000?d=randn(1,60
11、000); %?mean(d);d=d/100; %? x2=x+d; %?sound(x2 ,fs); %?,? fs=44100;Ts=1/fs;wp=2*pi*45000/fs; %?ws=2*pi*50000/fs; %?Rp=1; %?Rs=100; %? wp1=2/Ts*tan(wp/2); %?ws1=2/Ts*tan(ws/2); N,Wn=buttord(wp1,ws1,Rp,Rs,s); %?Z,P,K=buttap(N); %?butterworth?Bap,Aap=zp2tf(Z,P,K);b,a=lp2lp(Bap,Aap,Wn); %?bz,az=bilinear
12、(b,a,fs); %?H,W=freqz(bz,az); %? figure(1)plot(W*fs/(2*pi),abs(H)gridxlabel(?/Hz)ylabel(?)title(IIR?)f1=filter(bz,az,x2); figure(2)subplot(2,1,1)plot(x2) %?title(IIR?);subplot(2,1,2)plot(f1); %?title(IIR?);sound(f1,44100); %?F0=fft(f1,1024);f=fs*(0:511)/1024; figure(3)y2=fft(x2,1024);subplot(2,1,1);
13、plot(f,abs(y2(1:512); %?title(IIR?)xlabel(?/Hz);ylabel(?);subplot(2,1,2)F1=plot(f,abs(F0(1:512); %?title(IIR?)xlabel(?/Hz);ylabel(?); (3)FIR?%FIR?clearclcfs=44100;x1=wavread(E:?.wav); x=x1(60001:1:120000); %?60000?d=randn(1,60000); %?d=d/100; %?x2=x+d; %?sound(x2 ,fs); %?,? wp=2*pi*1000/fs;ws=2*pi*1200/fs;Rp=1;Rs=
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1