matlab音频信号处理实验报告,基于MATLAB的LPC分析_语音信号处理实验报告.doc-程序员宅基地

技术标签: matlab音频信号处理实验报告  

253b171540df25e1b84436cbe50dfc72.gif基于MATLAB的LPC分析_语音信号处理实验报告.doc

南京信息工程大学 实验(实习)报告实验(实习)名称 基于 MATLAB 的 LPC 分析 实验(实习)日期 2013.5.2 得分 _指导教师 院电子与信息工程专业电子信息工程年级 班次 姓名 学号 一、实验目的线性预测分析是最有效的语音分析技术之一,在语音编码、语音合成、语音识别和说话人识别等语音处理领域中得到了广泛的应用。语音线性预测的基本思想是一个语音信号的抽样值可以用过去若干个取样值的线性组合来逼近。通过使实际语音抽样值与线性预测抽样值的均方误差达到最小,可以确定唯一的一组线性预测系数。采用线性预测分析不仅能够得到语音信号的预测波形,而且能够提供一个非常好的声道模型。如果将语音模型看作激励源通过一个线性时不变系统产生的输出,那么可以利用LP 分析对声道参数进行估值,以少量低信息率的时变参数精确地描述语音波形及其频谱的性质。此外,LP 分析还能够对共振峰、功率谱等语音参数进行精确估计,LP 分析得到的参数可以作为语音识别的重要参数之一。由于语音是一种短时平稳信号,因此只能利用一段语音来估计模型参数。此时有两种方案一种是将长的语音序列加窗,然后对加窗语音进行 LP 分析,只要限定窗的长度就可以保证分析的短时性,这种方案称为自相关法;另一种方案不对语音加窗,而是在计算均方预测误差时限制其取和区间,这样可以导出 LP 分析的自协方差法。本实验要求掌握 LPC 原理,会利用已学的知识,编写程序估计线性预测系数以及 LPC的推演参数,并能利用所求的相关参数估计语音的端点、清浊音判断、基因周期、共振峰等。二、实验原理1 LP 分析基本原理LP 分析为线性时不变因果稳定系统 V(z)建立一个全极点模型,并利用均方误差准则,对已知的语音信号 sn进行模型参数估计。如果利用 P 个取样值来进行预测,则称为 P 阶线性预测。 假设用过去 P 个取样值的加权之和来预测信号当前取样值 ,则预测信号 为1,2,SnSnp SnSn11pka其中加权系数用 表示,称为预测系数,则预测误差为k21pkensSnsan要使预测最佳,则要使短时平均预测误差最小有32minEe40,1kkpa令 5 iEsniSk最小的 可表示成6min10,0,pka显然,误差越接近于零,线性预测的准确度在均方误差最小的意义上为最佳,由此可以计算出预测系数。通过 LPC 分析,由若干帧语音可以得到若干组 LPC 参数,每组参数形成一个描绘该帧语音特征的矢量,即 LPC 特征矢量。由 LPC 特征矢量可以进一步得到很多种派生特征矢量,例如线性预测倒谱系数、线谱对特征、部分相关系数、对数面积比等等。不同的特征矢量具有不同的特点,它们在语音编码和识别领域有着不同的应用价值。2 自相关法在最佳线性预测中,若用下式定义的时间平均最小均方准则代替3式的集合平均最小均方准则,即令7 120minNpne事实上就是短时自相关函数,因而8,Riki(9),ESnk根据平稳随机信号的自相关性质,可得10 12;0,1ikRipk 由6式,可得11 min10pkaA综上所述,可以得到如下矩阵形式12值得注意的是,自相关法在计算预测误差时,数据段的两端都需要0,1SSn加 P 个零取样值,因而可造成谱估计失真。特别是在短数据段的情况下,这一现实更为严重。另外,当预测系数量化时,有可能造成实际系统的不稳定。自相关解法主要有杜宾算法、格型算法和舒尔算法等几种高效递推算法。3 协方差法如果在最佳线性预测中,用下式定义的时间平均最小均方准则代替3式的集合平均最小均方准则,则可得到类似的方程(13) 12minNnpe可以看出,这里的数据段两端不需要添加零取样值。在理论上,协方差法计算出来的预测系数有可能造成预测误差滤波器的不稳定,但在实际上当每帧信号取样足够多时,其计算结果将与自相关法的结果很接近,因而稳定性一般是能够保证的 当然这种方法也有量化效应可能引起不稳定的缺点。协方差解法的最大优点在于不存在自相关法中两端出现很大预测误差的情况,在 N 和P 相差不大时,其参数估值比自相关法要精确的多。但是在语音信号处理时,往往取 N 在200 左右。此时,自相关法具有较大误差的段落在整个语音段中所占的比例很小,参数估值也是比较准确的。在这种情况下,协方差法误差较小的优点就不再突出,其缺乏高效递推算法的缺点成为了制约因素。所以,在语音信号处理中往往使用高效的自相关法。4 全极点声道模型将线性预测分析应用于语音信号处理,不仅是为了利用其预测功能,更因为它提供了一个非常好的声道模型。将式2所示的方程看成是滤波器在语音信号激励下的输入输出方程,则该滤波器称为预测误差滤波器,其 en是输出误差。变换到 z 域,P 阶预测误差滤波器的系统函数为(14) 1piiHzaz可以看出,如果将预测误差 en作为激励信号,使其通过预测误差滤波器的逆滤波器HZ,即011220RRPP 312nRaaRp(15) 1piiHzAZaz则 HZ的输出为语音信号 sn,也就是说,HZ在预测误差 en的激励下可以合成语音。因此,HZ被称为语音信号的全极点模型,也称为语音合成器。该模型的参数就是 P阶线性预测的预测系数 。1,2iap因为预测误差含有语音信号的基音信息,所以对于浊音,模型的激励信号源是以基音周期重复的单位脉冲;对于清音,激励信号源 en是自噪声。语音信号的全极点模型是一种很重要的声道模型,是许多应用和研究的基础。5 LPCC如果声道特性 HZ用式14所示的全极点模型表示,有(16)1pnSzHIaz式中,Sz和 Iz分别为语音信号 和激励源 的 Z 变换。对人的听觉来说,浊音是最重要nsni的语音信号。对于浊音,模型的激励信号源 en是以基音周期重复的单位脉冲,此时有。可得 的 Z 变换 Sz为1Izns(17)1pnSzaz式中, 为 P 阶线性预测系数。根据倒谱的定义,对具有最小相位特征的语,2ia音信号 ,有ns(18)1l nSzCcz式中, 为语音信号的倒谱。将式16代入式17,并对两边 求导,得nc 1z(19)11,1nnknkacacp根据上式即可由线性预测系数通过递推得到倒谱系数,将这样得到的倒谱称为线性预测倒谱系数。6 结合语音帧能量构成LPC组合参数由于人能从声音的音色、频高等各种信息中感知说话人的个性,因此可以想象,利用特征的有效组合可以得到比较稳定的识别性能。一般来说,如果组合的各参量之间相关性不大,则会更有效一些,因为它们分别反映了语音信号中的不同特征。多年来,人们对组合参数在说话人识别中的应用进行了大量研究 。实验证明,组合参数可以提高系统的识别性能。组合参数虽然可以提高系统的性能,但很显然,无论是在特征参数提取环节,还是在模型训练和模型匹配环节都使运算量有所增加。在特征参数提取环节,要计算一种以上的特征参数。在模型训练和模型匹配环节,由于组合参数特征矢量的维数较多,使运算复杂度有所增加。运算量的增加会使系统的识别速度受到影响。为使运算量问题得到较好的解决,所以可以由 LPC 参数与语音帧能量构成组合参数,能够在运算量增加不明显的情况下改进系统的性能。语音帧能量是指一帧语音信号的能量,它等于该帧语音样值的平方和。选取与语音帧能量构成组合参数主要有以下考虑1)语音帧能量是语音信号最基本的短时参数之一,它表征一帧语音信号能量的大小,是语音信号一个重要的时域特征;2)由一帧语音求出的语音帧能量是一个标量值,与其它参量构成组合参数不会使原特征矢量的维数明显增加,特征矢量的维数越少,则需要的运算复杂度越小,另外,获取语音帧能量的运算并不复杂;3)语音帧能量与 LPC 参数之间的相关性不大,它们反映的是语音信号的不同特征,应该有较好的效果。7 模型增益G模型的激励信号 表示为Gen(20) 1piensa预测误差 en如式(2) ,这样当实际的预测系数与模型系数相等时,有(21) Ge这说明激励信号正比于误差信号,其比例常数等于模型增益 G。通常假设误差信号的能量等于输入激励信号的能量,因此可以得到(22) 112200NNnmmGeE对于式中的激励信号 ,主要分为浊音和清音两种情况。其中为浊音时,考虑到此时实n际的激励信号为声门脉冲,因此可以将激励信号表示为 时的单位抽样。为了保证这个0n假设成立,要求分析的区间应该大致和语音基因周期的长度相等。当语音为清音时,我们假定激励信号 为一个零均值、单位方差的平稳白噪声过程。en采用自相关解法时,浊音的模型增益为23210pninERaG清音计算模型增益的公式和浊音相同。三、实验结果参考我们使用的原始语音为“北风”,采样频率为 11000Hz,运行程序见附录。在这里我们取第 30 帧进行观察,线性预测阶数为 12,看到图 3.1 所示的原始语音帧的波形,预测语音帧波形和它们之间预测误差的波形。图 3.2 为原始语音帧和预测语音帧的短时谱和 LPC 谱的波形0 2 4 6 8 10 12x 104-101 倒倒倒倒倒倒0 50 100 150 200 250 300-0.500.5 倒倒倒倒倒倒倒倒倒倒倒0 50 100 150 200 250 300-0.200.2 倒倒倒倒图3.1 原始语音帧、预测语音帧和预测误差的波形0 10 20 30 40 50 60 70-200-1000100倒倒/dB倒倒倒倒倒0 10 20 30 40 50 60 70050100150200倒倒/dB倒倒LPC倒图3.2 原始语音帧和预测语音帧的短时谱和LPC谱的波形这里我们可以改变线性误差的阶数来观察语音帧的短时谱和LP谱的变化情况,如图3.3。0 10 20 30 40 50 60 70-200-1000100倒倒/dB倒倒P1 50 10 20 30 40 50 60 70-200-1000100倒倒/dB倒倒P1 100 10 20 30 40 50 60 70-200-1000100倒倒/dB倒倒P1 20图3.3 预测阶数对语音帧短时谱和LPC谱的影响从图中可以看出,P 越大,LPC 谱越能反映出语音短时谱的细节部分,但 LPC 谱的光滑度随之下降。由于我们的目的只是用 LPC 谱反映声道综合效应的谱的表示式,而具体的谐波形状是通过激励谱来控制的,因此 LPC 谱只要能够体现出语音的共振峰的结构和谱包络就可以,因此从计算复杂性的角度分析,预测阶数 P 应该适中。图 3.4 是原始语音和预测误差的倒谱波形,我们可以从中计算出原始语音的基音周期。从图中看出两峰值之间的间隔为 40 点左右,基音周期为 40/110003.6ms,频率为 278Hz左右。0 50 100 150 200 250 300-2-101倒倒倒/dB倒倒倒倒倒倒倒0 50 100 150 200 250 300-2-101倒倒倒/dB倒倒倒倒倒倒图3.4 原始语音和预测误差的倒谱波形图 3.5 给出了原始语音的语谱图和预测语音的语谱图,通过比较发现,预测语音的预测效果还可以,基音频率相差无几。TimeFrequency倒倒倒倒倒倒倒0 100 200 300 400 500 600 700 800 9000204060TimeFrequency倒倒倒倒倒倒倒0 100 200 300 400 500 600 700 800 9000204060图3.5 原始语音的语谱图和预测语音的语谱图三、LPC 分析程序及实验结果MusicSource wavreadbeifeng.wav;读取 WAV 音频文件“beifeng.wav”Music_source MusicSource;N 256;Hamm hammingN; 形成一个汉明窗,长度为 256frame 请键入想要处理的帧位置 ;提示用户输入数据,提示内容为“请键入想要处理的帧位置 ” origin 是当前帧origin Music_sourceframe - 1 * N / 2 1frame - 1 * N / 2 N;Frame origin .* Hamm;短时傅里叶变换s1,f1,t1 specgramMusicSource,N,N/2,N;生成语谱图Xs1,Ys1 sizes1;用 Xs1 和 Ys1 两个变量表示语谱图向量的大小for i 1Xs1FTframe1i s1i,frame;endN1 请键入预测器阶数 ; 提示用户输入数据,提示内容为“请键入预测器阶数 ”coef,gain lpcFrame,N1; 采用莱文森 - 德宾递推进行 LPC 分析est_Frame filter0 -coef2end,1,Frame; 估计帧LPFFT_est fftest_Frame;err Frame - est_Frame; 误差 FFT_err ffterr;subplot2,1,1,plot1N,Frame,1N,est_Frame,-r;grid;title原始语音帧 vs.预测后语音帧在第 1 行生成 2*1 的坐标轴,在 1 到 256 上画出原始语音帧和预测后语音帧,显示网格,并添加标题“原始语音帧 vs.预测后语音帧”subplot2,1,2,ploterr;grid;title误差;在第 2 行生成 2*1 的坐标轴,画出 err 的图形,显示网格,并添加标题“误差”pausesubplot2,1,2,plotf,20*logabsFTframe2;grid;title短时谱 Gain solution using G2 Rn0 - sumai*Rni,i 1,2,.,PfLength1 2 * N origin,zeros1,N;Xm fftfLength,2 * N;离散傅里叶变换X Xm .* conjXm;计算 X 的模Y fftX , 2 * N;离散傅里叶变换Rk Y1 N;截取 Y 的 1 到 256 段送给 RkPART sumcoef2 N1 1 .* Rk1 N1;G sqrtsumFrame.2 - PART;A FTframe1 - FFT_est1 lengthf1 ./ FTframe1 ; 逆滤波器 AZsubplot2,1,1,plotf1,20*logabsFTframe1,f1,20*logabs1 ./ A,-r;grid;title短时谱;在第一行作出短时谱函数subplot2,1,2,plotf1,20*logabsG ./ A;grid;titleLPC 谱 ;在第二行作出 LPC 谱函数pauseplotabsifftFTframe1 ./ G ./ A;grid;titleexcitedplotf1,20*logabsFFT_est1 lengthf1 .* A / G ;grid;pause find_pitchtemp FTframe1 - FFT_est1 lengthf1; not move higher frequncepitch1 logabstemp;pLength lengthpitch1;result1 ifftpitch1,N; move higher frequncepitch1pLength - 32 pLength 0;result2 ifftpitch1,N; direct do real cepstrum with errpitch fftshiftrcepserr;预测误差倒谱origin_pitch fftshiftrcepsFrame;原始语音帧倒谱subplot2,1,1,plotorigin_pitch;grid;title原始语音帧倒谱直接调用函数;在第一行作出原始语音帧倒谱直接调用函数 subplot2,1,2,plotpitch;grid;title预测误差倒谱 直接调用函数; 在第二行作出预测误差倒谱直接调用函数pausesubplot2,1,1,plot1lengthresult1,fftshiftrealresult1;grid;title预测误差倒谱根据定义编写,没有去除高频分量; 在第一行作出预测误差倒谱 根据定义编写 ,没有去除高频分量subplot2,1,2,plot1lengthresult2,fftshiftrealresult2;grid;title预测误差倒谱根据定义编写,去除高频分量; 在第二行作出预测误差倒谱 根据定义编写 ,去除高频分量运行结果 这里取第 30 帧进行观察 预测器阶数取 12 阶按回车键按回车键按回车键按回车键

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/weixin_42545066/article/details/115944142

