语音信号处理课程设计

  • 格式:doc
  • 大小:749.00 KB
  • 文档页数:12

摘要:这次课程设计我们总共分为三个阶段,如下:第一阶段:领任务书,开始理解题目,利用各种资源搜集资料,做好前期准备工作;第二阶段:开始设计的内容,录音、采样、时域、频域分析及傅里叶变换分析,最主要的还有滤波器的设计和滤波个结果的得出。

不管是IIR还是FIR滤波器的设计都包括以下三个步骤:1)给出所需要的滤波器的技术指标;2)设计一个H(z)使其逼近所需要的技术指标;3)实现所设计的H(z)。

在这个过程中,我们进行一系列程序的编写与运行,并且还有不少的修改,最终得到了正确的结果。

第三阶段:对于实验后的结果进行总结。

说明自己的心得感受,整理出完整的报告。

课程设计任务书课程设计任务书一、基本设计原理1.语音信号的采集要求学生利用Windows下的录音机,录制一段自己的话音,时间在1 s内。

然后在Matlab软件平台下,利用函数wavread对语音信号进行采样,记住采样频率和采样点数。

通过wavread函数的使用,学生很快理解了采样频率、采样位数等概念。

2.语音信号的频谱分析要求学生首先画出语音信号的时域波形;然后对语音号进行快速傅里叶变换,得到信号的频谱特性,从而加深学生对频谱特性的理解。

其程序如下:3.设计数字滤波器和画出其频率响应给出各滤波器的性能指标:(1)低通滤波器性能指标f b=1 000 Hz,f c=1 200 Hz,A s=100 dB,A p=1 dB。

(2)高通滤波器性能指标f c=4 800 Hz,f b=5 000 Hz A s=100 dB,A p=1 dB。

(3)带通滤波器性能指标f b1=1 200 Hz,f b2=3 000 Hz,f c1=1 000 Hz,f c2=3 200 Hz,A s=100 dB,A p=1 dB。

要求学生用窗函数法和双线性变换法设计上面要求的3种滤波器。

在Matlab 中,可以利用函数fir1设计FIR滤波器,可以利用函数butte,cheby1和ellip 设计IIR滤波器;利用Matlab中的函数freqz画出各滤波器的频率响应。

程序如下:4.用滤波器对信号进行滤波要求学生用自己设计的各滤波器分别对采集的信号进行滤波,在Matlab中,FIR滤波器利用函数fftfilt对信号进行滤波,IIR滤波器利用函数filter对信号进行滤波。

5.比较滤波前后语音信号的波形及频谱在一个窗口同时画出滤波前后的波形及频谱。

其程序如下:6.回放语音信号在Matlab中,函数sound可以对声音进行回放。

其调用格式:sound(x,fs,bits);可以感觉滤波前后的声音有变化。

二、编程思想及程序代码1.显示原信号的时域波形和频谱。

[x1,fs,bits]=wavread('GDGvoice8000.wav'); figure(1);plot(x1);xlabel('时间轴');ylabel('幅值'); figure(2);freqz(x1);[x1,fs,bits]=wavread('GDGvoice8000.wav'); sound(x1,fs);2.绘制FIR高通滤波器的幅频相频曲线以及对信号滤波前后的时域波形和频谱。

fs=60000;X1=wavread('GDGvoice8000.wav'); Wp=2*pi*5000/fs;Ws=2*pi*4800/fs;Rp=1;Rs=100;Wdelta=wp-ws; N=ceil(8*pi/wdelta);wn=[wp+ws]/2;[b,a]=fir1(N,wn/pi,'high'); figure(1)freqz(b,a,512);title('FIR高通滤波器'); f2=filter(b,a,x1)figure(2);subplot(2,1,1);plot(x1);title('FIR高通滤波器滤波前的时域波形'); subplot(2,1,2);plot(f2);title('FIR高通滤波器滤波后的时域波形'); Sound(f2,44100);F0=fft(f2,1024);F=fs*(0:511)/1024;figure(3); Y2=fft(x1,1024);Subplot(2,1,1);plot(f,abs(y2(1:512)));title('FIR高通滤波器滤波前的频谱'); xlabel('频率/Hz');ylabel('幅值');subplot(2,1,2);plot(f,abs(F0(1:512)));title('FIR高通滤波器滤波后的频谱'); xlabel('频率/Hz');ylabel('幅值');3.绘制FIR带通滤波器的幅频相频曲线以及对信号滤波前后的时域波形和频谱。

