基于基音周期模型的语音识别毕业设计论文.doc

上传人:土8路 文档编号:10341375 上传时间:2021-05-10 格式:DOC 页数:43 大小:1.09MB
返回 下载 相关 举报
基于基音周期模型的语音识别毕业设计论文.doc_第1页
第1页 / 共43页
基于基音周期模型的语音识别毕业设计论文.doc_第2页
第2页 / 共43页
基于基音周期模型的语音识别毕业设计论文.doc_第3页
第3页 / 共43页
基于基音周期模型的语音识别毕业设计论文.doc_第4页
第4页 / 共43页
基于基音周期模型的语音识别毕业设计论文.doc_第5页
第5页 / 共43页
点击查看更多>>
资源描述

《基于基音周期模型的语音识别毕业设计论文.doc》由会员分享,可在线阅读,更多相关《基于基音周期模型的语音识别毕业设计论文.doc(43页珍藏版)》请在三一文库上搜索。

1、基于基音周期模型的语音识别摘要 基音周期是表征语音信号本质特征的参数,属于语音分析的范畴,只有准确分析并且提取出语音信号的特征参数,才能够利用这些参数进行语音识别处理。语音识别率的高低,都依赖于对语音信号分析的准确性和精确性,因此基音周期的研究在语音信号的处理应用中具有十分重要的作用。本论文通过两种算法在Matlab上实现基音周期的检测,分别是短时自相关函数法和短时平均幅度差函数法。通过实验得到的基音周期结果的分析来识别不同的人的语音信号。 论文首先介绍了语音基音检测算法在语音识别方面的研究背景极其重要意义。其次对现有的基音检测算法进行了归纳和总结,并详细的介绍本文将用的两种基本基音检测算法的

2、基本原理及实现。最后在Matlab上对语音信号进行基音周期的检测。本设计为语音信号的基音周期检测,采集语音信号,对语音信号进行处理,区分清音浊音,并通过对采样值进行滤波、分帧、求短时自相关函数,得到浊音的基音周期。关键词:预处理,基音检测,自相关函数法,平均幅度差函数法,基音轨迹 ,语音识别Abstract pitch is characterization parameters of speech signal characteristics, belongs to the category of speech analysis, only the accurate analysis and

3、 extract the characteristic parameters of speech signal can use these parameters to speech recognition processing. voice recognition rate of high and low, are dependent on the accuracy of the analysis of speech signal and accuracy, so the pitch period of the study on speech signal processing plays a

4、n important role in application.in this paper, through the two algorithm in Matlab pitch period detection, respectively is short-time autocorrelation method and short time average magnitude difference function method. Pitch period is obtained by the experiment results of speech signal analysis to id

5、entify the different people. The curriculum design of pitch detection of speech signals, speech signal, the speech signal processing, distinguish between the voiced and unvoiced speech has different samples values in the filtering, framing, asks the short-time autocorrelation function, have voiced s

6、ound pitch period. The thesis first introduces the research background of speech pitch detection algorithm is very important. Next to the existing algorithm for pitch detection are summarized, and a detailed introduction to this article will use the two kinds of basic pitch detection algorithm is th

7、e basic principle and realization. Finally in Matlab on speech signal pitch period detection.Keywords: pretreatment,pitch detection ,autocorrelation function; the average magnitude difference function method; pitch contrail,Speech recognition 目 录摘要IAbstractII1 绪论11.1引言11.2基音周期检测对语音识别的意义21.3基音周期检测现状3

8、1.4论文的结构安排42 基音检测常用的算法52.1引言52.2 常用的基音检测算法及其原理52.2.1 自相关函数法52.2.2 平均幅度差函数法92.3 本章小结113 基于Matlab基音周期的检测123.1 语音文件的录制与读入123.2 语音信号的采样和分帧133.3 语音信号基音周期的检测153.3.1 短时自相关函数法检测基音周期153.3.2 短时平均幅度差函数法检测基音周期163.4 基音周期检测的后处理183.5 滤波后的基音周期检测223.6 本章小结254 语音识别结果分析265 展望与应用30附录33致 谢38 1 绪论1.1引言 通过语言相互传递信息是人类最重要的基

