logo资料库

语音信号处理与滤波(数字信号处理).doc

第1页 / 共21页
第2页 / 共21页
第3页 / 共21页
第4页 / 共21页
第5页 / 共21页
第6页 / 共21页
第7页 / 共21页
第8页 / 共21页
资料共21页,剩余部分请下载后查看
一、课程设计目的
二、课程设计基本要求及分组
1、对知识点的掌握要求:
(1)熟悉离散信号和系统的时域特性。
三、详细设计过程
《数字信号处理》 课程设计报告 题 目: 语音信号处理与滤波 专 业: 信息与计算科学 学 号: 0709302-27 姓 名: 张 凤 指导教师: 胡 振 华 成 绩: 二〇一〇 年 一 月 八 日
一、课程设计目的 综合运用数字信号处理的理论知识进行频谱分析和滤波器设计,通过理论推 导得出相应结论,再利用 MATLAB 作为编程工具进行计算机实现,从而加深对 所学知识的理解。 二、课程设计基本要求及分组 1、对知识点的掌握要求: (1)熟悉离散信号和系统的时域特性。 (2)掌握序列快速傅里叶变换 FFT 方法。 (3)学会 MATLAB 的使用,掌握 MATLAB 的程序设计方法。 (4)利用 MATLAB 对语音信号进行频谱分析。 (5)掌握 MATLAB 设计 FIR 和 IIR 数字滤波器的方法。 2、分组情况: 组长:张凤 组员:张凤、张志广、李云、黄生涯、曾胜、沈呈洁 分工情况: 张凤:设计全过程的监督及协助、部分源程序代码的编写和整个源程序代码的整 理。 张志广:语音信号的录制以及对语音信号的采样,FIR 低通滤波器的设计。 李云:FIR 高通滤波器、FIR 带通滤波器的设计以及用此两种滤波器对语音信号 进行滤波。 黄生涯:IIR 低通滤波器、IIR 高通滤波器的设计。 曾胜:IIR 带通滤波器的设计和用此滤波器对语音信号进行滤波。 沈呈洁:系统界面设置和用 FIR 低通滤波器对语音信号进行滤波。 三、详细设计过程 1、问题描述:录制一段自己的语音信号,取不同的数据点对语音信号进行频谱 分析;对所有数据进行插值和抽取处理,改变抽样率再对信号进行频谱分析;设 计 FIR 和 IIR 数字滤波器,并对被抽样后的语音信号进行滤波,分析滤波后信号 的时域和频域特征,回放语音信号。 2、详细操作步骤和部分运行结果 (1)采集语音信号:
利用 Windows 下的录音机,录制一段自己的话音,时间控制在 1s 左右;然后在 MATLAB 软件平台下,利用函数 wavread 对语音信号进行采样,记住采样频率 和采样点数。通过使用 wavread 函数,理解采样频率、采样位数等概念。 wavread 函数调用格式如下: y=wavread(file),读取 file 所规定的 wav 文件,返回采样值放在向量 y 中。 [y,fs,nbits]=wavread(file),采样值放在向量 y 中,fs 表示采样频率(Hz), nbits 表示采样位数。 y=wavread(file,N),读取前 N 点的采样值放在向量 y 中。 y=wavread(file,[N1,N2]),读取从 N1 点到 N2 点的采样值放在向量 y 中。 采集语音的程序代码: [x1,fs,nbits]=wavread(‘e:\yy.wav’); sound(x1,fs,bits); y=fft(x1,1024); subplot(2,1,1); plot(x1); title(‘原始采样后时域信号’); 原始语音采样后的的时域信号波形图: (2)对语音信号进行频谱分析: 在 MATLAB 中,利用函数 fft 对信号进行快速傅里叶变换,得到信号的频谱特
性。首先画出语音信号的时域波形,然后对语音信号进行频谱分析。 程序代码: [x1,fs,bits]=wavread(‘D:\yy.wav’); y1=fft(x1,1024); f=fs*(0:511)/1024; figure(1) subplot(2,1,1); plot(f,abs(1:512))); title(’原始语音信号频谱’); xlabel('频率/Hz'); ylabel('幅值'); subplot(2,1,2); plot(abs(y1(1:1024))); title(‘原始语音信号 FFT 频谱’); xlabel('点数 N'); ylabel('幅值'); 原始语音信号的频率响应图: 原始语音信号频谱和 FFT 转换后的频谱图
(3)设计数字滤波器和画出频率响应: 根据语音信号的特点给出有关滤波器的性能指标: 1 低通滤波器性能指标:fp=1000Hz,fc=1200Hz,As=100dB,Ap=1dB; 2 高通滤波器性能指标:fc=4800Hz,fp=5000Hz,As=100dB,Ap=1dB; 3 带 通 滤 波 器 性 能 指 标 : fp1=1200Hz , fp2=3000Hz , fc1=1000Hz , fc2=3200Hz,As=100dB,Ap=1dB。 首先用窗函数法(矩形窗(Rectangular window)、三角窗(Triangular window)、汉 宁 窗 (Hanning window) 、 海 明 窗 (Hamming window) 、 布 拉 克 曼 窗 (Blackman window)、切比雪夫窗(Chebyshev window)、巴特里特窗(Bartlett window)及凯塞 窗(Kaiser window)。)设计上面要求的三种滤波器。在 MATLAB 中,利用函数 fir1 设计 FIR 滤波器;然后再用双线性变换法设计上面要求的三种滤波器,利用函数 butte、cheby1 和 ellip 设计 IIR 滤波器;最后,利用 MATLAB 中的函数 freqz 画 出各种滤波器的频率响应。 (4)低通滤波器的设计过程 用窗函数法设计低通滤波器: 程序代码: fp=1000; fc=1200; As=100; Ap=1; fs=22050; wc=2*fc/fs; wp=2*fp/fs;
N=ceil((As-7.95)/(14.36*(wc-wp)/2))+1; beta=0.1102*(As-8.7); Win=Kaiser(N+1,beta); b=fir1(N,wc,Win); freqz(b,1,512,fs); 运行结果如下图: 用双线性变换法设计的低通滤波器: 程序代码: fp=1000; fc=1200; As=100; Ap=1; fs=22050; wc=2*fc/fs; wp=2*fp/fs; [n,wn]=ellipord(wp,wc,Ap,As); [b,a]=ellip(n,Ap,As,wn); freqz(b,a,512,fs); 程序运行结果如下图:
(5)高通滤波器的设计过程 程序代码: fp=5000; fc=4800; As=100; Ap=1; fs=22050; wc=2*fc/fs; wp=2*fp/fs; [n,wn]=ellipord(wp,wc,Ap,As); [b,a]=ellip(n,Ap,As,wn); freqz(b,a,512,fs); 程序运行结果如下图:
(6)带通滤波器的设计全过程 程序代码: fp1=1200;fp2=3000; fc1=1000; fc2=3200;As=100; Ap=1; fs=22050; wc=[2*fc1/fs,2*fc2/fs]; wp=[2*fp1/fs,2*fp2/fs]; [n,wn]=ellipord(wp,wc,Ap,As); [b,a]=ellip(n,Ap,As,wn); freqz(b,a,512,fs); 程序运行结果:
分享到:
收藏