基音周期检测算法比较.docx
- 文档编号:8461067
- 上传时间:2023-01-31
- 格式:DOCX
- 页数:27
- 大小:504.08KB
基音周期检测算法比较.docx
《基音周期检测算法比较.docx》由会员分享,可在线阅读,更多相关《基音周期检测算法比较.docx(27页珍藏版)》请在冰豆网上搜索。
基音周期检测算法比较
本科毕业论文
题目语音基音周期检测算法比较
学院管理科学与工程学院
专业电子信息工程
班级081信工
(1)班
学号200883082
姓名周刚
指导老师段凯宇讲师
二〇一二年六月
语音基音周期检测算法比较
摘要
基音周期作为语音信号处理中描述激励源的重要参数之一,广泛的应用于语音合成、语音编码和语音识别等语音信号处理等技术领域。
准确可靠的对基音周期进行检测将直接影响整个语音处理系统的性能。
常用的基音检测算法对于纯净语音信号都能达到较好的检测效果。
然而,实际当中的语音信号不可避免的会受到外界背景噪音的影响,使得这些检测算法的检测效果都不是很理想,为此本文用两种基本算法对语音信号滤波前后进行基音周期检测,在进行比较。
论文首先介绍了语音基音检测算法的研究背景极其重要意义。
其次对现有的基音检测算法进行了归纳和总结,并详细的介绍本文将用的两种基本基音检测算法的基本原理及实现。
最后在Matlab上对语音信号进行基音周期检测。
论文还完成了算法的程序设计,在Matlab7.0仿真环境下,对上诉算法进行仿真验证,并且在滤波前后做了对比实验。
实验结果表明,经过滤波的语音信号基音周期检测的更加准确。
关键词:
基音检测;自相关函数法;平均幅度差函数法;基音轨迹
Abstract
Pitchasinspeechsignalprocessingisoneoftheimportantparameterstodescribetheexcitationsource,widelyusedinspeechsynthesis,speechcodingandspeechrecognitionspeechsignalprocessingtechnology.Accuratepitchperioddetectionwilldirectlyaffecttheperformanceofthespeechprocessingsystem.
Commonlyusedalgorithmforpitchdetectionforcleanspeechsignaltoachievegooddetectioneffect.However,theactualspeechsignalwillbeinevitablyinfluencedbyexternaleffectsofbackgroundnoise,sothedetectionalgorithmtodetecttheeffectisnotveryideal,thepaperusetwobasicalgorithmsbeforeandafterfilteringthespeechsignalpitchdetection,incomparison.
Thethesisfirstintroducestheresearchbackgroundofspeechpitchdetectionalgorithmisveryimportant.Nexttotheexistingalgorithmforpitchdetectionaresummarized,andadetailedintroductiontothisarticlewillusethetwokindsofbasicpitchdetectionalgorithmisthebasicprincipleandrealization.FinallyinMatlabonspeechsignalpitchperioddetection.
Thepaperalsofinishedprogrammingalgorithm,intheMatlab7.0simulationenvironment,thealgorithmisvalidatedbysimulation,andthecontrastexperimentsweredonebeforeandafterfiltering.Theexperimentalresultsshowthat,afterthefilteringofthespeechsignalpitchperioddetectionismoreaccurate.
Keywords:
pitchdetection;autocorrelationfunction;theaveragemagnitudedifferencefunctionmethod;pitchcontrail
第1章绪论······················································1
1.1引言··························································1
1.2基音检测的定义和意义··········································1
1.3基音检测的研究现状············································2
1.4论文的结构安排················································3
第2章基音检测的常用算法······································4
2.1引言··························································4
2.1常用的基音检测算法及原理······································4
2.2.1自相关函数法·············································4
2.2.2平均幅度差函数法·········································6
2.3本章小结·······················································7
第3章基于Matlab基因周期的检测·································9
3.1语音文件的录制与读入··········································9
3.2语音信号的采样与分帧··········································9
3.3语音信号基音周期的检测·······································11
3.3.1短时自相关函数法检测基音周期·····························11
3.3.2短时平均幅度差函数法检测基音周期·························12
3.4基音周期检测的后处理·········································14
3.5滤波后的基音周期检测·········································15
3.6本章小结·····················································18
第4章总结与展望···············································19
参考文献·························································20
致······························································21
附录······························································22
第1章绪论
1.1引言
语音是语言的声学表现是人类相互之间进行信息交流时所用的重要载体和基本手段,随着现代信息科学技术的飞速发展,尤其是计算机网络技术的日益普及和完善,是的语音信号处理技术发挥着越来越重要的作用。
目前,语音信号处理的一系列技术及其应用已经成为信息社会中不可或缺的重要组成部分,对促进信息社会的发转具有重要意义。
语音信号处理是语音学的数字信号处理相结合而形成的一门综合性学科,包括语音合成、语音识别、语音编码和说话人识别等四大分支[1]。
语音信号处理和认知科学、心理学、语言学、计算机科学、模式识别和人工智能等学科联系紧密。
语音信号处理技术的发展依赖于这些学科的发展,而语音信号处理技术的进步也会促进这些学科的发展[2]。
在语音信号处理中,语音信号参数提取的准确性非常重要。
只有获得准确的可表征语音信号本质特征的参数,才有可能利用这些参数进行高效的语音合成,语音识别以及语音压缩编码解码处理,其中基音周期的提取在语音信号众多参数提取中尤为重要,其提取的准确与否直接影响到合成语音是否真实再现原始语音信号的频谱[3]。
1.2基音检测的定义和意义
人在发音时,根据声带是否震动可以将语音信号分为清音跟浊音两种。
浊音又称有声语言,携带者语言部分的能量,浊音在时域上呈现出明显的周期性;而清音类似于白噪声,没有明显的周期性。
发浊音时,气流通过声门使声带产生弛震荡式振动,产生准周期的激励脉冲串。
这种声带振动的频率称为基音频率,相应的周期就成为基音周期[4]。
通常,基音频率与个人声带的长短、薄厚、韧性、劲度和发音习惯等有关系,在很大程度上反应了个人的特征。
此外,基音频率还跟随着人的性别、年龄不同而有所不同。
一般来说,男性说话者的基音频率较低,大部分在70~200Hz的围,而女性说话者和小孩的基音频率相对较高,在200~450Hz之间。
基音周期的估计称谓基音检测,基音检测的最终目的是为了找出和声带振动频率完全一致或尽可能相吻合的轨迹曲线。
基因周期作为语音信号处理中描述激励源的重要参数之一,在语音合成、语音压缩编码、语音识别和说话人确认等领域都有着广泛而重要的问题,尤其对汉语更是如此。
汉语是一种有调语言,而基因周期的变化称为声调,声调对于汉语语音的理解极为重要。
因为在汉语的相互交谈中,不但要凭借不同的元音、辅音来辨别这些字词的意义,还需要从不同的声调来区别它,也就是说声调具有辨义作用;另外,汉语中存在着多音字现象,同一个字的不同的语气或不同的词义下具有不同的声调。
因此准确可靠地进行基音检测对汉语语音信号的处理显得尤为重要。
1.3基音检测的研究现状
自进行语音信号分析研究以来,基音检测一直是一个重点研究的课题。
尽管目前基音检测的方法有很多种,然而这些方法都有其局限性。
迄今为止仍然没有一种检测方法能够适用不同的说话人、不同的要求和环境、究其原因,可归纳为如下几个方面[5]。
1.语音信号变化十分复杂,声门激励的波形并不是完全的周期脉冲串,在语音的头、尾部并不具有声带振动那样的周期性,对于有些清浊音的过度帧很难判定其应属于周期性或非周期性,从而也就无法估计出基音周期。
2.声道共振峰有时会严重影响激励信号的谐波结构,使得想要从语音信号中去除声道影响,直接取出仅和声带振动有关的声源信息并不容易。
3.在浊音语音段很难对每个基因周期的开始和结束位置进行精确的判断,一方面因为语音信号本身是准周期的。
另一方面因为语音信号的波形受共振峰、噪音等因素的影响。
4.在实际应用中,语音信号常常混有噪声,而噪声的存在对于基音检测算法的性能产生强烈影响。
5.基音频率变化围大,从低音男声的70Hz到儿童女性的450Hz,接近3个倍频程,给基因检测带来了一定的困难。
尽管语音检测面临着很多困难,然而由于基因周期在语音信号处理领域的重要性,使得语音基因周期检测一直是不断研究改进的重要课题之一。
数十年来,国外众多学者对如何准确地从语音波形中提取出基因周期作出了不懈的努力,提出了多种有效的基音周期检测方法。
我国基因检测方面的研究起步要比国外发达国家晚一点,但是进步很大,特别是对汉语的基音检测取得成果尤为突出。
目前的基因检测算法大致可分为两大类:
非基于事件检测方法和基于事件检测方法[6],这里的事件是指声门闭合。
非基于事件的检测方法主要有:
自相关函数法[7-10]、平均幅度查函数法[11],倒谱法[12][13],以及在以上算法基础上的一些改进算法[14-17]。
语音信号是一种典型的时变、非平稳信号,但是,由于语音的形成过程是发音器官的运动密切相关的,而这种物理运动比起声音振动速度来讲要缓慢得多,因此语音信号常常可假定为短时平稳的,即在短时间,其频谱特性和某些物理特征参量可近似地看作是不变的,非基于事件的检测方是利用语音信号短时平稳性这一特点,先将语音信号分为长度一定的语音帧,然而对每一帧语音求基音周期。
相比基于事件的基音周期检测方法来说,它的优点是算法简单,运算量小,然而从本质上说这些方法无法检测帧基因周期的非平稳变化,检测精度不高。
基于事件的检测方法是通过定位声门闭合时刻来对基因周期进行估计,而不需要对语音信号进行短时平稳假设,主要有小波变换方法和Hilbert-Huang变换方法两种。
在时域和频域上这两种方法又具有良好的局部特性,能够跟踪基因周期的变化,并可以将微小的基因周期变化检测出来,因此检测精度较高,但是计算量较大。
1.4论文的结构安排
与论文的主要容相对应,全文具体章节安排如下:
第1章:
首先简述语音信号处理以及基因周期检测的相关概念,其次对基音检测的背景研究意义、意义以及现状进行了说明,最后叙述了论文的结构安排。
第2章:
对对现有的基音检测算法进行归纳和总结,针对常用的两种检测算法,详细介绍其检测原理以及事先,并进行了优缺点分析。
第3章:
在matlab上对自相关函数法和平均幅度差函数法进行了实现,对语音信号滤波前后的基音周期轨迹图进行了比较。
第4章:
对论文的主要容进行了总结,对语音基因周期的检测算法进行了很好的展望。
最后是参考文献、致、附录。
第2章基音检测的常用算法
2.1引言
基音周期是语音信号的重要参数之一,准确而快速基音周期检测对语音信号的合成、编码、识别等具有重要意义。
目前,基音检测的算法有很多种,常用的检测算法要有自相关函数法、平均幅度差函数法等。
本章将详细的介绍这两种常用基音检测算法的基本原理。
2.2常用的基音检测算法及原理
2.2.1自相关函数法
能量有限的语音信号
的短时自相关函数
定义为:
(2.1)
其中,
为移位距离,
是偶对称的窗函数。
短时自相关函数有以下重要性质:
①如果
是周期信号,周期是
,则
也是周期信号,且周期相同,即
。
②当τ=0时,自相关函数具有最大值;当
…处周期信号的自相关函数达到极大值。
③自相关函数是偶函数,即
。
短时自相关函数法基音检测的主要原理是利用短时自相关函数的第二条性质,通过比较原始信号和它移位后的信号之间的类似性来确定基音周期,如果移位距离等于基音周期,那么,两个信号具有最大类似性。
在实际采用短时自相关函数法进行基音检测时,使用一个窗函数,窗不动,语音信号移动,这是经典的短时自相关函数法。
窗口长度
的选择至少要大于基音周期的两倍,
越大,短时自相关函数波形的细节就越清楚,更有利于基音检测,但计算量较大,近年来由于高速数字信号处理器(DSP)的使用,从而使得这一算法简单有效,而不再采用结构复杂的快速傅里叶变换法、递归计算法等;
越小,误差越大,但计算量较小。
图2-1(a)原信号(b)自相关函数
图2-2(a)原信号(b)自相关函数
基于自相关函数的算法是基音周期估计的常用方法,特别适用于噪声环境下的基音提取。
自相关函数在基音周期处表现为峰值,相邻两个峰值之间的间隔即为一个基音周期。
但通常情况下,基波分量往往不是最强的分量,丰富的谐波成分使语音信号的波形变得非常复杂,给基音检测带来了困难,经常发生基频估计结果为其实际基音频率的二次倍频或二次分频的情况。
加之还有清浊混杂等情况,使基音检测成为一大难题。
如图2-1(a)是一帧语音信号,2-1(b)是这帧语音信号的自相关函数,可以看出自相关函数在基音周期处表现为峰值,这些峰值点之间的间隔的平均值就是基音周期,如图2-2(b)所示可以看出自相关函数检测出的基音周期是原始信号基音周期的一半,这是由于谐波峰值点(箭头所示)的影响,这就是上述缺点中所说的倍频现象。
2.2.2平均幅度差函数法
语音信号
的短时平均幅度差函数
定义为:
(2.2)
其中,
是窗函数,
是一帧语音信号的长度,因为语音信号的浊音段具有周期性,我们假设基音周期为
,则在浊音段,
在
…处将出现谷点,谷点间的距离即为基音周期。
实际应用中,窗函数
和
取矩形窗,这样可使短时平均幅度差函数
的定义更简单。
短时平均幅度差函数可以写成:
…
(2.3)
由于
只需加法、减法和取绝对值等计算,故算法简单,很易于硬件实现,从而使得短时平均幅度差函数法在基音检测中使用得相当普遍,著名的10阶线性预测声码器LPC-10声码器就采用AMDF法来进行基音周期的提取。
研究表明:
当在静音环境下或当噪声较小时,AMDF法可以取的较好的检测结果,但在语音环境较恶劣、信噪比较低时,检测的效果很差,难以让人满意。
如图2-3(a)是一帧语音信号,2-3(b)是这帧语音信号的平均幅度差函数,可以看出平均幅度差函数在基音周期处表现为谷值,这些谷值之间的间隔的平均值就是所要求得基音周期。
如图2-4(a)是在这帧语音信号中加入信噪比是2dB噪声后的波形,由图2-4(b)可以看出它的平均幅度差函数中出现了很多谐波分量,基音峰值点基本淹没在这些谐波分量中,影响了基音周期的判断。
图2-3(a)原信号(b)平均幅度差函数
图2-4(a)加噪信号(b)平均幅度差函数
2.3本章小结
本章对常用基于ACF、AMDF的基音检测算法的基本原理进行了详细介绍,并进行了分析。
两种算法对纯净的语音信号都能取得较好的检测精度但是由于语音信号的复杂多变,以及噪声等因素的影响,这些方法都有一定的局限性。
基于语音信号短时平稳性,它们的优点是比较简单,主要应用于只需要平均基音周期作为参数的语音编解码,语音识别等。
自相关函数法具有很好的抗噪性,但易受半频、倍频错误影响。
平均幅度差函数法只需加法、减法和取绝对值等计算,算法简单,运算量相比自相关函数法大为减少,易于硬件实现。
第3章基于Matlab基因周期的检测
3.1语音文件的录制与读入
1.利用windows附件中的录音机功能录制2-3秒的.wav语音文件,并以a为文件名保存到Matlab/work的文件夹中。
a.打开开始/程序/附件/娱乐/录音机;
b.自已说话a的四个音调录音(按键),到2-3秒时停止(按键);
c.将录制的文件加存为C:
/Matlab/work中,文件名为a1.wav,a2.wav,a3.wav,a4.wav,采样频率选11.025KHz,16位,单声道;
2.打开Matlab并新建一.m文件;
3.在.m文件中用y=wavread(‘a1.wav’)命令读入语音文件。
3.2语音信号的采样和分帧
这里的“采样”是指从语音信号中选取一段样本,一般取样点数为帧长的整数倍。
短时分析将语音分为一段一段来处理,每一段就称为一“帧”。
分帧时需要对语音信号进行加窗操作,窗口长度的选择非常重要,窗口长度过短会使得分析窗没有包含足够的数据点来进行周期判断,且短时能量变化剧烈;窗口长度过长,短时能量是一段长时间的平均,不但不能反映语音信号基频的细节变化部分,而且使得计算量增大。
窗口长度至少要大于基音周期的两倍。
一般窗长选为120-240点,分帧模块主要完成将取样模块中获得的语音样值点分为若干个语音帧。
以a1.wav语音为例,在Matlab上进行语音的采样与分帧。
打开Matlab并新建一.m文件,运行:
x=wavread('a1.wav');%读取声音文件
figure
(1);
stem(x,'.');%显示声音信号的波形
得到的波形如下:
图3-1a1原始语音波形
对语音信号采样,通过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-2a1采样信号波形
3.3语音信号基音周期的检测
3.3.1短时自相关函数法检测基音周期
对每一帧信号进行自相关运算程序如下:
n=220;%取20ms的声音片段,即220个样点
form=1:
length(x)/n;%对每一帧求短时自相关函数
fork=1:
n;
Rm(k)=0;
fori=(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([0length(T)010]);
xlabel('帧数(n)');ylabel('周期(ms)');title('各帧基音周期');
得到结果如下:
图3-3a1基音轨迹图
3.3.2短时平均幅度差函数法检测基音周期
对每一帧信号进行平均幅度差运算程序如下:
x=wavread('a1.wav');%读取声音文件
b1=x(11001:
22000);
figure
(1);
stem(b1,'.');%显示声音信号的波形
N=200;%窗长
A=[];
fork=1:
200%延迟长度
sum=0;
form=1:
N
sum=sum+abs(b1(m)-b1(m+k-1));
end
A(k)=sum;
end
s=x(11001:
22000);
figure
(2)
subplot(211);
plot(s);
subplot(212);
plot(A);
得到结果如下:
图3-4a1平均幅度差运算
3.4基音周期检测的后处理
无论采用哪一种基音周期检测算法都可能产生基音检测的错误,使求得的基音周期轨迹中一个或几个基音周期估计值偏离了正常的估计(通常是偏离到正常值
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基音 周期 检测 算法 比较
![提示](https://static.bdocx.com/images/bang_tan.gif)