9、本功能之一。语言是人类特有的功能,它是创造和记载几千年人类文明史的根本手段,没有语言就没有今天的人类文明。同时语言又属于声学范畴,是相互传递信息最重要的手段,是人类最重要,最有效,最常用和最方便的交换信息的形式。语音中除了包含实际发音内容的语音信息外,还包括发音者是谁及喜怒哀乐的各种信息。语音识别技术是一项集声学,语音学,计算机,信息处理,人工智能计算机接口的范畴。现在的电脑网络技术的普及和完善,对于语音信号处理技术发挥着越来越重要的作用。语音识技术是用来设计一种会听话的计算机,只要对着麦克风讲话,便可以指挥计算机动作,也就是要实现“芝麻开门”声控计算机的梦想,当然现在这已经不是梦想。语音信号

10、处理的一系列技术及其应用已经成为信息社会中不可或缺的组成部分,促进了信息社会的发展。语音信号中的情感信息是一种很重要的信息资源,它是人们在感知事物时的一种独特的信息,就比如,虽然是同样的语音内容,不同的人就会表现出不同的情感,也会有不用的意思。在听别人说话时,不仅要听还要看,这些语音特征在研究时很重要的。语音信号处理是研究用数字信号处理技术对语音信号进行处理的一门学科,它是一门新兴的学科,同时又是综合性的多学科领域和涉及面很广的交叉学科,其中包括语音识别只是其中的一个分支。但其前提和基础是对语音信号的分析,语音识别率的高低取决于对语音信号分析的准确性和精度。只有将语音信号分析成其本质的特性参数

11、,才能建立用于识别的模板或知识库。语音信号处理和认知科学、心理学、语言学、计算机科学、模式识别和人工智能等学科联系紧密。 基音周期检测也称为基频检测(Pitch Detection) ,它的目标是找出和声带振动频率完全一致的基音周期变化轨迹曲线,或者是尽量相吻合的轨迹曲线。基音频率的检测和共估值在语音编码,语音合成和语音识别中有着广泛的应用。它的准确性及实时性对系统起着非常关键的作用,影响着整个系统的性能。因为清音信号没有周期性,所以就将浊音信号的周期称为基音周期, 它是声带振动频率的倒数。基音检测是语音处理中的一项重要技术之一, 也是语音处理中最困难的工作之一,而且是语音处理领域最具挑战的任

12、务之一。着眼于基音的检测方法,开展了一下三个方面的研究:1)稳定并提取准周期性信号的周期性方法;2)因周期混乱,采取基音提取误差补偿的方法;3)消除声道(共振峰)影响的方法。在基音提取时,容易错误的提取真正基频两倍的频率(倍基音)和基频一半的频率(半基音),至于产生哪种错误随抽取方法而变化,本论文中会介绍两种比较好的算法来进行基音检测。 要准确地提取语音信号的特征参数,对语音信号的处理分析很重要。因此,表征语音特征参数的获取,是利用它们进行准确语音识别的关键。在这些参数中,基音周期的提取显得更重要些,其提取的准确与否直接影响到语音识别是否真实再现原始语音信号的频谱。1.2基音周期检测对语音识别

13、的意义基音周期是语音信号最重要的参数之一,它描述了语音激励源的一个重要特征。基音周期是指发浊音时声带震动所引起的周期运动时间间隔。语音信号是十分复杂的非平稳信号,它不仅包括语义信息,还有个人特征信息,对于语音信号特征参数的研究是语音识别的基础。特征参数应能完全,准确地表达语音信号,那么特征参数也应能完全,准确地表达语音信号所携带的全部信息。实验语音学给出的语音信号的特征参数本质上讲是客观,合理的,存在的问题是不够完全。仅对元音的特征进行了深入的研究,辅音的领域就比较薄弱,最难的元辅音的过渡就更是空白,但偏偏这一部分所含的信息量大,最难处理的。准确可靠的对基音周期进行检测将直接影响整个语音处理系

14、统的性能。声带的声学功能是为语音提供主要的激励源,由声带的振动产生声音,是形成声音的基本声源。根据声带是否震动可以将语音信号分为清音跟浊音两种。语音由声带震动或不经声带震动来产生,其中由声带震动产生的音统称为浊音,而不由声带震动产生的音统称为清音。携带者语言中大部分的能量,浊音在时域上呈现出明显的周期性。发浊音时,气流通过声门使声带产生张弛震荡式振动,产生准周期的激励脉冲串。这种声带振动的频率称为基音频率,相应的周期就成为基音周期。在基音检测的方法中,对每帧语音信号只进行一次清浊判决,若判决为浊音,则以基音周期间隔的脉冲序列作为该帧的激励信号;若为清音,则以随机噪音作为该帧的激励信号,实际中,

