基于+MATLAB+的语音信号分析与处理的课程设计.docx

上传人:b****7 文档编号:10545255 上传时间:2023-02-21 格式:DOCX 页数:17 大小:94.99KB
下载 相关 举报
基于+MATLAB+的语音信号分析与处理的课程设计.docx_第1页
第1页 / 共17页
基于+MATLAB+的语音信号分析与处理的课程设计.docx_第2页
第2页 / 共17页
基于+MATLAB+的语音信号分析与处理的课程设计.docx_第3页
第3页 / 共17页
基于+MATLAB+的语音信号分析与处理的课程设计.docx_第4页
第4页 / 共17页
基于+MATLAB+的语音信号分析与处理的课程设计.docx_第5页
第5页 / 共17页
点击查看更多>>
下载资源
资源描述

基于+MATLAB+的语音信号分析与处理的课程设计.docx

《基于+MATLAB+的语音信号分析与处理的课程设计.docx》由会员分享,可在线阅读,更多相关《基于+MATLAB+的语音信号分析与处理的课程设计.docx(17页珍藏版)》请在冰豆网上搜索。

基于+MATLAB+的语音信号分析与处理的课程设计.docx

基于+MATLAB+的语音信号分析与处理的课程设计

目录

1.课程设计目的………………………………………………………………

(1)

2.课程设计基本要求……………………………………………...………….

(1)

3.课程设计内容………………………………………..……………………..

(2)

4.课程设计实现……………………………………………………..…..……………(3)

(1)语音信号的采集……………………………………………………..(5)

(2)语音信号的频谱分析………………………………………………..(6)

(3)设计滤波器和画出频率响应………………………………………..(6)

(4)用滤波器对信号进行滤波…………………………………………..(9)

(5)比较滤波前后语音信号的波形及其频谱…………………………..(9)

(6)回放语音信号………………………………………………………..(11)

(7)设计系统界面………………………………………………………..(13)

5、心得体会……………………………………………..……………………..(14)

6、参考文献…………………………………….……………………………..(14)

基于MATLAB的语音信号分析与处理的课程设计

1.课程设计目的

综合运用数字信号处理的理论知识进行频谱分析和滤波器设计,通过理论推导得出相应结论,再利用MATLAB作为编程工具进行计算机实现,从而加深对所学知识的理解,建立概念。

1.学会MATLAB的使用,掌握MATLAB的程序设计方法;

2.掌握在Windows环境下语音信号采集的方法;

3.掌握数字信号处理的基本概念、基本理论和基本方法;

4.掌握MATLAB设计FIR和IIR数字滤波器的方法;

5.学会用MATLAB对信号进行分析和处理。

2.课程设计基本要求

①学会MATLAB的使用,掌握MATLAB的程序设计方法。

②掌握在Windows环境下语音信号采集的方法。

③掌握数字信号处理的基本概念、基本理论和基本方法。

④掌握MATLAB设计FIR和IIR数字滤波器的方法。

⑤学会用MATLAB对信号进行分析和处理。

主要实验仪器及材料

微型计算机、Matlab6.5教学版、TC编程环境。

3.课程设计内容

录制一段自己的语音信号,并对录制的信号进行采样;画出采样后语音信号的时域波形和频谱图;给定滤波器的性能指标,采用窗函数法或双线性变换设计滤波器,并画出滤波器的频率响应;然后用自己设计的滤波器对采集的语音信号进行滤波,画出滤波后信号的时域波形和频谱,并对滤波前后的信号进行对比,分析信号的变化;回放语音信号;最后,用MATLAB设计一信号处理系统界面。

要求利用windows下的录音机(开始—程序—附件—娱乐—录音机,文件—属性—立即转换—8000KHz,8位,单声道)或其他软件,录制一段自己的话音,时间控制在1秒左右。

然后在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中。

语音信号的频谱分析

要求首先画出语音信号的时域波形;然后对语音信号进行频谱分析,在MATLAB中,可以利用函数fft对信号进行快速付立叶变换,得到信号的频谱特性;从而加深对频谱特性的理解。

设计数字滤波器和画出频率响应

根据语音信号的特点给出有关滤波器的性能指标:

1)低通滤波器性能指标,fp=1000Hz,fc=1200Hz,As=100dB,Ap=1dB;2)高通滤波器性能指标,fc=2800Hz,fp=3000HzAs=100dB,Ap=1dB;3)带通滤波器性能指标,fp1=1200Hz,fp2=3000Hz,fc1=1000Hz,fc2=3200Hz,As=100dB,Ap=1dB。

