基于matlab的语音信号录制采集和分析的程序课程方案设计书.docx
- 文档编号:27758984
- 上传时间:2023-07-04
- 格式:DOCX
- 页数:13
- 大小:140.37KB
基于matlab的语音信号录制采集和分析的程序课程方案设计书.docx
《基于matlab的语音信号录制采集和分析的程序课程方案设计书.docx》由会员分享,可在线阅读,更多相关《基于matlab的语音信号录制采集和分析的程序课程方案设计书.docx(13页珍藏版)》请在冰豆网上搜索。
基于matlab的语音信号录制采集和分析的程序课程方案设计书
第一章Matlab课程设计方案的提出1
第一节设计的主要内容及基本要求1
一主要内容1
二基本要求1
第二节设计方案1
第二章语音信号及其加噪2
第一节语音信号2
一语音信号的采集2
二语音信号的时域及频谱分析2
第二节语音信号的加噪和分析4
一语音信号的加噪4
第三章滤波器的选择8
第一节滤波器的基本概念8
一滤波器的功能8
二四种基本的滤波器9
第二节数字滤波器的基本知识9
一FIR数字滤波器9
二IIR数字滤波器10
第三节数字滤波器的选取11
心得体会12
参考文献13
附录14
第一章Matlab课程设计方案的提出
第一节设计的主要内容及基本要求
一主要内容
要求录制一段自己的语音信号后,在MATLAB软件中采集语音信号,回放语音信号并画出语音信号的时域波形和频谱图;对所采集的语音信号加入干扰噪声,对加入噪声后的信号进行播放,并画出时域和频谱分析;对比加噪声前后的时域图和频谱图,分析讨论采用什么样的滤波器进行滤除噪声。
二基本要求
学会使用MATLAB,掌握MATLAB的程序设计方法;掌握在Windows环境下语音信号的录制方法;掌握在MATLAB环境下语音信号的采集方法;用randn函数给原始信号加入高斯随机噪声;并会用MATLAB对信号进行分析和处理。
第二节设计方案
录制一段语音信号;然后,利用MATLAB中的wavread命令来读入语音信号,将它赋值给某一向量。
再将该向量看做一个普通的信号,对其进行FFT变换实现频谱分析;随后,利用随机函数randn产生噪声加入其中,对其进行频谱分析。
并用sound函数回放加噪声前后的语音。
最后,分析比较加噪声前后的语音信号的波形及频谱。
第二章语音信号及其加噪
第一节语音信号
一语音信号的采集
首先,打开电脑;在计算机中WindowsXP的操作系统中,点击开始→附件→录音机,就会启动计算机中录音机。
这时按下开始录音按钮,就会开始录音,此时对着电脑说“你好”,说完后按下停止录音按钮,录音结束。
到此,完成了自己的语音信号的录制。
录制的语音信号的后缀名为.wav。
然后将已录制好的语音信号命名为“你好”,再将其以该文件名保存在C:
\USER\Lenovo\DOCUMENTS\MATLAB中,此时本次课程设计的第一步录制一段自己的语音信号完成。
二语音信号的时域及频谱分析
在MATLAB软件平台下,利用wavread函数对语音信号进行采样,得到了声音数据变量y,同时把y的采样频率Fs=8000Hz和数据位Nbits=8Bit放进了MATLAB的工作空间。
用sound函数对语音信号进行播放,并可对语音信号进行频谱分析,在MATLAB中可以利用函数FFT对信号进行快速傅里叶变换。
函数FFT的调用格式为:
fft(x,n);
其中,x为所要进行快速傅里叶变换的语音信号,n为所要进行的傅里叶变换的点数,在本次的课程设计中我所使用的n的点数为原语音信号的长度,但也可使用1024、512等。
wavread函数的调用格式为:
[y,fs,nbits]=wavread('语音信号文件名');
sound函数的调用格式为:
sound(y,fs,nbits);
求信号的长度的函数为length(),其调用格式为:
length(y);
其中,y为所要求长度的信号。
对原语音信号的采集及回放和时域、频域的波形的程序如下:
[y,fs,nbits]=wavread('你好');%把语音信号加载入Matlab仿真软件平台
sound(y,fs,nbits);%回放语音信号
subplot(2,1,1);plot(y);title('原语音信号的时域波形');
gridon;%加网格
legend('Waveform');
xlabel('Time(s)');%标横坐标
ylabel('Amplitude');%标纵坐标
n=length(y);%求出语音信号的长度
Y=fft(y,n);%傅里叶变换
Y1=fftshift(Y);%对频谱图进行平移
subplot(2,1,2);plot(abs(Y1));title('原语音信号的频谱图');
gridon;%加网格
上述的程序是在MATLAB软件中采集并回放出原语音信号并画出其时域波形及频谱图。
在MATLAB软件中运行上述程序可得到原语音信号的时域波形和其频谱图如图2.1所示。
图2.1
由频谱图可看出,原语音信号的频率大约集中在500Hz以内,由采样定理可得
>2
=2×500=1000Hz,故重放语音后仍可较清晰地听出原语音信号,不存在声音混叠现象。
第二节语音信号的加噪和分析
一语音信号的加噪
(一)噪声的构建
在MATLAB中人为设计一噪声,在本次课程设计中利用MATLAB中的随机函数randn产生噪声。
randn函数的基本调用格式有两种:
randn(n)和randn(m,n),前者产生n×n服从标准高斯分布的随机函数矩阵,后者产生m×n的随机数矩阵。
在这里,我们选用randn(m,n)函数,应注意的是:
randn(m,n)的行和列即m、n应与原语音信号的行和列的长度保持一致。
在这里构造的随机高斯噪声为noise=0.005*randn(n,1);即产生一列n行的随机高斯噪声,n为原语音信号的长度。
构造的随机高斯噪声的程序如下所示:
[y,fs,nbits]=wavread('你好');%把语音信号加载入Matlab仿真软件平台中
n=length(y);%求出语音信号的长度
noise=0.005*randn(n,1);%randn函数产生随机的高斯噪声
sound(noise);%回放噪声信号
subplot(2,1,1);plot(noise);title('干扰噪声的时域波形');
gridon;%加网格
legend('Waveform');
xlabel('Time(s)');%标横坐标
ylabel('Amplitude');%标纵坐标
N=fft(noise,n);%傅里叶变换
N1=fftshift(N);
subplot(2,1,2);plot(abs(N1));title('干扰噪声的频谱图');
gridon;%加网格
上述程序可在MATLAB软件中回放出所构造的随机高斯噪声并画出它的时域波形及频谱图,在MATLAB软件中运行该程序可得所加的随机高斯噪声的时域波形如图2.2上所示及其频谱图如图2.2下所示。
由图2.2中的频谱图我们可以看出,所加的随机高斯噪声为高频噪声,从频谱图可知,其频率主要集中在7kHz以内。
从回放的语音中,我们也可以清楚的听到所加的随机高斯噪声。
图2.2
(二)噪声与原语音信号的叠加及叠加后时域、频谱分析
在MATLAB中把语音信号与噪声信号进行叠加,并对其进行播放,然后对加入噪声后的语音信号进行频谱分析,在MATLAB中可以利用函数FFT对信号进行快速傅里叶变换。
将原语音信号与noise叠加,调用的形式为:
s=y+noise;
其中,y为原语音信号,noise为所构造的随机高斯噪声,s即为两者的叠加后的语音信号。
程序如下:
[y,fs,nbits]=wavread('你好');%把语音信号加载入Matlab仿真软件平台
n=length(y);%求出语音信号的长度
noise=0.005*randn(n,1);%randn函数产生随机的高斯噪声
s=y+noise;%把噪声加入语音信号
sound(s,fs,nbits);%回放加入噪声后的语音信号
subplot(2,1,1);plot(s);title('加入干扰噪声后的信号时域波形');
gridon;%加网格
legend('Waveform');
xlabel('Time(s)');%标横坐标
ylabel('Amplitude');%标纵坐标
S=fft(s,n);%傅里叶变换
S1=fftshift(S);%对频谱图进行平移
subplot(2,1,2);plot(abs(S1));title('加入干扰噪声后的信号频谱图')
gridon;%加网格
上述程序是在MATLAB软件中实现在原语音信号中加入构造的随机高斯噪声并画出加入噪声后的语音信号的时域波形,回放加入噪声后的声音。
在MATLAB软件中运行该程序可得到加入噪声后的语音信号的时域波形图及频谱图如图2.3所示。
从回放的语音中我们可以清楚的听到原语音信号“你好”以及所加的噪声,从图2.3的时域波形图中可以看出噪声加入后时域波形在1400Hz内都有明显的波形;从图2.3中的频谱图可以看出,加入噪声后的语音信号的频率的范围约集中在7kHz,原语音信号在500Hz<
<7kHz有明显的噪声加上。
对比图2.1和图2.3可知,所构造的随机高斯噪声成功的叠加到了原语音信号上。
图2.3
第三章滤波器的选择
第一节滤波器的基本概念
一滤波器的功能
滤波器的功能是对输入信号进行滤波以增强所需信号部分,抑制不要的部分。
二四种基本的滤波器
四种基本滤波器为低通(LP)、高通(HP)、带通(BP)和带阻滤波器(BRP),这四种滤波器特性如下图3-1所示:
图3-1
第二节数字滤波器的基本知识
数字滤波器分为FIR数字滤波器和IIR数字滤波器两种,即有限冲激响应滤波器(FIR,FiniteImpulseResponse)滤波器和无线冲激响应(IIR,InfiniteImpulseResponse)滤波器。
一FIR数字滤波器
(一)FIR的特点:
(3-1)
不存在极点(z=0除外),系统函数|z>0|处收敛。
系统单位冲激响应在有限个n值处不为零。
结构上主要是非递归结构,没有输出到输入的反馈。
故只能用较高的阶数达到高的选择性。
FIR数字滤波器的幅频特性精度较之于IIR数字滤波器低,但是线性相位即不同频率分量的信号经过FIR数字滤波器后他们的时间差不变。
FIR数字滤波器具有系统稳定,易实现相位控制,允许设计多带通滤波器等优点。
(二)FIR结构
FIR数字滤波器的结构有四种:
横截性;级联型结构;频率采样型结构;线性相位FIR滤波器的结构。
二IIR数字滤波器
(一)IIR数字滤波器的特点
电位冲激响应h(n)是无限长的;系统函数H(z)在有限z平面上(0<|z|<∞)有极点存在;结构上存在着输出到输入的反馈,也就是结构上是递归型的。
IIR滤波器运算结构通常由延时、乘以系数和相加等基本运算组成。
(二)有限阶IIR的表达式:
(3-2)
(3-3)
(三)IIR滤波器的四种结构
IIR数字滤波器的结构也有四种:
直接I型;直接II型—典范型;级联型;并联型。
第三节数字滤波器的选取
由图2-1和图2-2可以看出,语音信号的能量集中在低频部分,所以根据滤波器的特性和功能,所选择的滤波器应该具有滤除无用的高频成分的作用,所以可以选用低通滤波器。
又由于IIR数字滤波器的输出不但取决于过去和现在的输入,还取决于过去的输出,所以,选择IIR数字滤波器比选择FIR数字滤波器要好。
通过徐靖涛.基于MATLAB的语音信号分析与处理[J].重庆科技学院学报2008,1中的2.4的阅读,可知,本语音信号的滤波选取椭圆型数字低通滤波器效果最好。
心得体会
这次的Matlab课程设计的题目是基于Matlab的语言信号录制采集和分析,刚开始布置下来题目的时候我觉得特别难,不知道该怎么做。
于是去图书馆借书,可是又找不到语音信号的书,不过,在网上搜到了老师推荐的那两本参考资料,我很高兴。
看过这两篇文章后,我开始写程序,原语音信号的采集和时域、频域分析很顺利;但是加噪声时,我遇到了困难,不知道该怎样加,按照网上的说法加,总是感觉不太对。
于是,我问了同学,王争同学热心的帮助我解决问题,可是加噪声的频谱图依然没能得到解决,她也不知道对不对,也是感觉不太对。
于是,她建议我去问老师,我也很乐意;但是第一次去找老师,老师不在,我只能等到第二天,当天晚上,我又试了试,还是得不到解决。
第二天我去问老师了,老师热情的给我讲解了我的疑惑,我很激动,于是,在搞懂了那个问题后,我赶快接着写,顺利的完成了本次的课程设计。
在这次的课程设计中,我非常感谢老师给我的帮助,也很感谢同学给我的帮助。
这次的课程设计,让我对语音信号有了更深的认识,对Matlab能更熟练地应用,对信号处理有了更直观的感受。
我学会了将录制的语音采集到Matlab中,在Matlab中回放,加噪声,应该用什么样的滤波器滤除噪声。
这些让我对自己以前所学的有了更好的体会,增加了我对信号这方面的兴趣。
参考文献
【1】徐靖涛.基于MATLAB的语音信号分析与处理[J].重庆科技学院学报2008,1
【2】张文.基于MATLAB的语音信号的滤波与实现[J].山西电子技术.2008,2
【3】黄文填,李金平.基于MATLAB的语音信号分析和滤波处理[J].北京联合大学信息学院.2009,45
【4】陈怀琛.MATLAB及在电子信息课程中的应用[M].北京:
电子工业出版社.2008.1
附录
总程序如下所示:
figure
(1);
[y,fs,nbits]=wavread('你好');%把语音信号加载入Matlab仿真软件平台
sound(y,fs,nbits);%回放语音信号
subplot(2,1,1);plot(y);title('原语音信号的时域波形');
gridon;%加网格
legend('Waveform');
xlabel('Time(s)');%标横坐标
ylabel('Amplitude');%标纵坐标
n=length(y);%求出语音信号的长度
Y=fft(y,n);%傅里叶变换
Y1=fftshift(Y);%对频谱图进行平移
f=(0:
length(y)-1)/fs;%得出频点
subplot(2,1,2);plot(f,abs(Y1));title('原语音信号的的频谱图');
gridon;%加网格
figure
(2);
[y,fs,nbits]=wavread('你好');%把语音信号加载入Matlab仿真软件平台
n=length(y);%求出语音信号的长度
noise=0.005*randn(n,1);%randn函数产生随机的高斯噪声
s=y+noise;%把噪声加入语音信号
sound(s,fs,nbits);%回放加入噪声后的语音信号
subplot(2,1,1);plot(s);title('加入干扰噪声后的信号时域波形');
gridon;%加网格
legend('Waveform');
xlabel('Time(s)');%标横坐标
ylabel('Amplitude');%标纵坐标
S=fft(s,n);%傅里叶变换
S1=fftshift(S);%对频谱图进行平移
f=(0:
length(y)-1)/fs;%得出频点
subplot(2,1,2);plot(f,abs(S1));title('加入干扰噪声后的信号频谱图')
gridon;%加网格
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 matlab 语音 信号 录制 采集 分析 程序 课程 方案设计