15、清浊信号的过渡段是很难区分的,且激励信号也常常含有类噪音成分,很难以帧加以区分。基音周期与先天个人的声带条件(比如声带的厚薄,韧性等)还有后天的个人说话习惯都有关系,在很大程度上反应了个人的语音特征。语音信号还是随着一些因素在变化的,男人声音低,就基音频率低,女基音频率还跟随着人的性别、年龄不同而有所不同。一般来说,男性说话者的基音频率较低,大部分在70200Hz的范围内,而女性说话者和小孩的基音频率相对较高,在200450Hz之间。基音周期的估计称谓基音检测,基音检测的最终目的是为了找出和声带振动频率完全一致或尽可能相吻合的轨迹曲线。基音是指发浊音时声带震动所引起的周期性,基音周期是指声带震

16、动频率的倒数。基音周期信息的应用很广发,如:语音识别,说话人识别,语音分析与综合以及低码率语音编码,发音系统疾病的诊断,听觉残障者的语言指导等。汉语是一门讲声调的语言,基音周期的变化恰好就是声调,它携带的信息的辨别作用很重要,具有区别功能,声调对于汉语语音的理解极为重要。在使用汉语进行谈话时,我们可以说话人的语调来了解其中的意思,也可以是用元音和辅音来辨识说话人的意思,但是,由于汉语中常常会出现多音字,就是一个字它有不同的读音和不同的意义,所以,能够准确并且可靠地进行基音周期检测对汉语语音信号的处理相当重要,同时对于语音识别有十分重要的意义。1.3基音周期检测现状 自从进行语音信号分析研究以来

17、,基音检测一直是一个重点研究的课题。基音周期是声带震动频率F0的倒数,对于语音产生的数字模型中激励源来说,也是一个重要参数。虽然目前基音检测的方法有很多种,但是这些方法都有其局限性。到目前为止仍然没有一种基音检测方法可以适用于不同的说话人、不同的要求和环境,究其原因,可归纳为如下5个方面。1语音信号本身是变化的,所以研究起来就十分复杂,声门激励的波形并不是一个完全周期的序列,在语音的开头和结尾部分并不具有规则的声带振动的周期性,所以在划分清浊音的过渡帧是,是很难去判定的,到底是该归类到周期性的还是归类到非周期性的。所以也就无法准确地估计出基音周期。2.如何从语音信号中消除掉声道带来的影响,或者

18、怎样直接去除只和声带震动有关的音源信息,这些都并非易事。就声道共振峰来说,有时会严重影响音源谐波结构。3在浊音语音段很难对每个基音周期的开始和结束位置进行精确的判断,一方面因为语音信号本身是准周期的。另一方面因为语音信号的波形受共振峰、噪音等因素的影响。4实际情况下,说话的声音中通常都会夹杂噪声,消除噪音对基音检测所产生的很大影响是很关键的。5基音频率变化范围有些大,从最低的声频到最高的声频,中间相差大概3个倍频程,所以研究起基音检测还是相当困难的。 国内外众多学者对如何准确地从语音波形中提取出基音周期作出了不懈的努力,提出了多种有效的基音周期检测方法。我国基音检测方面的研究起步要比国外发达国

19、家晚一点,但是进步很大,特别是对汉语的基音检测取得成果尤为突出。目前的基音检测算法大致可分为两大类:非基于事件检测方法和基于事件检测方法,这里的事件是指声门闭合。非基于事件的检测方法主要有:自相关函数法、平均幅度差函数法,倒谱法,以及在以上算法基础上的一些改进算法。语音信号是典型的时变、非平稳信号,但是,由于语音的形成过程是与发音器官的运动密切相关的,而这种物理运动要比声音振动速度要缓慢得多,因此语音信号常常被假定为短时平稳的,即在短时间内,其频谱特性和某些物理特征参量可近似地看作是不变的,非基于事件的检测方法正是利用语音信号短时平稳性这一特点,先将语音信号分为长度一定的语音帧,然后对每一帧的