要求学生首先用窗函数法设计上面要求的三种滤波器,在MATLAB中,可以利用函数fir1设计FIR滤波器,然后在用双线性变换法设计上面要求的三种滤波器;之后再利用函数butter和cheby1设计上面要求的三种IIR滤波器。

最后,利用MATLAB中的函数freqz画出各滤波器的频率响应。

用滤波器对信号进行滤波

比较FIR和IIR两种滤波器的性能,然后用性能好的各滤波器分别对采集的信号进行滤波,在MATLAB中,FIR滤波器利用函数fftfilt对信号进行滤波,IIR滤波器利用函数filter对信号进行滤波。

比较滤波前后语音信号的波形及频谱

要求在一个窗口同时画出滤波前后的波形及频谱。

回放语音信号

在MATLAB中,函数sound可以对声音进行回放。

其调用格式:

sound(x,fs,bits);

可以感觉滤波前后的声音有变化

关于用MATLAB设计对信号进行频谱分析和滤波处理的程序

程序:

%写上标题

%设计低通滤波器:

[N,Wc]=buttord()

%估算得到Butterworth低通滤波器的最小阶数N和3dB截止频率Wc

[a,b]=butter(N,Wc);%设计Butterworth低通滤波器

[h,f]=freqz();%求数字低通滤波器的频率响应

figure

(2);%打开窗口2

subplot(221);%图形显示分割窗口

plot(f,abs(h));%绘制Butterworth低通滤波器的幅频响应图

title(巴氏低通滤波器'');

grid;%绘制带网格的图像

sf=filter(a,b,s);%叠加函数S经过低通滤波器以后的新函数

subplot(222);

plot(t,sf);%绘制叠加函数S经过低通滤波器以后的时域图形

xlabel('时间(seconds)');

ylabel('时间按幅度');

SF=fft(sf,256);%对叠加函数S经过低通滤波器以后的新函数进行256点的基—2快速傅立叶变换

w=%新信号角频率

subplot(223);

plot());%绘制叠加函数S经过低通滤波器以后的频谱图

title('低通滤波后的频谱图');

%设计高通滤波器

[N,Wc]=buttord()

%估算得到Butterworth高通滤波器的最小阶数N和3dB截止频率Wc

[a,b]=butter(N,Wc,'high');%设计Butterworth高通滤波器

[h,f]=freqz();%求数字高通滤波器的频率响应

figure(3);

subplot(221);

plot());%绘制Butterworth高通滤波器的幅频响应图

title('巴氏高通滤波器');

grid;%绘制带网格的图像

sf=filter();%叠加函数S经过高通滤波器以后的新函数

subplot(222);

plot(t,sf);;%绘制叠加函数S经过高通滤波器以后的时域图形

xlabel('Time(seconds)');

ylabel('Timewaveform');

w;%新信号角频率

subplot(223);

plot());%绘制叠加函数S经过高通滤波器以后的频谱图

title('高通滤波后的频谱图');

%设计带通滤波器