智能推荐

promise解决重复调用同一接口(同步)_promise.all并行调同一个接口-程序员宅基地

文章浏览阅读4.7k次。前端实现多次调用同一个接口,所有数据均成功返回后,才可继续执行下面的代码封装请求数据方法getData(param) { return new Promise((resolve, reject) => { this.$axios .get(`/xx/xx/xxpath/${param}`) .then(res => { let content = res.data reso_promise.all并行调同一个接口

socket编程种名字与地址转换函数_getservbyname是可重入函数吗-程序员宅基地

文章浏览阅读274次。参考:《UNIX 网络编程 · 卷1 : 套接字联网API》之前都是使用数值地址来表示主机(比如:127.0.0.1),用数值端口号来标识服务器(比如:6379)。但是有时候最好使用名字而不是数值:名字比较容易记住,数值地址容易变动,而名字地址保持不变;随着 IPv6 上转移,数值地址变得很长,手工键入数值容易出错。之后将有一系列函数用于名字、数值、端口之间的转换。gethostbyname & gethostbyaddr 函数gethostbyname 函数查找主机名字最基本的函数时 g_getservbyname是可重入函数吗

第一章 Java概述_第 1章java me的概述-程序员宅基地

文章浏览阅读436次。JavaSE结构•Java概述•Java编程基础•面向对象编程•异常处理•API常用类•多线程•容器类•I/O•网络编程•注解1 Java概述结构•1.1 软件编程常识•1.2 Java语言概述•1.3 Java体系结构•1.4 Java语言的跨平台特性•1.5 搭建Java程序的开发环境•1.6 Java程序开发体验_第 1章java me的概述

CSS 选取第几个标签元素_css 第几个几个div-程序员宅基地

文章浏览阅读1w次,点赞6次,收藏11次。在前端开发中,我们可能会碰到这样的需求:想让列表中的第一个部分显示不同的样式 ,想让列表中的偶数部分显示不同的背景颜色,想让列表中的最后一部分样式不一样……这样的需求,我们怎样来实现?其实,如果前面文件是php开发的,可以通过php的循环语句+判断语句+css样式来实现。但是,如果是静态代码,php就无法用了。这时,我们还可以通过CSS来实现,CSS给我们提供了几个非常有用的样式参数:first-..._css 第几个几个div

固定资产管理系统的打造-程序员宅基地

文章浏览阅读106次。固定资产管理总体分为两个部分:固定资产管理财务帐部分,固定资产管理实物帐部分。前者偏重价值管理,后者偏重实物管理,前者一般由财务部门负责,后者一般由行政部门负责。两部分信息又是紧密衔接相辅相成的,通过信息系统的..._crv管理系统

SAP MM 物料主数据MRP2 视图Rounding Value字段-程序员宅基地

文章浏览阅读639次。SAP MM 物料主数据MRP2 视图Rounding Value字段如下物料号,MRP2视图中,维护了rounding value字段值为50。MRP type..._sap mpr2视图

随便推点

单片机入门资料,按键消抖方式,按键怎么消抖_单片机按键消抖-程序员宅基地

文章浏览阅读1.2w次,点赞19次,收藏108次。1.什么是按键消我们先来看一下按键按下去的波形图1.按键消抖原理我们可以看到当按键按下的那一时刻和松开的时候有类似于锯齿的形状那就是按键抖动,这个抖动不是我们人为能控制得了的,所以我们只能对进行硬件消抖或者进行软件消抖本期我们讲解软件消抖.**上图中我们可以看到理想波形和实际波形有很大的区别,区别在于实际波形在按键按下的那一刻前后有20毫秒的抖动,我们按键消抖的目的呢就是把抖动忽略掉只要中间的稳定闭合区域.**## 方法一延时消抖法可以用延时的方式跳过抖动的区域优缺点:优点._单片机按键消抖

Image2Lcd图片取模软件-程序员宅基地

文章浏览阅读3.7w次,点赞73次,收藏265次。image2lcd是一款非常简单使用的图片转换成LCD图像数据的图片转换软件。它能够将各种形式来源的图片转换成特定的数据格式以用来匹配单片机系统所需要的显示数据格式。在输入方面,它支持JPG、BMP、EMF、WBMP、GIF、ICO等多种格式图片的输入,输出的数据拥有二进制类型、WBMP格式、C语言数组类型和标准的BMP格式等多种类型。同时它还能将图象的数据扫描方式、亮度、对比度、灰度(颜色数)以及图像数据排列方式等等进行调节。image2lcd v3.2破解版image2lcd是一款非常简单使_image2lcd

IOS里的TaggedPointer[NSNumber篇]_nsnumber的tagged pointer-程序员宅基地

文章浏览阅读1.9k次。转自:http://www.infoq.com/cn/articles/deep-understanding-of-tagged-pointer/前言在2013年9月,苹果推出了iPhone5s,与此同时,iPhone5s配备了首个采用64位架构的A7双核处理器,为了节省内存和提高执行效率,苹果提出了Tagged Pointer的概念。对于64位程序,引入Tagged Po_nsnumber的tagged pointer

BUUCTF_2.RIP覆盖一下_buuctf rip-程序员宅基地

文章浏览阅读3.7k次。解题思路1. 查看文件信息,安全机制2. 代码审计3. 分析漏洞点4. 编写EXP1.基本信息$checksec ./文件名2.代码审计不管在简单题都一定要IDA查看一下伪代码(IDA做好是7.0以上的版本)首先查看敏感字符串(Ctrl+1)1.gets从标准输入设备读字符串函数,其可以无限读取,不会判断上限,以回车结束读取,所以应该确保buffer的空间足够大,以便在执..._buuctf rip

curl_init()和curl_multi_init()多线程的速度比较_curl_multi_init c++-程序员宅基地

文章浏览阅读7k次。php中curl_init()的作用很大,尤其是在抓取网页内容或文件信息的时候,例如之前文章curl获得header检测GZip压缩的源代码就介绍到curl_init()的强大。curl_init()处理事物是单线程模式,如果需要对事务处理走多线程模式,那么php里提供了一个函数curl_multi_init()给我们,这就是多线程模式处理事务的函数。curl_init()与cur_curl_multi_init c++

execve系统调用_execve系统调用寄存器参数-程序员宅基地

文章浏览阅读2.6k次。sys_execve()在真正的开始执行系统调用函数之前,系统调用服务程序已经将一些系统调用的函数的参数传递给了相应的寄存器,比如这里的ebx,ecx,edx都分别保存了系统调用的参数,ebx保存的是第一个参数,依次类推(当然最多传递的参数个数不能大于5个),首先这个函数通过ebx获取需要执行的文件的绝对路径,他通过这样一个函数实现获取到文件名之后他就会调用do_execve();_execve系统调用寄存器参数

推荐文章

热门文章

相关标签