20、语音求基音周期。相比于基于事件的基音周期检测方法来说,它的优点主要是算法简单,而且运算量小。但从本质上讲这些方法是无法检测帧内基音周期的非平稳变化,所以这种检测方法的精度不够高。基于事件的检测方法是通过定位声门闭合时刻来对基音周期进行估计,而不是对语音信号进行短时平稳假设,主要有小波变换方法和Hilbert-Huang变换方法这两种。在时域和频域上这两种方法而且具有非常良好的局部特性,能够跟踪基音周期的变化,还可以将基音周期微小的变化检测出来,所以检测精度很高,但是运算量比较大. 1.4论文的结构安排与论文的主要内容相对应,全文具体章节安排如下:第1章:先简述语音信号处理的相关概念,再讲基音周

21、期的概念,基音检测背景研究的意义以及基音检测现状进行说明,最后对论文的结构进行安排。第2章:详细介绍两种常用的基音检测算法及其原理,并进行优缺点分析。第3章:利用matlab,对基音周期检测的自相关函数法和平均幅度差函数法进行实现,对语音信号滤波前后的基音周期轨迹图进行了比较。第4章:详细讲解语音识别的原理,通过对比基音周期来达到能够判别不同的说话人,同时也说明基音周期在语音识别中的重要作用。第5章 说话人的语音识别在我们生活中的美好展望以及在现实生活应用。最后是参考文献、致谢。 2 基音检测常用的算法2.1引言基音周期准确而快速基音周期检测对语音信号的识别具有非常重要的意义。目前,基音周期检

22、测的算法有很多种,最常用的基音检测算法有自相关函数法和平均幅度差函数法。本章将详细的介绍这两种常用基音检测算法的基本原理。2.2 常用的基音检测算法及其原理2.2.1 自相关函数法预处理 语音的浊音信号具有准周期性,其自相关函数在基音周期的整数倍处取最大值。预处理可以去除声道相应的影响及其他带来扰乱的特征,方法之一就是采用非线性处理。语音信号的低幅度部分包含了大量的共振峰信息,而高幅度部分包含了大量的基音信息。所以,采用任何的削减或抑制语音低幅度部分的非线性处理都会使得自相关函数的性能得到一些改善。并且非线性处理在采用硬件时可在时域低成本地实现。基音周期就是通过估算两个相邻的最大峰值之间的距离

23、。为了突出反映基音周期的信息,同时压缩其他无关信息,减小运算量,自相关计算之前需要对语音信号进行适当预处理。消除其他的响应对于基音检测的影响,因此就采用中心削波技术去来对语音信号进行预处理。预处理的方法:先对语音信号进行中心削波处理,再进行自相关计算。下面介绍的是中心削波法。 1.中心削波 中心削波函数为 :(2.1) -XL +XL 图2.1 中心削波函数 做自相关运算,只有剩余的峰值部分参与运算,其他都是零。削波电平由语音信号的峰值幅度来决定的,所以,这个门限XL的选择是很重要的。一般在不损失基音信息的前提下,尽可能的选的高一些,能达到好的效果。经过中心削波后只保留了超出削波电平的部分。其

24、中,削波电平XL一般取最大信号幅度的6070,削波后的序列用短时自相关函数估计基音周期,在基音周期处峰值更加尖锐,可减少倍频或半频错误。 自相关函数原理:能量有限的语音信号的短时自相关函数定义为: (2.2)其中,为移位距离,是偶对称的窗函数。短时自相关函数有以下重要性质:如果是周期信号,周期是,那么也是周期信号,且周期同样是p,就有。当=0时,自相关函数具有最大值;且当处周期信号的自相关函数达到极大值。自相关函数是偶函数,即。用短时自相关函数法进行基音主要依据短时自相关函数的第2条性质,比较原始的语音信号与移位后的语音的相似度确定其基音周期,当移动的距离等于基音周期,两个信号就具有最大类似性

25、,否则,就不能测得基音周期。在实际中,采用短时自相关函数法进行基音检测时,第一要考虑的问题是窗的问题,使用一个窗函数,令窗不动,而语音信号移动,这就是经典的短时自相关函数法。一般认为窗长至少应大于两个基音周期。窗长应该选的更长一些,避免第一最大峰值点与基音周期不一致,窗长长了就可以更清楚的了解自相关函数的波形,更有利于检测。计算起来不方便,近年来高速数字信号处理器(DSP)的使用,使让这一算法简单有效。越小,误差越大,好处是运算时较简便。所以要选择适当的N值。 用短时平均能量进行清/浊音的判断在基音检测的同时,应进行清/浊音判断,因为可将浊音/清音特征看作与周期/非周期相同的特征,所以可以简化