fs=16000[X2]=wavread('GDGvoice8000.wav'); Ts=1/fs;r1=10;wp=2*pi*5000/fs;ws=2*pi*4800/fs;Rp=2;R1=100;wp1=2/Ts*tan(wp/2);ws1=2/Ts*tan(ws/2);[N,Wn]=cheb2ord(wp1,ws1,Rp,R1,'s'); [Z,P,K]=cheb2ap(N,R1);[Bap,Aap]=zp2tf(Z,P,K);[b,a]=lp2hp(Bap,Aap,Wn);[bz,az]=bilinear(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,x1);figure(2);subplot(2,1,1);plot(x1);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(x1,1024);subplot(2,1,1);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('幅值');三、仿真结果1.显示原信号的时域波形和频谱。

(1).原信号的时域波形图。

(2).原信号的频谱图。

2.绘制FIR高通滤波器的幅频相频曲线以及对信号滤波前后的时域波形和频谱。

(1).FIR高通滤波器的幅频相频曲线。

(2). FIR高通滤波器对信号滤波前后的时域波形。

(3).FIR高通滤波器的频谱。

3.绘制IIR高通滤波器的幅频曲线以及对信号滤波前后的时域波形和频谱。

(1). IIR高通滤波器的幅频曲线。

(2).IIR高通滤波器对信号滤波前后的时域波形。

(3).IIR高通滤波器对信号滤波前后的频谱。

四、课程设计心得这次的课程设计主要是跟随了课堂学习的内容。

我们的题目是语音信号的处理,虽然原来已经学习了信号与系统,对于这方面有了一些基础的知识,也学了数字信号处理,但是刚开始面对这个题目却也不知从何下手了。

首先一个录音就为难我们半天,在老师的指导下终于迈出了这艰难的第一步,并且得到了原信号的波形图和频谱图。

于是我们斗志高昂,继续进行下去。

没有学过MATLAB软件,我们到图书馆借了专门学习该软件的比较易懂的《应用MATLAB实现信号分析和处理》这本书。

通过大致对这本书的翻阅和有目的性的查找,我们对于这次实验中要求的很多函数有了进一步的了解。

由于实验结果主要要求就是图形了,因而对于图形函数的运用很多,最熟悉的就是figure函数了,然后还有画图函数plot,在IIR滤波器的设计中还使用了grid网格线命令,同时还有xlabel和ylabel以及title等命令,应该说是收获颇丰吧。

而对于滤波器的设计也认识不少函数,像buttap,cheb1ap等等。

在实验的时候我们做了FIR和IIR的高通,带通和低通的滤波,由于三种滤波函数其本质相近,所以最后选用了高通的来作为示例。

在做的过程中,我们分工合作,经过一系列的修改补正最终得出了图形,虽然在电脑前坐到有点头昏,但当时的那种成就感让我们快乐不已。

在做的过程中,我们组虽然没有男生的帮忙,但是自己动手更让我们感受和享受着这种做的过程,虽然结果才是最终需要的,但是能力却是通过经历来积累的,完成时的喜悦也只有亲身经历才懂。

也许以后很少再有课程设计,但是我们相信对于软件的学习和探索却是刚刚开始,我们会在未来更努力的学习,充实自己。

五、参考文献(1).程佩青。

数字信号处理教程[M]。

北京:清华大学出版社,2002。

(2).刘敏,魏玲。

Matlab通信仿真与应用[M].北京:国防工业出版社,2001。

(3).桂志国。

数字信号处理。

科学出版社,2010年。

(4).张明照,刘政波,刘斌等。

应用MATLAB实现信号分析和处理。

北京:科学出版社,2005。

(5).互联网资料。