资源描述:
《信号处理算法课程设计报告-matlab对语音信号进行频谱分析及滤波》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、实验报告题目:Matlab对语音信号进行频谱分析及滤波专业班级电子09学生学号指导教师刘利民完成时间2012年6月11日一、设计目的为了巩固所学的数字信号处理理论知识,使学生对信号的采集、处理、传输、显示和存储等有一个系统的掌握和理解,再者,加强学生对Matlab软件在信号分析和处理的运用。二、设计内容1、语音信号的采集录制了一段声音,在C盘保存为WAV格式(也可以利用已有的音乐)。然后在Matlab软件平台下.利用函数wavread对语音信号进行采样,并记录下了采样频率和采样点数,在这里我们还通过函数sound引入听到采样后自己所录的一段声音。2、语音
2、信号的频谱分析首先画出语音信号的时域波形;然后对语音信号进行频谱分析,在Matlab中,我们利用函数fft对信号进行快速傅里叶变换,得到信号的频谱特性性。3、设计数字滤波器和画出其频谱响应设计一个数字滤波器:Fc=4800Hz,Fb=5000Hz,Ap=1dB,As=100dB,利用Matlab中的函数freqz画出了该滤波器的频率响应。4、对滤波前后的信号进行对比,分析信号的变化,并回放语音信号。三、课程设计应完成的工作步骤1、语音信号的采集,并播放原始语音信号;2、画出语音信号的时域波形,语音信号的频谱分析;3、数字滤波器的设计;4、对语音信号进行滤
3、波处理;5、对滤波前后的语音信号频谱进行对比分析;并回放语音信号四、设计结果分析二、设计内容1语音信号的采集利用windows自带的关机语音C:WINDOWSMediaWindowsXP关机.wav,时间刚好在1s以内(如图)。在matlab平台下,利用函数wavread对语音信号进行采样。通过wavread函数的使用,进一步理解采样频率,采样位数。采样和播放语音信号:[z1,fs,bits]=wavread('C:WINDOWSMediaWindowsXP关机.wav')运行结果:fs=20250bits=16(fs表示采样频率(Hz),n
4、bits表示采样位数)sound(x1,fs,bits);%播放语音信号2语音信号的频谱分析首先画出由wavread函数采样后的信号的时域波形和它的频域响应波形;其次对语音信号进行FFT变换,得到FFT频谱特性曲线,与原语音信号的频谱特性曲线进行比较。采样后的信号的程序代码与时域波形、频域响应波形::[x1,fs,bits]=wavread('C:WINDOWSMediaWindowsXP关机.wav');%读取语音信号的数据,赋给变量x1figure(1)plot(x1)%做原始语音信号以44.1k采样后的时域图形title('原始语音采样后时域
5、信号');xlabel('时间轴n');ylabel('幅值A');figure(2)freqz(x1)%绘制原始语音信号采样后的频率响应图title('原始语音信号采样后频率响应图');采样后的语音信号的频谱与FFT变换后的频谱的程序代码和波形图:程序代码:[x1,fs,bits]=wavread('C:WINDOWSMediaWindowsXP通知.wav');%读取语音信号的数据,赋给变量x1y1=fft(x1,1024);%对采样后信号做1024点FFT变换f=fs*(0:511)/1024;figure(1)subplot(2,1,1);
6、plot(f,abs(y1(1:512)));title('原始语音信号采样后频谱')xlabel('频率/Hz');ylabel('幅值')subplot(2,1,2);plot(abs(y1(1:1024)))%采样后信号的FFT频谱图title('原始语音信号采样后FFT频谱')xlabel('点数N');ylabel('幅值');3设计数字滤波器和画出其频率响应用窗函数法和双线性变换法设计以下三种数字滤波器:(1)低通滤波器性能指标fb=1000Hz,fc=1200Hz,As=100db,Ap=1db。(2)高通滤波器性能指标fs=4800Hz,
7、fb=5000Hz,As=100db,Ap=1db。(3)带通滤波器性能指标fb1=1200Hz,fb2=3000Hz,fc1=1000Hz,fc2=3200Hz,As=100db,Ap=1db。1.FIR滤波器及通过FIR滤波器后信号的时域和频谱的变化并进行比较:(1)FIR高通滤波器:程序代码:fs=44100;x1=wavread('C:WINDOWSMediaWindowsXP通知.wav');wp=2*pi*5000/fs;ws=2*pi*4800/fs;Rp=1;Rs=100;wdelta=wp-ws;N=ceil(8*pi/wdelt
8、a);%取整wn=(wp+ws)/2;[b,a]=fir1(N,wn/pi,'h