26、问题,浊/清音往往按自相关函数和预测误差的自相关函数的峰值来决定。但是在无周期性的有声区内,这种方法不能起作用,所以就经常采用其他的参数来提高精确度。辅助参数主要有:语音信号能量;过零数;自相关函数;线性预测系数。下面采用语音信号能量法:语音信号 x ( n) 的某帧信号的短时平均能量En 的定义为: (2.3)式中,w ( n) 为窗函数; N 为窗长。令h( n) = w2 ( n) ,则有 (2.4)窗口加权短时平均能量En,冲激相应h(n)的选取直接影响着短时能量的计算。 通常N的选择与语音的基音周期相关联系,一般要求窗长为几个基音周期的数量级。由于语音基音频率范围为50Hz到500H

27、z,因此折中选择帧长为10到20ms。通过En的高低来判定浊音向清音的转化。语音信号的分帧是采用可移动的有限长度的窗口进行加权来实现。选择的原则是:使得短时能量既能及时跟踪语音能量的缓变规律,同时又对语音振幅一个基音周期内的瞬时变化有显著平滑的作用。本算法中窗口选择矩形窗: 1, 0nN-1 W(n)= (2.5) 0, 其他 图2.2 (a)原信号(b)自相关函数 图2.3 (a)原信号(b)自相关函数短时自相关函数的算法是基音周期估计常用的方法,特别适用于噪声环境下的基音提取。语音的浊音信号具有准周期性,所以在自相关函数基音周期的整数倍的地方取最大值,计算相邻两个最大峰值之间的距离,就可以

28、估计出基音周期。观察浊音信号的自相关函数图,实际上,真正反映基音周期的只是少数几个峰,其它的多数峰都是由于声道的共振特性引起的。由于丰富的谐波成分使得语音信号波形变得复杂。常常会出现检测的结果是实际结果的2倍或者1/2,就使得基音检测相当困难。如图2.2(a)是一帧的原始语音信号,2.2(b)是经过自相关函数的语音信号,可以看出峰值是自相关函数在基音周期处,峰值点之间的间隔的平均值就是基音周期,如图2.3(b)所示可以看出自相关函数检测出的基音周期是原始信号基音周期的一半,因为谐波峰值点(箭头所示)的影响,就会出现上述缺点中所说的倍频现象。2.2.2 平均幅度差函数法短时平均幅度差函数的介绍,

29、如果信号x(n)是标准的周期信号,则相距为周期的整数倍的样点上的幅度值是相等的,二者差值为零。对于浊音信号,在周期整数倍上,这个差值不为零,但也小,就可以采用计算短时平均幅度差函数中两相邻谷值间的距离进行基音周期估值。这里使用修正的短时平均幅度差函数加矩形窗,定义为:.,N-1 (2.6)如果x(n)具有周期P.则当=P,2P,.时,Fn()具有最小值。 因为只需加、减法和取绝对值等的计算,比较简单。很容易在硬件上实现,所以使得短时平均幅度差函数法在基音检测中使用得相对比较普遍。实验证明:静音环境环境下或是噪声较小时,AMDF法的检测结果比较好;语音环境恶劣或信噪比较低情况下,检测的效果就比较

30、差,准确度不高。如图2.4(a)是一帧原始语音信号,2.4(b)是这帧语音信号的AMDF函数,从图中能看出AMDF法在基音周期处表现为谷低,通过计算这些谷低之间的间隔的平均值就可以得到基音周期。如图2.5(a)是在这帧语音信号中加入信噪比是2dB噪声后所得到的波形,由图2.5(b)看出来了它的平均幅度差函数中有很多谐波分量,基音峰值点受到这些谐波分量的很大影响,在基音周期的判断时就有出入。 图2.4 (a)原信号(b)平均幅度差函数 图2.5 (a)加噪信号(b) 平均幅度差函数2.3 本章小结对于语音信号在检测之前先进行预处理即利用中心削波处理,然后详细讲解了ACF,AMDF的基音检测算法。