[N,Wc]=buttord([)

%估算得到Butterworth带通滤波器的最小阶数N和3dB截止频率Wc

[a,b]=butter(N,Wc);%设计Butterworth带通滤波器

[h,f]=freqz();%求数字带通滤波器的频率响应

figure(4);

subplot(221);

plot(f,abs(h));%绘制Butterworth带通滤波器的幅频响应图

title('butterbandpassfilter');

grid;%绘制带网格的图像

sf=filter(a,b,s);%叠加函数S经过带通滤波器以后的新函数

subplot(222);

plot(t,sf);%绘制叠加函数S经过带通滤波器以后的时域图形

xlabel('Time(seconds)');

ylabel('Timewaveform');

SF=fft();%对叠加函数S经过带通滤波器以后的新函数进行256点的基—2快速傅立叶变换

w=(%新信号角频率

subplot(223);

plot('));%绘制叠加函数S经过带通滤波器以后的频谱图

title('带通滤波后的频谱图');

 

4.课程设计实现

(1)语音信号的采集

选取一段语音信号,然后在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中。

对语音信号ermiao.wav进行采样其程序如下:

[y,fs,nbits]=wavread(‘ermiao’)

>>

……

fs=

44100

nbits=

16

y=wavread(file,[20000,65000])

>>

 

(2)语音信号的频谱分析

首先画出语音信号的时域波形,然后对语音信号进行频谱分析。

在matlab中利用fft对信号进行快速傅里叶变换,得到信号的频谱特性。

其程序如下:

[y,fs,nbits]=wavread(‘ermiao’,[20000,65000]);

sound(y,fs,bits);

Y=fft(y,4096);

subplot(211);plot(y);title(‘原始信号波形’);

subplot(212);plot(abs(Y));title(‘原始信号频谱’);

程序结果如下图:

 

(3)设计滤波器和画出频率响应

根据语音信号的特点给出有关滤波器的新能指标:

1低通滤波器的性能指标:

fp=1000Hz,fc=1200Hz,As=100dB,Ap=1dB;

2高通滤波器的性能指标:

fp=4800Hz,fc=5000Hz,As=100dB,Ap=1dB;

3带通滤波器的性能指标:

fp1=1200Hz,fp2=3000hZ,fc1=1000Hz,fc2=3200Hz,As=100dB,Ap=1dB;

 

低通

用窗函数设计低通滤波器的程序如下:

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);

程序运行结果如下图所示:

高通

高通滤波器的程序如下:

ws1=4800;

wp1=5000;

wc=22050;

wp=wp1/wc;

ws=ws1/wc;

[N,Wn]=buttord(wp,ws,1,100);

[b,a]=butter(N,Wn,'high')

freqz(b,a,521,10000)

 

程序运行结果如下图所示:

 

带通

设计带通滤波器的程序如下:

wp1=[12003000];

ws1=[10003200];

wx=11025;

wp=wp1/wc;

ws=ws1/wc;

[n,Wn]=cheb1ord(wp,ws,1,100')

[b,a]=cheby1(n,1,Wn);

freqz(b,a,512,1000)

程序运行结果如下图所示:

n=

24

Wn=

0.05440.1361

 

(4)用滤波器对信号进行滤波

比较两种滤波器的性能,然后用性能较好的滤波器对采集的信号进行滤波。

在MATLAB中,FIR咯其利用函数fftfilt对信号进行滤波,IIR滤波器利用函数filter对信号进行滤波。

 

(5)比较滤波前后语音信号的波形及其频谱

要求在一个窗口同时画出滤波前后的波形及其频谱,

FIR滤波:

其程序如下:

x=fftfilt(b,a,y);

X=fft(x,4096);

subplot(221);plot(y);title('原始信号波形');

subplot(222);plot(abs(Y));title('原始信号频谱');

subplot(223);plot(x);title('滤波后信号的波形');

subplot(224);plot(abs(X));title('滤波后信号的频谱');

 

运行结果如下:

 

IIR滤波:

其程序如下:

x=filter(b,a,y);

X=fft(x,4096);

subplot(221);plot(y);title('原始信号波形');

subplot(222);plot(abs(Y));title('原始信号频谱');

subplot(223);plot(x);title('滤波后信号的波形');

subplot(224);plot(abs(X));title('滤波后信号的频谱');

运行结果如下:

(6)回放语音信号

在MATLAB中,函数sound可以对声音进行回放。

其调用格式为:

Sound(x,fs,bits)

可以感觉滤波前后的声音变换。

 

(7)设计系统界面

系统界面-低通滤波器-滤波后(运行结果):

 

5、心得体会

这次课程设计历时一个星期,可以说是苦多于甜,但是可以学的到很多很多的东西,同时不仅可以巩固以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。

通过这次设计,进一步加深了对数字信号处理的了解,让我对它有了更加浓厚的兴趣。

特别是当每次编写调试成功时,心里特别的开心。

但是在编写程序时,遇到了不少问题,特别是程序语法,总是有错误,在细心的检查下,终于找出了错误和警告,排除困难后,程序编译就通过了,心里终于舒了一口气。

通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。

在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固。

总的来说,这次课程设计还是比较成功的,在设计中遇到了很多问题,最后在老师的辛勤的指导下,终于游逆而解,有点小小的成就感,终于觉得平时所学的知识有了实用的价值,达到了理论与实际相结合的目的,不仅学到了不少知识,而且锻炼了自己的能力,使自己对以后的路有了更加清楚的认识,同时,对未来有了更多的信心。

 

6、参考文献

1《数字信号处理》程佩青清华大学出版社

2《数字信号处理实践教程》杨述斌李永全华中科技大学出版社

3《MATLAB实用教程》郑阿奇电子工业出版社

4《数字信号处理》(第二版)丁玉美西安电子科技大学出版社

5《数字信号处理技术及应用》吴湘美中国铁道出版社

6《数字信号处理原理及实现》吴销扬东南大学出版社

7《MATLAB系统分析与设计》李博函西安电子科技大学出版社

8《数字信号处理》姚天任清华大学出版社

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 哲学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1