基于+MATLAB+的语音信号分析与处理的课程设计.docx
《基于+MATLAB+的语音信号分析与处理的课程设计.docx》由会员分享,可在线阅读,更多相关《基于+MATLAB+的语音信号分析与处理的课程设计.docx(17页珍藏版)》请在冰豆网上搜索。
![基于+MATLAB+的语音信号分析与处理的课程设计.docx](https://file1.bdocx.com/fileroot1/2023-2/21/9fb17fd0-0518-4868-8016-82b5f6dcdd24/9fb17fd0-0518-4868-8016-82b5f6dcdd241.gif)
基于+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《数字信号处理》姚天任清华大学出版社