31、自相关函数先进行基音周期估计时先分清浊音和清音,再去寻找的是最大峰值点的位置,而AMDF寻找的是它的最小谷值点的位置;自相关函数法具有很好的抗噪性,但易受半频、倍频错误影响,而平均幅度差函数法只需加法、减法和取绝对值等计算,算法简单,运算量相比自相关函数法大为减少,易于硬件实现。 两种算法对纯净的语音信号都能取得较好的检测精度但是由于语音信号的复杂多变,以及噪声等因素的影响,这些方法都有一定的局限性。基于语音信号短时平稳性,它们的优点是比较简单,主要应用于只需要平均基音周期作为参数的语音识别。 3 基于Matlab基音周期的检测3.1 语音文件的录制与读入1 利用windows附件中的录音机功

32、能录制2-3秒的.wav语音文件,并以a为文件名保存到Matlab/work的文件夹中。a.语音录制: 开始/程序/附件/娱乐/录音机; b.将自已说话的“我到北京去” 录音(按键),然后到2-3秒时停止(按键);c.将录制的文件加存为C:/Matlab/work中,文件名为a1.wav,a2.wav,采样频率选11KHz,16位,单声道; 2 打开Matlab并新建一.m文件;3.在.m文件中用y=wavread(a1.wav)命令读入语音文件。3.2 语音信号的采样和分帧“采样”是指从语音信号中选取一段样本,一般取样点数为帧长的整数倍。短时分析是将语音信号分为一段一段的来处理,每一段就称为

33、一“帧”。分帧时需要对语音信号进行加窗操作,窗口长度的选择非常重要,窗口长度过短会使得分析窗内没有包含足够的数据点来进行周期判断,且短时能量变化剧烈;窗口长度过长,短时能量是一段长时间的平均,不但不能反映出语音信号基频的细节变化部分,而且使得计算量增大。窗口长度至少要大于基音周期的两倍。一般窗长选为120-240点,分帧模块主要完成将取样模块中获得的语音样值点分为若干个语音帧。语音在Matlab上的实现:以a1.wav语音为例,在Matlab上进行语音的采样与分帧。打开Matlab并新建一.m文件,运行:x=wavread(a1.wav);%读取声音文件figure(1);stem(x,.);

34、 %显示声音信号的波形得到的波形如下: 图3.1 a1原始语音波形对语音信号采样,通过matlab对语音文件“a1.wav”计算得知其语音长度为2.5秒,若采样频率为11KHz,共计27500个采样点。采样模块从采样频率为11KHz的语音信号中截取1秒到2秒这一时间段,取了11000个样点进行分析,取帧长为20ms,即每帧为220个样点值,共分为50帧。打开Matlab,运行:x=wavread(a1.wav);%读取声音文件x=x(11001:22000);figure(1);stem(x,.); %显示声音信号的波形得到波形如下: 图3.2 a1采样信号波形中心削波法的程序及其波形图:a=

35、wavread(a1.wav);L=length(x);m=max(a);for i=1:L a(i)=a(i)/m;endm=max(a);n=min(a);ht=(m+n)/2;for i=1:L; a(i)=a(i)-ht;endfigure(1);subplot(2,1,1);plot(a,k);axis(0,1711,-1,1);title(中心削波前语音波形);xlabel(样点数);ylabel(幅度);coeff=0.7;th0=max(a)*coeff;for k=1:L; if a(k)=th0 a(k)=a(k)-th0; elseif a(k)=(-th0); a(k)

36、=a(k)+th0; else a(k)=0; endendm=max(a);for i=1:L; a(i)=a(i)/m;endsubplot(2,1,2);plot(a,k);axis(0,1711,-1,1);title(中心削波后语音波形);xlabel(样点数);ylabel(幅度);得到的结果如下: 图3.3 中心削波前和中心削波后的波形3.3 语音信号基音周期的检测3.3.1 短时自相关函数法检测基音周期对每一帧信号进行自相关运算程序如下:x=wavread(a1.wav);n=220; %取20ms的声音片段,即220个样点for m=1:length(x)/n; %对每一帧求

