语音的基音频率检测算法研究

语音的基音频率检测算法研究[20191214195539]
本人签名: 日期: 摘 要
本文首先简要介绍了国内外语音基音检测算法的研究状况和与之相关的基本知识,并对语音信号处理在时域、频域、倒谱域的实现的原理进行了说明。然后,主要研究并实现了时域上基于自相关法、频域上基于谐波谱相乘技术以及倒谱域上基于同态域处理方法(倒谱)的基音频率检测算法,对上述三种算法用MATLAB2010b进行仿真实验,并且在滤波前后对各算法检测结果进行分析和比较。同时,也对语音基音频率检测进行了总结和展望。
实验结果表明,基于自相关法的基音频率检测算法相对来说最为简单,但是会存在倍频现象;基于谐波谱相乘技术的基音频率检测算法复杂度适中,但是精度较差,无法实现基音频率轨迹的正确显示;基于同态域处理方法(倒谱)的基音频率检测算法相对来说误差更小,数值更加精准一些。
 查看完整论文请+Q: 351916072 
关键字: 基音检测;算法比较;MATLAB
目 录
摘要 - I -
Abstract - II -
第1章 绪论 - 1 -
1.1 引言 - 1 -
1.2 基音频率的定义和意义 - 1 -
1.3 基音检测的研究现状 - 3 -
1.4 MATLAB软件平台介绍 - 4 -
第2章 语音信号处理的基本知识 - 7 -
2.1 语音信号的数字模型 - 7 -
2.2 语音信号的前期处理 - 10 -
2.3 语音信号的特征分析 - 12 -
第3章 基音检测的常用算法及原理 - 13 -
3.1 自相关函数算法及原理 - 13 -
3.2 谐波谱相乘算法及原理 - 16 -
3.3 倒谱算法及原理 - 21 -
第4章 基因频率检测的实现与仿真 - 27 -
4.1 语音文件的录制 - 27 -
4.2 语音信号的采样和分帧 - 29 -
4.3 自相关函数法程序实现与仿真结果 - 31 -
4.4 谐波谱相乘法程序实现与仿真结果 - 39 -
4.5 倒谱法程序实现与仿真结果 - 48 -
4.6 三者算法的结果比较 - 54 -
第5章 总结与展望 - 55 -
参考文献 - 56 -
致 谢 - 57 -
附录:MATLAB程序源代码 - 58 -
一、Trough函数程序代码 - 58 -
二、自相关法基音频率检测程序代码 - 58 -
三、谐波谱相乘技术基音频率检测程序代码 - 59 -
四、同态域处理方法(倒谱)基音频率检测程序代码 - 61-
第1章 绪论
1.1 引言
语音是语言的物质外壳,是语言符号系统的载体,是人类相互之间进行信息交流时所采用的最方便、最有效、最自然的重要载体和基本方式。随着计算机技术与多媒体技术的迅猛发展,计算环境的日趋复杂化,尤其是计算机网络技术的日益普及和完善,人们已经进入信息化时代,语音信号处理技术及其应用成为信息社会中不可或缺的重要组成部分,在如何更加有效的获取、处理、储存和运用语音信息,对于促进信息社会的发展具有非常重要的意义[1]。
在语音信号处理中,语音信号参数提取的准确性对于后期的语音合成,语音识别以及语音压缩编码解码处理具有非常重要的作用,只有获得精确的参数,才能利用这些参数进行高效的处理。而在这些许许多多的参数中,基音频率的提取直接影响到语音识别的识别率,语音压缩编码的正确率,合成语音是否真实再现原始语音信号。因此,基音频率在整个语音信号分析中显得尤为重要[2]。
1.2 基音频率的定义和意义
人们讲话发出的话语叫做语音,根据声带是否发生振动可以将其分为清音(unvoiced sounds)、爆破音(plosive sounds)与浊音(voiced sounds)三种不同类型。浊音是由气流通过声门(glottis)使声带(vocal cords)产生张驰振荡式振动,产生一股准周期性的脉冲气流激励声道(vocal tract),最后从嘴唇或鼻孔,或同时从嘴唇和鼻孔辐射出来而形成浊音,又称有声语音,它携带着语音中的大部分能量,并在时域上呈现出明显的周期性;而清音与爆破音则类似于白噪声,没有明显的周期性。浊音声带振动的频率称为基音频率,它由声带逐渐开启到面积最大(约占基音周期的50%)、逐渐关闭到完全闭合(约占基音周期的35%)、完全闭合(约占基音周期的15%)三部分组成[3]。如图1.1所示:
图1.1 人类发声模型
通常,基音频率与人的性别、年龄,尤其是个人声带的韧性、长短、劲度、薄厚和发音习惯等都有一定有关系,可以说,在很大程度上反映了个人的独特性。总的说来,男性的基音频率较低,大部分在50~250Hz的范围内,而女性和小孩的基音频率相对较高,而且分布范围也较广,大约在100~500Hz之间。在实际操作中,直接想提取基音频一般都比较困难,而从基音周期的角度来处理就比较简单一些。对基音周期的估计称为基音检测(pitch detection),它的最终目的是找出和声带振动频率完全一致的基音周期变化轨迹曲线[4]。但在实现过程中,由于基音周期的变化范围较大、定位困难,声带激励波形不是一个完全的周期脉冲串,大量的背景噪声、丰富的谐波成分的影响难以去除,想获得完全一致的实验结果非常困难,只能尽可能画出相吻合的轨迹曲线。
在语音信号处理中,基因周期是用来描述激励源的重要参数之一,其在语音语音识别、语音增强、压缩编码和语音合成等方向都发挥着着广泛而重要的作用,尤其对汉语更是如此。对于英语来说,它的一个单词由若干个音节组成,一般为2~3个,一个音节由若干个音素组成,一般为1~4个。而汉语音系简单,在汉语中一个字就是一个音节,由一般为2~3个音素组成,具有音素少、音节少等特点。另外,汉语是一门讲声调的语言,而基音周期的变化恰好就是声调,它所携带的信息的辨别作用就显得格外突出,由此可见,声调对于汉语语音的理解极为重要。在使用汉语进行相互交流时,我们不仅要根据元音和辅音来辨识说话人的意思,还要结合说话人的语调来了解其中的意思,但是,由于汉语中常常会出现多音字,就是一个字它也有不同的读音以及在不同语境里也有不同的意义,因此,能够准确并且可靠地进行基音周期检测对汉语语音信号的处理具有十分重要的意义[5]。
1.3 基音检测的研究现状
随着语音处理技术及相关学科的发展,基音周期检测一直是一个不断研究改进的重要课题之一。基音周期是声带震动频率的倒数,对于语音产生的数字模型中激励源来说,也是一个重要参数。尽管现在有很多种不同的基音检测方法,但是这些方法都有自身的局限性,没有任何一种基音检测的方法可以适用于各类人群和各种环境,究其原因,可归纳为如下6个方面[6]:?
1)实际情况下,语音信号中通常都会夹杂背景噪声,它会对基音检测的性能产生强烈影响,消除噪音对基音检测来说就显得是很关键了;
2)语音信号本身是变化的,声门激励的波形并不是一个完全的周期序列,研究起来就显得比较复杂。由于语音信号的头、尾部并不具有规则的声带振动的周期性,所以很难去判定划分清浊音的过渡帧,也就无法准确的归类到是周期性的还是非周期性的,从而要想精准的估计出基音周期也就没那么容易;
3)在很多的情况下,想要区分出清音语音与低电平浊音是极其困难的,因为它们之间的过渡段是非常细微的,这也是是让基音检测困难重重的另一个重要原因;
4)即使得到了浊音语音片段,由于语音信号本身是准周期的,而且其波形受共振峰、噪音等因素的影响,从而也很难准确判断每个基音周期的开始和结束位置进行;
5)基音频率变化范围比较大,从最低的50Hz到最高的500Hz,中间相差了大概3个倍频程,而且,浊音信号还可能包括很多谐波分量,使语音信号的波形变得很复杂,造成了起基音检测的研究没那么容易;
6)声道共振峰有时会对激励信号的谐波结构产生巨大影响,使得想要从语音信号中去除声道的干扰,直接获取仅和声带振动有关的声源信息造成一定的难度;
基音周期检测有许多困难,但因为它的重要性,所以,自从进行语音信号分析研究以来,基音周期检测一直是一个研究的重点课题。几十年来,为了准确地从语音波形中提取出基因周期,全世界各国专家学者经过不懈的努力,提出了多种有效的基音周期检测方法。相对于以美国为主的欧美国家,我国基因检测方面的研究起步要晚一点,但是进步很大,特别是对本国汉语的基音检测取得成果可以算得上是硕果累累。
为了提高基音检测的准确性,降低计算复杂度,人们已经开发了许多基音检测算法,总的来说,可以分为两类:基于事件的检测方法和非基于事件的检测方法,这里的事件是指声门闭合。
基于事件的基音周期检测方法并不多见,如:小波变换方法和Hilbert-Huang变换方法。这两种方法都具有跟踪基音周期变化的能力,能将微小的周期变化检测出来,因此检测精度较高,但是计算量较大,在此不作过多说明。
非基于事件的方法比较常见,一般都先将语音信号分为长度一定的语音帧,然后对每一帧语音信号进行处理,通过假定信号为短时平稳的,即在短时间内,其频谱特性和某些物理特征参量可近似地看作是不变的基础上进行运算处理的。相比基于事件的基音周期检测方法来说,它的优点是比较简单,运算量小,主要应用于只需要平均基音周期作为参数的语音编解码,语音识别。主要方法有:自相关函数法、平均幅度差函数法、倒谱方法以及在以上算法基础上的一些改进算法。与基于事件的基音周期检测方法相比来说,虽然其检测精度不高,但方便实用[7]。本文也将从时域、频域、倒谱域三个方面,采用非基于事件的方法,实现基音检测。
1.4 MATLAB软件平台介绍
MATLAB名字是由MATrix和LABoratory两个单词的前三个字母组合而成的。在二十世纪六十年的时候,美国Math?Works公司构思并开发了“Matrix?Laboratory(缩写MATLAB,即矩阵实验室)”软件包,被各大高校师生与编程人员广泛使用后,经过十几年的不断更新和扩充,最终于1984年推出了正式版的MATLAB。从此开始采用C语言来编写MATLAB的内核,从而实现软件兼容性,并以原来数值计算能力为基础,积极推出了数据图形可视化的功能。MATLAB在以商品形式出现后,仅短短几年,就凭借其良好的开放性和运行的可靠性,使原先控制领域里的封闭式软件包(如英国的UMIST,瑞典的LUND和SIMNON,德国的KEDDC)纷纷淘汰,而改以MATLAB为平台加以重建。在时间进入20世纪九十年代的时候,MATLAB已经成为国际控制界公认的标准计算软件。到九十年代初期,在国际上30几个数学类科技应用软件中,MATLAB在数值计算方面独占鳌头[8]。?
时至今日,经过Math?Works公司的不断完善,MATLAB已经发展成为适合多学科、多种工作平台的功能强劲的大型软件。在国外,MATLAB已经经受了多年考验。在欧美等高校,MATLAB已经成为线性代数、自动控制理论、数理统计、数字信号处理、时间序列分析、动态系统仿真等高级课程的基本教学工具;成为攻读学位的大学生、硕士生、博士生必须掌握的基本技能。在设计研究单位和工业部门,MATLAB被广泛用于科学研究和解决各种具体问题[9]。
MATLAB的使用也极为简单。直接点击桌面上的图标就进入了MATLAB的工作界面。如图1.2所示。
图1.2 MATLAB的工作界面
在图1.2中,中间是命令窗口,用来输入所要执行的MATLAB语句;右上角是工作空间窗口,可以查看每个运行变量的值;右下角是命令历史窗口,用来查看命令编辑运行的历史数据。如果想运行一段程序,一般情况下不在命令窗口直接输入运行,而是在左上角的File New Script,新建一个.m文件,或是直接点击左上角的New Script,在里面输入、保存、运行即可。
总的来说,MATLAB是一款功能强大的科学及工程计算软件,他不但具有以矩阵计算为基础的强大数学计算和分析能力,而且还具有丰富的可视化图形表现功能和方便的程序设计能力。MATLAB的应用领域极为广泛,除了数学计算和分析外,还被广泛的应用与自动控制、系统仿真、数字信号处理、图形图像分析、人工智能、虚拟现实技术、通信工程、金融系统等领域,因此,MATLAB是面向二十一世纪的计算机程序设计及科学计算语音。
第2章 语音信号的基本知识
2.1 语音信号的数字模型
在之前从声学角度来分析语音产生的过程,我们知道了语音信号是由声道被激励发生共振而产生的输出,所以,可以根据发声过程中声道的运动性,用一个时变系统进行模拟。该系统可以用三个子模型:激励模型、声道模型和辐射模型的串联来表示。具体如图2.1所示。其传递函数 可表示为:

版权保护: 本文由 hbsrm.com编辑,转载请保留链接: www.hbsrm.com/dzxx/dzkxyjs/2459.html

好棒文