您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 课程设计基于MATLAB的语音信号录制采集和分析的程序设计
MATLAB课程设计说明书I摘要语音信号的采集与分析技术是一门涉及面很广的交叉科学,它的应用和发展与语音学、声音测量学、电子测量技术以及数字信号处理等学科紧密联系。该设计主要介绍语音信号的采集与分析方法,通过PC机录制自己的一段声音,运用Matlab提供的函数进行仿真分析,并画出采样后语音信号的时域波形和频谱图,对所采集的语音信号加入干扰随机高斯噪声,对加入噪声的信号进行播放,并进行时域和频谱分析;对比加噪前后的时域图和频谱图,分析讨论采用什么样的滤波器进行滤除噪声。关键词:语音信号;采集与分析;Matlab目录摘要.......................................................I1语音信号的录制............................................12语音信号的采集............................................33语音信号的分析............................................43.1语音信号时域分析.....................................43.2语音信号频域分析.....................................54语音信号的加噪处理........................................75滤噪设计分析.............................................116设计总结.................................................12参考文献...................................................13附录.......................................................14MATLAB课程设计说明书11语音信号的录制为了将原始模拟语音信号变为数字信号,必须经过采样和量化两个步骤,从而得到时间和幅度上均为离散的数字语音信号。语音信号经过预滤波和采样后,由A/D变换器变换为二址制数字码。这种防混叠滤波通常与模数转换器做在一个集成块内,因此目前来说,语音信号的数字化的质量还是有保证的。市面上购买到的普通声卡在这方面做的都很好,语音声波通过话筒输入到声卡后直接获得的是经过防混叠滤波、A/D变换、量化处理的离散的数字信号。将声卡作为对象处理采集语音信号Matlab将声卡作为对象处理,其后的一切操作都不与硬件直接相关,而是通过对该对象的操作来作用于硬件设备(声卡)。操作时首先要对声卡产生一个模拟输入对象(ai),给ai对象添加一个通道设置采样频率后,就可以启动设备对象,开始采集数据,采集完成后停止对象并删除对象。实际工作中,我们可以利用windows自带的录音机录制语音文件,图1是基于PC机的语音信号录制过程,声卡可以完成语音波形的A/D转换,获得WAVE文件,为后续的处理储备原材料。调节录音机保存界面的“更改”选项,可以存储各种格式的WAVE文件。MATLAB课程设计说明书2图1.1基于PC机的语音信号录制过程录制过程:打开电脑左下角的程序——附件——娱乐——录音机图1.2PC自带的录音机录音本设计录制自己的一段语音,内容:“郑州轻工业学院电气信息工程学院,电子信息工程”,时长6秒14,保存在C盘命名为“yuyin”格式为.WAV。Windows自带的录音机A/D转换Wav声音麦克风声卡滤波采样MATLAB课程设计说明书32语音信号的采集配置好数据采集设备的参数后,使用start命令便可启动声卡开始语音信号的采集。采集到的数据被暂时存放在PC机的内存里,理论上可采集的最大数据量是由PC机的内存容量决定的,这一点相对于一般的数据采集系统而言有较强的优势。MATLAB还可以记录采集过程中出现错误,如出错的时间、错误产生的来源以及数据采集设备的状态等信息都会被记录下来作为以后工作的参考。如图2.1所示,语音采集子系统是通过PC录音机RealtekAC’97型声卡和Matlab的数据采集工具箱实现的。其中RealtekAC’97型声卡的采样位数为16位,支持8~44.1kHz的采样速率,可以满足语音采集的硬件要求[1]。Matlab自带的数据采集工具箱里面,提供了专门用于语音采集的命令和函数。数据采集的硬件设备的内部特性对Matlab的接口完全是透明的,通过调用Matlab提供的语音采集函数和命令可以对其进行访问。而且,Matlab可以对其采集的数据进行实时的分析,也可在存储后再进行处理。图2.1语音信号采集框图话筒数据采集设备(声卡)MATLAB语音采集工具箱MATLAB课程设计说明书43语音信号的分析3.1语音信号时域分析语音信号的时域分析就是分析和提取语音信号的时域参数。进行语音分析时,最先接触到并且也是最直观的是它的时域波形。语音信号本身就是时域信号,因而时域分析是最早使用,也是应用最广泛的一种分析方法,这种方法直接利用语音信号的时域波形。时域分析通常用于最基本的参数分析及应用,如语音的分割、预处理、大分类等。这种分析方法的特点是:①表示语音信号比较直观、物理意义明确。②实现起来比较简单、运算且少。③可以得到语音的一些重要的参数。④只使用示波器等通用设备,使用较为简单等。ATLAB数据采集箱中提供的函数命令进行图像分析的函数命令:wavrecord:wavrecord利用Windows音频输入设备记录声音,其调用形式为:wavrecord(n,fs,ch)。利用Windows音频输入设备记录n个音频采样,频率为fsHz,通道数为ch。采样值返回到一个大小为n*ch的矩阵中。缺省时,fs=11025,ch=1。waveplay:waveplay利用Windows音频输出设备播放声音,其调用形为:waveplay(y,fs)。以采样频率fs向Windows音频设备发送向量信号。标准的音频采样率有:8000、11025、22050和44100Hz。wavread:wavread用于读取Microsoft的扩展名为“.wav”的声音文件。其调用形式为:y=wavread(file)。其作用是从字符串file所指的文件路径读取wave文件,将读取的采样数据送到y中。Y的取值范围:[-1,1]。sound:音频信号是以向量的形式表示声音采样的。sound函数用于MATLAB课程设计说明书5将向量转换为声音,其调用形式为:sound(y,fs),作用是向扬声器送出向量y中的音频信号(采样频率为fs)。通过Wavread和plot(x)函数即可显示图像的时域波形。图3.1原始语音信号的时域波形3.2语音信号频域分析语音信号的频域分析就是分析语音信号的频域持征。从广义上讲,语音信号的频域分析包括语音信号的频谱、功率谱、倒频谱、频谱包络分析等,而常用的频域分析方法有带通滤波器组法、傅里叶变换法、线件预测法等几种。本文介绍的是语音信号的傅里叶分析法。因为语音波是一个非平稳过程,因此适用于周期、瞬变或平稳随机信号的标准傅里叶变换不能用来直接表示语音信号,而应该用短时傅里叶变换对语音信号的频谱进行分析,相应的频谱称为“短时谱”MATLAB课程设计说明书6FFT即为快速傅氏变换,是离散傅氏变换的快速算法,它是根据离散傅氏变换的奇、偶、虚、实等特性,对离散傅立叶变换的算法进行改进获得的。在MATLAB的信号处理工具箱中函数FFT和IFFT用于快速傅立叶变换和逆变换。函数FFT用于序列快速傅立叶变换,其调用格式为y=fft(x),其中,x是序列,y是序列的FFT,x可以为一向量或矩阵,若x为一向量,y是x的FFT且和x相同长度;若x为一矩阵,则y是对矩阵的每一列向量进行FFT。如果x长度是2的幂次方,函数fft执行高速基-2FFT算法,否则fft执行一种混合基的离散傅立叶变换算法,计算速度较慢。函数FFT的另一种调用格式为y=fft(x,N),式中,x,y意义同前,N为正整数。函数执行N点的FFT,若x为向量且长度小于N,则函数将x补零至长度N;若向量x的长度大于N,则函数截短x使之长度为N;若x为矩阵,按相同方法对x进行处理。图3.2原始语音信号的频谱MATLAB课程设计说明书74语音信号的加噪处理所谓高斯噪声,是指没有任何时迟相关时间序列,它只一个参数,代表噪声的强度,也即迟滞为0的滞后自协方差,而其余滞后自协方差统统为零。标准高斯噪声:则是满足N(0,1)标准正态分布的高斯噪声。斯白噪声:如果一个噪声,它的幅度分布服从高斯分布,而它的功率谱密度又是均匀分布的,则称它为高斯白噪声。热噪声和散粒噪声是高斯白噪声。MATLAB中产生高斯白噪声非常方便,可以直接应用3个函数,一个是WGN,另一个是AWGN,还有一个randn,WGN用于产生高斯白噪声,AWGN则用于在某一信号中加入高斯白噪声,randn直接产生高斯分布序列。1.WGN:产生高斯白噪声y=wgn(m,n,p)产生一个m行n列的高斯白噪声的矩阵,p以dBW为单位指定输出噪声的强度。y=wgn(m,n,p,imp)以欧姆(Ohm)为单位指定负载阻抗。y=wgn(m,n,p,imp,state)重置RANDN的状态。在数值变量后还可附加一些标志性参数:y=wgn(…,POWERTYPE)指定p的单位。POWERTYPE可以是'dBW','dBm'或'linear'。线性强度(linearpower)以瓦特(Watt)为单位。y=wgn(…,OUTPUTTYPE)指定输出类型。OUTPUTTYPE可以是'real'或'complex'。2.AWGN:在某一信号中加入高斯白噪声y=awgn(x,SNR)在信号x中加入高斯白噪声。信噪比SNR以dB为单位。x的强度假定为0dBW。如果x是复数,就加入复噪声。y=awgn(x,SNR,SIGPOWER)如果SIGPOWER是数值,则其代表以dBW为MATLAB课程设计说明书8单位的信号强度;如果SIGPOWER为'measured',则函数将在加入噪声之前测定信号强度。y=awgn(x,SNR,SIGPOWER,STATE)重置RANDN的状态。y=awgn(…,POWERTYPE)指定SNR和SIGPOWER的单位。POWERTYPE可以是'dB'或'linear'。如果POWERTYPE是'dB',那么SNR以dB为单位,而SIGPOWER以dBW为单位。如果POWERTYPE是'linear',那么SNR作为比值来度量,而SIGPOWER以瓦特为单位。3.直接用randn函数产生高斯分布序列:无论是WGN还是AWGN函数,实际上都调用Randn函数产生的噪声。即WGN函数中调用了Randn函数,而AWGN函数调用了WGN函数。rand:rand(n):生成0到1之间的n阶随机数方阵。rand(m,n):生成0到1之间的m×n的随机数矩阵。randn:randn()命令是产生白噪声的,白噪声应该是0均值,方差为1的一组数,同rand有randn(n),randn(m,n)。x=rand(1,N)产生(0,1)区间均匀分布的长度为N的随机信号,x=randn(1,N)产生长度为N且具有零均值和单位方差的正态分布的随机信号。(可以在前面扩大相应的倍数得到不同的随机数,比如10*rand(1)得到0-10的随机数)。MATLAB课程设计说明书9图4.1高斯随机噪声图4.2加噪后的语音信号MATLAB课程设计说明书10图4.3加噪后的语音信号的频谱比较MATLAB课程设计说明书115滤噪设计分析在频域内,语音信号的频谱分量主要集中在300~3400Hz的范围内。利用这个特点,可以用一个防混叠的带通滤波器将此范围内的语音信号频率分量取出。通过该课题采集的语音信号频谱主要是500~800HZ范围。加入高斯随机噪声后该语音信号的时域波形几乎和噪声波形相同,通过回
本文标题:课程设计基于MATLAB的语音信号录制采集和分析的程序设计
链接地址:https://www.777doc.com/doc-5447119 .html