37、短时自相关函数 for k=1:n; Rm(k)=0; for i=(k+1):n; Rm(k)=Rm(k)+x(i+(m-1)*n)*x(i-k+(m-1)*n); end end p=Rm(10:n); %防止误判,去掉前边10个数值较大的点 Rmax,N(m)=max(p); %读取第一个自相关函数的最大点end %补回前边去掉的10个点N=N+10;T=N/8; %算出对应的周期 figure(2);stem(T,.);axis(0 length(T) 0 10);xlabel(帧数(n);ylabel(周期(ms);title(各帧基音周期);得到结果如下: 图3.4 a1基音轨迹图

38、3.3.2 短时平均幅度差函数法检测基音周期对每一帧信号进行平均幅度差运算程序如下:x=wavread(a1.wav);%读取声音文件 b1=x(11001:22000);figure(1);stem(b1,.); %显示声音信号的波形N=200;%窗长A=;for k=1:200%延迟长度 sum=0; for m=1:N; sum=sum+abs(b1(m)-b1(m+k-1); endA(k)=sum;ends=x(11001:22000);figure(2)subplot(211)axis(0,200,-2*103,2*103)plot(s);subplot(212)axis(0,20

39、0,0,3.5*105);plot(A);得到结果如下: 图3.5 a1的语音波形 图3.6 a1平均幅度差运算3.4 基音周期检测的后处理我们可以从得到的基音周期波形中看出形状不规律,也看起来很复杂。从这样的波形中是很难提取到准确基音周期的。所以在提取时,就应当进行相应的处理使得得到的基音周期轨迹于现实的轨迹能比较贴合。在大多数都能吻合的情况下,其余那些落在正常轨迹之外的,通常是偏离到正常值的2倍或1/2处,即实际基音频率的倍频或分频处,称这种偏离点为基音轨迹的“野点”。去除这些“野点”,使得基音轨迹能够平滑,就需要进行平滑后处理。常用的平滑技术主要有:中值滤波平滑处理,线性平滑,动态规划平

40、滑处理。 这里采用组合平滑处理,为了改善平滑的效果可以将两个中值平滑串接,图3-4-1(a)所示是将一个5点中值平滑和一个3点中值平滑串接。另一种方法是将中值平滑和线性平滑组合,如图3-4-1(b)所示。为了使平滑的基音轨迹更为贴近,还可以采用二次平滑的算法。 3点中值平滑5点中值平滑 图3.7 (a)中值平滑线性平滑 图3.7 (b)用下面的程序对原始的基音周期进行平滑处理:fid=fopen(zhouqi.txt,rt);zhouqi=fscanf(fid,%f);fclose(fid);zhouqi0=medfilt1(zhouqi,5);zhouqi1=medfilt1(zhouqi,

41、3);zhouqi2=linsmooth(zhouqi0,5);w=;w=zhouqi;w1=w-zhouqi2;w1=medfilt(w1,5);w1=linsmooth(w1,5);zhouqi3=w1+zhouqi2;v=;v(1)=0;v(2)=0;v(3)=0;v(4)=0;for i=1:(length(zhouqi)-4) V(i+4)=zhouqi(i);endv=v(:);v1=v-zhouqi2;v1=medfilt1(v1,5);v1=linsmooth(v1,5);zhouqi4=v1+zhouqi2;figure(1)subplot(511)plot(zhouqi);

42、xlabel(帧数)ylabel(样点数)axis(0,360,0,150)title(原始基音周期轨迹)subplot(512),plot(zhouqi2);xlabel(帧数)ylabel(样点数)axis(0,360,0,150)title(五点中值平滑和3点中值平滑组合)subplot(513),plot(zhouqi2);xlabel(帧数)ylabel(样点数)axis(0,360,0,150)title(五点中值平滑和5点线性平滑组合)subplot(514),plot(zhouqi3);xlabel(帧数)ylabel(样点数)axis(0,360,0,150)title(二次

43、平滑法)subplot(515),plot(zhouqi4);xlabel(帧数)ylabel(样点数)axis(0,360,0,150)title(加延时的二次平滑算法)其中,linsmooth()函数的MATLAB程序如下:functiony=linsmooth(x,n,wintype)% linsmooth(x,wintype,n):linear smoothing% x:输入% n:窗长% wintype:窗类型,默认为hannif nargin3 wintype=hann;endif nargin2 n=3;endwin=hann(n);win=win/sum(win);r,c=size(x);if min(r,c)=1 err

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

当前位置:首页 > 社会民生


经营许可证编号:宁ICP备18001539号-1