您当前的位置:首页 >  党建材料 >  入党誓词 > 内容

基于MATLAB的语音倒谱分析毕业设计

无忧文档网    时间: 2020-08-30 21:04:57     阅读:

XX 大 学 毕 业 论 文(设计) 题 目:基于MATLAB的语音倒谱分析 学 号:
姓 名 年 级 学 院:
专 业:
指导教师:
完成日期:
2012年X月 摘 要 语言是人类最重要的交流工具,它自然方便、准确高效。随着社会的不断发展,各种各样的机器参与了人类的生产活动和社会活动,因此改善人与机器之间的关系,使人对机器的操纵更加便利就显得越来越重要。随着电子计算机和人工智能机器的广泛应用,人们发现,人和机器之间最好的通信方式是语言通信,而语音是语言的声学表现形式。要使机器听的懂人话,就要对语音信号进行处理。随着信息技术的不断发展,尤其是网络技术的日益普及和完善,语音信号处理技术正发挥着越来越重要的作用。为了寻找具有良好性能的特征及提取重要参数以提高识别系统性能,各种科学的算法应运而生,倒谱法作为信号处理的重要的方法之一,能够得到比较好的识别性能。

本文以MATLAB为平台,通过编程实现对语音信号的倒谱分析。首先,本文简要说明了倒谱与语音的相关理论原理,包括倒谱原理和语音的组成元素,为之后的进一步研究奠定理论基础。然后,对语音倒谱各个方面的应用进行了MATLAB编程,得到了语音基音检测和共振峰检测的实验仿真结果。

关键词:语音信号;
倒谱;
MATLAB;
基音检测;
共振峰检测;

Abstract Language is one of the most important communication tools, it is convenient and efficient. With the continuous development of the society, a variety of machines are used in the human’s production and social activities, thus improving the relationship between man and machine makes the machine more convenient what becomes more and more important. With the wide application of electronic computers and artificial intelligence machine, it was discovered that language communication is the best means of communication between man and machine, while the voice is the acoustic manifestations of the language.To make the machine understands people, it is necessary to process the speech signal. With the continuous development of IT, especially the growing popularity of network technology and improvement of the voice signal processing technology is playing an increasingly important role, in order to find a good performance characteristics and extract important parameters to improve the performance of the recognition system, a variety of scientific algorithms have emerged, the cepstrum, as the signal processing one of the important methods, can get better recognition performance. MATLAB as a platform, can achieve cepstrum analysis of the speech signal by programming. First, the article briefly described the itheoretical principles of cepstrum and voice, including the the cepstrum principles and elements of voice,which laied the theoretical foundation for the further research . Then the speech cepstrum application in all aspects was programmed in MATLAB, thus we got voice pitch detection , peak detection experiment simulation results by simulation. Keywords: speech signal; cepstrum; MATLAB; pitch detection; resonance peak detection; 目 录 1绪论 1 1.1目的及意义 1 1.2 语音信号研究现状 1 1.3主要研究内容 3 2倒谱的基本原理 5 2.1复倒谱和倒谱的定义 5 2.2复倒谱的计算方法 6 2.3复倒谱与倒谱的关系 9 3语音信号的组成分析 11 3.1语音的两个分量 11 3.2语音类型 13 4语音倒谱的应用及MATLAB仿真 15 4.1倒谱的MATLAB实现 15 4.2倒谱在同态信号处理系统的应用 16 4.3倒谱在基音检测方面的应用 17 4.4倒谱在共振峰检测方面的应用 21 5总结 25 致 谢 26 参考文献 27 附录A 28 附录B 28 附录C 30 1绪论 1.1目的及意义 由于语言是人们在日常生活中的主要交流手段,因此语音信号处理在现代信息社会中占用重要地位。随着语音信号处理技术在实际生活中的应用的不断发展,语音信号处理技术已经越来越贴近人们的生活。目前,语音信号处理技术处于蓬勃发展的时期,不断有新的产品被研制开发,市场需求逐渐增加,具有良好的应用前景。语音信号处理虽然包括语音通信,语音合成,语音识别等内容,但是其前提和基础是对语音信号进行分析。在语音信号处理中可以常用倒谱域来提取语音的基频和共振峰,用于语音识别。倒谱系数是一种表征语音特征非常有效的参数矢量, 它能将语音信号的声门激励信息及声道响应信息分离开来,也就是说倒谱具有解卷的特性,因此倒谱是说话人识别和语音识别中最常用的特征参数之一。

由于倒谱在语音信号处理中的重要地位,倒谱的应用也越来越广泛。例如可应用于通信、建筑声学、地震分析、地质勘探和语音处理等领域。尤其在语音处理方面,应用复倒谱算法可制成同态预测声码器系统,用于高度保密的通信。

1.2 语音信号研究现状 声学是物理学的一个分支学科,而语言声学又是声学的一个分支学科。

它主要的研究方向是人的发声器官机理,发声器官的类比线路和数学模型,听觉器官的特性(如听阈、掩蔽、临界带宽、听力损失等) ,听觉器官的数学模型,语音信号的物理特性(如频谱特性、声调特性、相关特性、概率分布等) ,语音的清晰度和可懂度等。当今通信和广播的发展非常迅速,而语言通信和语言广播仍然是最重要的部分,语言声学则是这些技术科学的基础。语言声学的发展和电子学、计算机科学有着非常密切的关系。

在它发展的过程中,有过几次飞跃。第一次飞跃是1907年电子管的发明和1920年无线电广播的出现。

因为有了电子管放大器,很微弱的声音也可以放大,而且可以定量测量。从而使电声学和语言声学的一些研究成果,扩展到通信和广播部门。第二次飞跃应该是在20世纪70年代初,由于电子计算机和数字信号处理的发展,人们发现:声音信号特别是语音信号,可以通过模数转换器(A /D)采样和量化,它们转换为数字信号后,能够送进计算机.这样就可以用数字计算方法,对语音信号进行处理和加工.。例如频谱分析可以用傅里叶变换或快速傅里叶变换( FFT)实现,数字滤波器可以用差分方程实现. 在这个基础上,逐渐形成了一门新学科———语音信号处理。它的发展很快,在通信、自动控制等领域,解决了很多用传统方法难以解决的问题。在信息科学中占有很重要的地位,其中语音识别的研究也开始了飞速的发展。

语音识别的研究工作可以追溯到20世纪50年代AT&T贝尔实验室的Audry系统,它是第一个可以识别十个英文数字的语音识别系统。

但真正取得实质性进展,并将其作为一个重要的课题开展研究则是在60年代末70年代初。这首先是因为计算机技术的发展为语音识别的实现提供了硬件和软件的可能,更重要的是语音信号线性预测编码(LPC)技术和动态时间规整(DTW)技术的提出,有效的解决了语音信号的特征提取和不等长匹配问题。这一时期的语音识别主要基于模板匹配原理,研究的领域局限在特定人,小词汇表的孤立词识别,实现了基于线性预测倒谱和DTW技术的特定人孤立词语音识别系统;
同时提出了矢量量化(VQ)和隐马尔可夫模型(HMM)理论。

随着应用领域的扩大,小词汇表、特定人、孤立词等这些对语音识别的约束条件需要放宽,与此同时也带来了许多新的问题:第一,词汇表的扩大使得模板的选取和建立发生困难;
第二,连续的语音中,各个音素、音节以及词之间没有明显的边界,各个发音单位存在受上下文强烈影响的协同发音(Co-articulation)现象;
第三,非特定人识别时,不同的人说相同的话相应的声学特征有很大的差异,即使相同的人在不同的时间、生理、心理状态下,说同样内容的话也会有很大的差异;
第四,识别的语音中有背景噪声或其他干扰。因此原有的模板匹配方法已不再适用。

20世纪90年代前期,许多著名的大公司如IBM、苹果、AT&T和NTT都对 语音识别系统的实用化研究投以巨资。语音识别技术有一个很好的评估机制,那就是识别的准确率,而这项指标在20世纪90年代中后期实验室研究中得到了不断的提高。比较有代表性的系统有:IBM公司推出的ViaVoice和DragonSystem公司的NaturallySpeaking,Nuance公司的NuanceVoicePlatform语音平台,Microsoft的Whisper,Sun的VoiceTone等。

其中IBM公司于1997年开发出汉语ViaVoice语音识别系统,次年又开发出可以识别上海话、广东话和四川话等地方口音的语音识别系统ViaVoice’98。它带有一个32000词的基本词汇表,可以扩展到65000词,还包括办公常用词条,具有“纠错机制”,其平均识别率可以达到95%。该系统对新闻语音识别具有较高的精度,是目前具有代表性的汉语连续语音。

我国语音识别研究工作起步于五十年代,但近年来发展很快。研究水平也从实验室逐步走向实用。从1987年开始执行国家863计划后,国家863只能计算机专家组为语音识别技术研究专门立项,每两年滚动一次。我国语音识别技术的研究水平已经基本上与国外同步,在汉语语音识别技术上还有自己的特点与优势,并达到国际先进水平。中科院自动化所、声学所、清华大学、北京大学、哈尔滨工业大学、上海交通大学、中国科技大学、北京邮电大学、华中科技大学等科研机构都有实验室进行过语音识别方面的研究,其中具有代表性的研究单位为清华大学电子工程系与中科院自动化研究所模式识别国家重点实验室。

清华大学电子工程系语音技术与专用芯片设计课题组,研发的非特定人汉语数码串连续语音识别系统的识别精度,达到94.8%(不定长数字串)和96.8%(定长数字串)。在有5%拒识率情况下,系统识别率可以达到96.9%(不定长数字串)和98.7%(定长数字串),这是目前国际最好的识别结果之一,其性能已经接近实用水平。研发的五千词邮包对非特定人连续语音识别系统的识别率达到98.73%;
并且可以识别普通话与四川话两种语言,达到实用要求。

中科院自动化所及其所属模式科技公司2002年发布了他们共同推出的面向不同计算平台和应用的“天语”中文语音系列产品——PattekASR,结束了中文语音识别产品自1998年以来一直由国外公司垄断的历史。

1.3主要研究内容 本文研究的是语音信号的倒谱分析,首先第一章的绪论部分,介绍了本文的研究目的与意义、语音信号的研究现状和本文的研究内容。

第二章介绍了倒谱的理论知识。详细叙述了倒谱的定义以及计算方法,将倒谱分为实倒谱和复倒谱,并区分实倒谱与复倒谱之间的关系,由此奠定了倒谱分析研究的基础。

接着第三章介绍语音的组成,分别利用倒谱的定义求解了声门激励信号与声道冲激响应序列这两个语音卷积分量的复倒谱,并得出相应的结论,接着对语音的发音类型作了理论阐述。

最后第四章具体研究了倒谱在语音信号处理中的简单应用,主要是语音信号识别的参数提取。首先通过输入一段语音,并将其导入到MATLAB程序中进行语音的处理,完成语音在MATLAB中的倒谱实现,接着介绍倒谱在同态信号处理系统中的作用及同态信号处理系统的工作原理,然后是语音信号的主要应用,也是语音倒谱分析的重点内容,包括基音检测和共振峰检测两个方面,作为语音信号的重要参数,分别进行了详细的设计,为了清晰的描述程序的编写过程,对设计思路方法都进行了完备的阐述,并依据设计的算法画出了逻辑流程图,从而在MATLAB中完成程序的编写,最后通过对仿真结果进行了理论的分析,得出了语音的参数量值,完成了对语音信号倒谱分析的内容。

2倒谱的基本原理 倒谱(CEP)参数是重要的语音特征参数,它是对语音进行同态处理的产物。在提取由于载波传递的信号特性时,用Time-Cepstrum 分析会非常有效,能把相关的特性给提取出来。Cepstrum 在语音识别特征参数提取中用到很多,这是因为语音本质的东西往往是声带的振动,然后经过声道和口腔的调制才产生我们可以听到或拾取的声音。 通过Cepstrum 分析语音就能将这一本质性的特征参数提取出来。而要熟练运用倒谱法,还是要从基本理论入手。

2.1复倒谱和倒谱的定义 复倒谱的概念不是唯一的,一般有三种定义。定义如下:其中假设信号为x(n) ☆复倒谱的Z变换定义 ☆复倒谱的傅里叶变换定义 ☆复倒谱的离散傅立叶变换定义 复倒谱的定义可以用图2.1表示 Z ln Z-1 FT ln IFT DFT ln IDFT x(n) x(n) x(n) 图2.1三种复倒谱定义的框图表示 有了复倒谱的定义后,倒谱的概念就不会复杂了。现在我们以复倒谱傅里叶变换定义为例来定义倒谱,将 取对数有 为复数,则只考虑其实部。令 FT ln|.| IFT x(n) c(n) 图2.2倒谱的实现框图 x(n)的对数幅度谱的傅立叶逆变换,即图2.2中的c(n) 称为 “倒频谱”或“倒谱” c(n)就是要求取的语音信号倒谱系数。

2.2复倒谱的计算方法 在复倒谱分析中,Z变换后是复数,取对数时是复对数运算,此时存在相位多值性问题——相位卷绕。

取信号 为例进行说明 求傅里叶变换 求复对数 由以上倒谱计算的流程可以得到其倒谱的幅度:
相位:
由上式虚部可知相位有多值性 相位可以写成: 其中 为整数,所以相位多值,这种现象被称为相位卷绕。

避免相位卷绕的方法主要有:微分法、最小相位信号法。

(1) 微分法 由傅里叶变换的微分特性 改写:
DFT 乘n DFT ÷ IDFT 除n x(n) nx(n) n 图2.3利用傅立叶变换的微分特性求复倒谱的框图 避免了求复对数的问题,但其缺点是会产生严重的频谱混叠。原因:
频谱中的高频分量比有所增加,所以仍使用原来的取样率将引起混叠;
混叠后求出的 就不是的复倒谱了。

(2) 最小相位信号法 1)这是由倒谱c(n)求复倒谱 的方法。

2)最小相位信号法是由最小相位序列的复倒谱性质和Hilbert变换的性质推出来的。

3) 适用条件:最小相位信号序列 4) 最小相位信号序列:信号的零极点全部在z平面单位圆内。其复倒谱序列是因果序列。

进一步引入辅助因子 则:
图2.4因果序列的分解与恢复 结论:
1. 一个因果序列可由其偶对称分量来恢复;

2.由倒谱的定义可知, 的偶对称分量就是 DFT 复对数 ln(·) IDFT x(n) (实部) (虚部) 图2.5最小相位法求复倒谱 2.3复倒谱与倒谱的关系 x(n) ^ x(n) FT ln|.| IFT FT ln IFT c(n) x(n) 图2.6复倒谱与倒谱关系框图 1)“倒频谱”或称“倒频”的量纲是时间,记作“quefrency”。(由“frequency”转变来的新词) 2)复倒谱涉及的是复对数运算,而倒谱是实数的对数运算。

3)倒频谱不含信号的相位信息。因为人的听觉对语音的感觉特征主要包含在幅度信息中,而相位信息不起作用。

4)倒谱经过正逆变换后,一般不能还原成自身,计算倒谱的过程中,丢失了相位信息。

5)已知一个实数序列x(n)的复倒谱,可以由其求出倒谱c(n)。

任何一个序列可写成偶对称序列和奇对称序列之和。

3语音信号的组成分析 语音是可以看作由两个卷积分量组成,即声门激励信号和声道冲激响应序列。不同的声门激励模型可产生不同的典型语音,如浊音、清音。语音模型是由声门激励模型和声道模型卷积而成的,声道模型在频域表征语音频谱的包络结构,共振峰结构包含在声道模型中。经过复倒谱分析,原本呈现卷积关系的声门激励模型和声道模型在倒频域呈加性关系。

3.1语音的两个分量 语音可以看成是由声门激励信号和声道冲激响应序列卷积而成的如图3.1,所以要想对语音信号进行处理,首先要了解语音分量的倒谱。

声道冲激响应序列 声门激励信号 语音信号 图3.1语音信号产生模拟框图 (1)声门激励信号 发清音时,声门激励是能量较小、频谱均匀分布的白噪声。

发浊音时,声门激励是以基音为周期的冲激序列。

主要考察浊音时的声门激励信号的复倒谱,浊音x(n)的数学表示式 其中是幅度因子,为用样点数表示的基音周期 下面求浊音声门激励的复倒谱 步骤:
1. 对x(n)进行Z变换 2. 对上式取对数并用泰勒公式展开 3.对上式进行逆Z变换 改写为:
结论:
• 1.一个有限长的周期冲激序列。其倒谱也是一个周期冲激序列,且周期不变,只是变为无限长序列。

• 2.其振幅随k的增大而减小,衰减速度比原序列要快。

• 3.利用上述性质,可以用“高时窗”从语音信号的频谱中提取浊音激励信号的倒谱,从而提取出基音。

(2)声道冲激响应序列 若用极零模型来描述声道冲激序列 ,则 求对数:
都小于1 用泰勒公式展开 然后求逆Z变换 结论:
① 是双边序列,存在于 的范围内。

② 由于 均小于1,所以为衰减序列,即随 |n| 的增大而减小。

③ 短时窗提取声道冲激响应序列的复倒谱是很有效的。

④ 最小相位序列的复倒谱是因果序列。

⑤ 最大相位序列的复倒谱是反因果序列。

3.2语音类型 图3.2语音生成机理模型 由图3.2,空气由肺部排入喉部,经过声带进入声道,最后由嘴辐射出声波,这就形成了语音。在声门(声带)以左,称为“声门子系统”,它负责产生激励振动;
右边是“声道系统”和“辐射系统”。当发不同性质的语音时,激励和声道的情况是不同的,它们对应的模型也是不同的。

1浊音 空气流经过声带时,如果声带是绷紧的,则声带将产生张弛振动,即声带将周期性地启开和闭合。声带启开时,空气流从声门喷射出来,形成一个脉冲,声带闭合时相应于脉冲序列的间隙期。因此,这种情况下在声门处产生出一个准周期脉冲状的空气流。该空气流经过声道后最终从嘴唇辐射出声波,这便是浊音语音。这个准周期脉冲的周期即为基音周期。声门处产生的准周期脉冲其周期、宽度以及形状与声带的长度、厚度及张力等参数有关。声带越短、厚度越薄、张力越大,则听起来感觉的音调就越高,也就是浊音的基音频率越高。因此,基音频率是由声带张开闭合的周期所决定。男性的基音频率一般为50~250Hz,女性基音频率为100~500Hz。

2清音 空气流经过声带时,如果声带是完全舒展开来的,则肺部发出的空气流将不受影响地通过声门。空气流通过声门后,会遇到两种情况。一种情况是,如果声道的某个部位发生收缩形成了一个狭窄的通道,当空气流到达此处时被迫以高速冲过收缩区,并在附近产生出空气湍流,这种湍流空气经过声道后便形成所谓摩擦音或清音。令一种情况是,如果声道的某个部位完全闭合在一起,当空气流到达时便在此处建立起空气压力,闭合点突然开启便会让气压快速释放,经过声道后便形成所谓爆破音。这两种情况下发出的是清音。

4语音倒谱的应用及MATLAB仿真 表征一个人声音个性的参数主要有反映声道特性的共振峰频率和反映声门特性的基音参数。为了能够提取出这些参数,就要借助一些工具,本节通过MATLAB完成倒谱在语音处理的各方面应用。

4.1倒谱的MATLAB实现 本实验所用的语音样本是Cooledit在普通室内环境下录制的一段语音,采样频率为8kHz,单声道。MATLAB仿真结果如下:(程序见附录A) 图4.1倒谱程序仿真结果 图4.1是取一段语音的倒谱图,第一幅是这段语音的时域波形图,共取400点语音,在倒谱图上会看到许多峰值,这些峰值都与基因周期有关,分别是一次谐振,二次谐振…… 4.2倒谱在同态信号处理系统的应用 同态信号处理也称为同态滤波,实现将卷积关系和乘积关系变换为求和关系的分离处理。×,* ——> +,将非线性信号处理变为线性信号处理的过程。

线性系统 特征系统 D*[] 逆特征系统 D*-1[] y(n) * + + x(n) * 图4.2常见的同态信号处理系统 按照被处理的信号来分类,大体上可以分为乘积同态信号处理和卷积同态信号处理 由于语音信号可以视为声门激励信号和声道响应信号的卷积结果。我们仅讨论卷积同态信号处理系统的问题。

(1)特征系统D*[] 完成将卷积信号转化为加性信号的运算。

(2)第二个子系统对加性信号进行所需要的线性处理(满足线性叠加原理等) (3)第三个子系统是逆特征系统D*-1[],使其恢复为卷积性信号。

(4)特征系统D*[]和逆特征系统D*-1[]的区别 a.第一步和第三步的运算相同。

b.第二步不同,前者是对数运算,后者是指数运算。(框图如图4.3) Z exp Z-1 Z ln Z-1 图4.3特征系统与逆特征系统的框图表示 4.3倒谱在基音检测方面的应用 基音是语音信号的一个重要参数,在语音产生的数字模型中它也是激励源的一个重要参数,准确地检测语音信号的基音周期对于高质量的语音分析与合成、语音压缩编码、语音识别和说话人确认等具有重要的意义。

1.基音检测的概念 基音是指发浊音时声带振动所引起的周期性,而声带振动频率的倒数就是基音周期。基音周期具有时变性和准周期性,它的大小与个人声带的长短、厚薄、韧性和发音习惯有关,还与发音者的性别、年龄、发音时的力度及情感有关,是语音信号处理中的重要参数之一,它描述了语音激励源的一个重要特征。基音周期的估计称为基音检测(Pitch Detection),基音检测的最终目标是找出和声带振动频率完全一致的基音周期变化轨迹曲线,如不可能则找出尽量相吻合的轨迹曲线。然而由于人的声道的易变性及其声道特征的因人而异,而基音周期的范围又很宽,且同一个人在不同情态下发音的基音周期也不同,加之基音周期还受到单词发音音调的影响,故实际中的基音周期的精确检测是一件比较困难的事情。然而,尽管语音信号的基音检测有许多困难但由于它在语音信号处理中的重要作用,促使广大学者争相涉足。

2.倒谱法求基音周期 语音的倒谱是将语音的短时谱取对数后再进行IDFT得到的,所以浊音信号的周期性激励反映在倒谱上式是同样周期的冲激。借此,可从倒谱波形中估计出基音周期。一般把倒谱波形中第二个激励,认为是对应激励源的基频。下面给出一种倒谱法求基音周期的框图及流程图。先计算倒谱,然后在预期的基音周期附近寻找峰值。如果倒谱的峰值超出了预先规定的门限,则输入语音段定为浊音,而峰的位置就是基音周期的良好估计。如果没有超出门限的峰值,则输入语音段定为清音。如果计算的是一个时变的倒谱,则可估计出激励源模型及基音周期随时间的变化。一般每隔10~20ms计算一次倒谱,这是因为在一般语音中激励参数是缓慢变化的。

基音检测的实现框图和流程图如图4.4和4.5所示。

DFT S(k) ln|S(k)| IDFT 峰 值 检 测 基 音检 测 w(n) s(n) 图4.4倒谱法求基音周期的实现框图 读入语音数据 到文件尾吗? 结束 对该帧数据加窗 计算基音周期pitch 基音周期pitch=0 找出该搜索范围内倒谱的最大值max 设置门限为0.08 求该帧数据的倒谱 设置基音搜索范围 取出一帧语音数据 max>0.08? Y N N Y 图4.5基音检测的流程图 3基音周期的清浊音的MATLAB仿真(程序见附件B) (1) 浊音:取startIndex=round(4500),其运行结果如图4.6所示 图4.6倒谱法求浊音的基音周期 图4.6分别为语音的语音波形时域图,截取一帧语音的波形图和一帧语音的倒谱图。

语音波形图为输入语音之后的采样波形,从这段语音中取出一帧的波形,在语音波形中为红色线之间的部分,(打印后线变为黑色),共计400点语音,所取的一帧语音为浊音,由第二幅图看出浊音呈现明显的周期性,而这个周期就是所要求的基音周期,一般把倒谱波形中第二个冲激,认为即是对应激励源的基频。在倒谱图上表现为最大峰值与次峰值之间的间隔,将其化为频率之后,估算出基音周期pitch= 186.0Hz,从图中可以看出基音周期样点数Np表示约为43,采样频率fs,故pitch=fs/Np=8000/43=186.0Hz. (2)清音:取startIndex=round(45000)。其运行结果如图 图4.7清音的倒谱 图4.6与图4.7的不同点在于选取的声音元素不同,图4.7所取的一帧语音为清音,清音的幅度较小,且通过其时域图可知清音不具有明显的周期性,通过计算估算出它的基因周期pitch=0。

4.4倒谱在共振峰检测方面的应用 语音信号处理中,共振峰频率是一个特别重要的参数。它是表征发音时声道特性的关键参数,也是区别不同韵母的重要依据。寻求一种实时实现的共振峰频率检测算法,在语音合成、语音识别、说话人识别等领域中有重要的应用价值。共振峰信息包括在语音频谱包络中。因此,共振峰频率检测的关键在于估计自然语音频谱包络,并认为谱包络最大值对应的频率就是共振峰频率,最大值就是共振峰。所以共振峰已经广泛地用作语音识别的主要特征和语音编码传输的基本信息。如果直接在语音频谱提取共振峰频率,误差会很大。倒谱分析技术可以较好 地分离出语音信号频谱包络结构。

1共振峰的概念 共振峰是指在声音的频谱中能量相对集中的一些区域,共振峰不但是音质的决定因素,而且反映了声道(共振腔)的物理特征。声音在经过共振腔时,受到腔体的滤波作用,使得频域中不同频率的能量重新分配,一部分因为共振腔的共振作用得到强化,另一部分则受到衰减,得到强化的那些频率在时频分析的语图上表现为浓重的黑色条纹。由于能量分布不均匀,强的部分犹如山峰一般,故而称之为共振峰。

2基于倒谱的共振峰的算法 倒谱将基音谐波和声道的频谱包络分离开来。倒谱的低时部分可以分析声道、声门和辐射信息,而高频部分可用来分析激励源信息。对倒谱进行低时窗选,通过语音倒谱分析系统的最后一级,进行DFT后的输出即为平滑后的对数模函数,这个平滑的对数谱显示了特定输入语音段的谐振结构,即谱的峰值基本上对应于共振峰频率,对平滑过的对数谱中的峰值进行定位,即可估计共振峰。原理框图和流程图如图4.8和图4.9所示。

分帧加窗 |FFT| log IFFT 加窗 平滑处理 |FFT| log 共振峰 图4.8共振峰检测框图 计算浊音基音周期NN点 取倒谱的前NN点 加NN点汉明窗 计算频谱formant1 formant(1:2)=formant1(1:2) t<=2 Formant=formant2 平滑处理 Formant(t)=formant2(t-1)*0.25+formant2(t)*0.5+formant2(t+1)*0.25 绘 图 Y N 图4.9共振峰检测流程图 3共振峰检测的MATLAB仿真(程序见附录C) 使用倒谱法估计共振峰频率中要注意, 并不是所有的谱峰都是共振峰, 而且当两个共振峰很靠近时, 会发生谱重叠, 很难计算共振峰的带宽。图4.2.4为仿真的结果,先求语音的倒谱,然后求出倒谱的频谱,做出来频谱图如图4.2.4第二幅,最后对频谱取对数并进行平滑处理,所得的图像峰值就是对应的共振峰。清音没有共振峰,取startIndex=round(4500)也就是浊音的共振峰检测,其运行结果如图4.2.4.1所示,其中平滑对数幅度谱的峰值所对应的频率就是共振峰频率。

图4.10浊音共振峰检测 图4.10是语音的倒谱,倒谱的频谱以及平滑对数幅度谱的仿真图,第二幅图可以看到倒谱的频率分布相对比较平稳,所以对第二个样点之后的语音进行平滑处理之后,所得的共振峰也不很明显 5总结 通过几个月的不懈努力,完成了该课题的设计,实现了基于MATLAB的语音倒谱分析,对基于MATLAB软件进行信号的处理有了更深刻的认识。当然,限于作者水平,该系统难免有疏漏和需改善之处,比如,理想情况下,语音信号中浊音的倒谱会出现对应于基音周期的尖峰。然而,在实际语音信号的倒谱域中基音周期还会因为各种因素的影响而使提取出现困难:
① 声门激励信号并不是一个完全周期的序列,在语音的头、尾部并不具有声带振动那样的周期性,有些清音和浊音的过渡帧是很难准确地判断是周期性还是非周期性的。

②在许多情况下,清音语音和低电平浊音语音段之间的过渡段是非常细微的,确认它是极其困难的。

③ 从语音信号中去除声道影响,直接取出仅和声带振动有关的激励信号的信息并不容易,例如声道的共振峰有时会严重影响激励信号的谐波结构。这种影响在发音器官快速动作而共振峰也快速改变时,对基音检测是最具危害性的。

同时共振峰检测也会出现不准确性:
① 并不是所有的谱峰都为共振峰;

② 带宽的计算。当两个共振峰很靠近时,发生谱重叠,很难从频谱曲线计算共振峰的带宽。而且峰值检测器认为此处只存在一个共振峰。

语音参数的提取是语音识别的基础,所以提取参数的好坏直接影响着语音识别系统的性能,倒谱技术在语音识别中所占的比重也越来越重要,通过对这个课题的把握,基本上了解了语音的结构,和倒谱处理在语音信号的作用。

致 谢    在本文的撰写过程中xxx老师作为我的指导老师,她治学严谨,学识渊博,视野广阔,为我营造了一种良好的学术氛围。置身其间,耳濡目染,潜移默化,使我不仅接受了全新的思想观念,树立了明确的学术目标,领会了基本的思考方式,掌握了通用的研究方法,而且还明白了许多待人接物与为人处世的道理。其严以律己、宽以待人的崇高风范,朴实无华、平易近人的人格魅力,与无微不至、感人至深的人文关怀,令人如沐春风,倍感温馨。正是由于她在百忙之中多次审阅全文,对细节进行修改,并为本文的撰写提供了许多中肯而且宝贵的意见,本文才得以成型。同组的同学互相督促,探究设计中遇到的课题,是整个设计中最活跃的组成元素,在同学的讨论中我学到了许多思考的角度,真心谢谢她们。

   在此特向x老师致以衷心的谢意!向她无可挑剔的敬业精神、严谨认真的治学态度、深厚的专业修养和平易近人的待人方式表示深深的敬意! 参考文献 [1]张雪英 数字语音处理及MATLAB仿真 北京:电子工业出版社.2010 [2] 胡航 语音信号处理 哈尔滨 :
哈尔滨工业大学出版杜.2000 [3] 赵力 语音信号处理 北京:
机械工业出版社.2005 [4] 易克初,田斌,付强 语音信号处理 北京:国防工业出版社.2001 [5] 占君,张倩,满谦 MATLAB函数查询手册 北京:机械工业出版社.2011 [6] 赵毅 ,尹雪飞,陈克安 一种新的基于倒谱的共振峰频率检测算法 应用声学第29卷第6期2010年11月 [7]张琨,高思超,毕靖 MATLAB 2010从入门到精通 北京:电子工业出版社.2011 [8]高西全 丁玉美 语音信号处理(第三版)西安:西安电子科技大学出版社.2008 附录A clear all; [s,fs,nbit]=wavread('C:\Documents and Settings\Administrator\桌面\woo.wav'); b=s'; x=b(5000:5399); N=length(x); S=fft(x); Sa=log(abs(S)); sa=ifft(Sa); ylen=length(sa); for i=1:ylen/2 sal(i)=sa(ylen/2+1-i); end for i=(ylen/2+1):ylen sal(i)=sa(i+1-ylen/2) end %绘图 figure(1); subplot(2,1,1); plot(x); axis([0,400,-0.5,0.5]) title('截取的语音段'); xlabel('样点数'); ylabel('幅度'); subplot(2,1,2); time2=[-199:1:-1,0:1:200]; plot(time2,sal); axis([-200,200,-0.5,0.5]) title('截取语音的倒谱'); xlabel('样点数'); ylabel('幅度'); 附录B clear all; [y,fs,nbits]=wavread('C:\Documents and Settings\Administrator\桌面\woo3.wav'); time1=1:length(y); frameSize=floor(50*fs/1000);%帧长 startIndex=round(4500);%起始序号 endIndex=startIndex+frameSize-1;%结束序号 frame=y(startIndex:endIndex);%取出该帧 frameSize=length(frame); frame2=frame.*hamming(length(frame));%加汉明窗 rwy=rceps(frame2);%求倒谱 ylen=length(rwy); cepstrum=rwy(1:ylen/2); for i=1:ylen/2; cepstrum1(i)=rwy(ylen/2+1-i); end for i=(ylen/2+1):ylen cepstrum1(i)=rwy(i+1-ylen/2); end %基音检测 LF=floor(fs/500);%基音周期的范围是70~500Hz HF=floor(fs/70); cn=cepstrum(LF:HF); [mx_cep ind]=max(cn); if mx_cep>0.08&ind>LF a=fs/(LF+ind); else a=0; end pitch=a %画图 figure(1); subplot(3,1,1); plot(time1,y); title('语音波形'); axis tight ylim=get(gca,'ylim'); line([time1(startIndex),time1(startIndex)],ylim,'color','r'); line([time1(endIndex),time1(endIndex)],ylim,'color','r'); xlabel('样点数'); ylabel('幅度'); subplot(3,1,2); plot(frame); axis([0,400,-0.5,0.5]) title('一帧语音'); xlabel('样点数'); ylabel('幅度'); subplot(3,1,3); time2=[-199:1:-1,0:1:200]; plot(time2,cepstrum1); axis([-200,200,-0.5,0.5]) title('一帧语音的倒谱'); xlabel('样点数'); ylabel('幅度'); 附录C clear all; [y,fs,nbits]=wavread('C:\Documents and Settings\Administrator\桌面\woo2.wav'); frameSize=floor(40*fs/1000);%帧长 startIndex=round(45000);%起始序号 endIndex=startIndex+frameSize-1;%结束序号 frame=y(startIndex:endIndex);%取出该帧 frameSize=length(frame); frame2=frame.*hamming(length(frame));%加汉明窗 rwy=rceps(frame2);%求倒谱 ylen=length(rwy); cepstrum=rwy(1:ylen/2); %基音检测 LF=floor(fs/500); HF=floor(fs/70); cn=cepstrum(LF:HF); [mx_cep ind]=max(cn); %共振峰检测核心代码:
%找到最大的突起的位置 NN=ind+LF; ham=hamming(NN); cep=cepstrum(1:NN); ceps=cep.*ham;%汉明窗 formant1=20*log(abs(fft(ceps))); formant(1:2)=formant1(1:2); for t=3:NN %--do some median filtering z=formant1(t-2:t); md=median(z); formant2(t)=md; end for t=1:NN-1 if t<=2 formant(t)=formant2(t); else formant(t)=formant2(t-1)*0.25+formant2(t)*0.5+formant2(t+1)*0.25; end end subplot(3,1,1); plot(cepstrum); title('倒谱'); xlabel('样点数'); ylabel('幅度'); axis([0,160,-0.5,0.5]) spectral=20*log10(abs(fft(frame2))); subplot(3,1,2); xj=(1:length(spectral)/2)*fs/length(spectral); plot(xj,spectral(1:length(spectral)/2)); title('频谱'); xlabel('频率/Hz'); ylabel('幅度/dB'); axis([0,4000,-100,50]) subplot(3,1,3); xi=(1:NN/2)*fs/NN; plot(xi,formant(1:NN/2)); title('平滑对数幅度谱'); xlabel('频率/Hz'); ylabel('幅度/dB'); axis([0,4000,-80,0])

《基于MATLAB的语音倒谱分析毕业设计.doc》
将本文的Word文档下载到电脑,方便收藏和打印
推荐度:

文档为doc格式

相关热搜

《基于MATLAB的语音倒谱分析毕业设计.doc》

VIP请直接点击按钮下载本文的Word文档下载到电脑,请使用最新版的WORD和WPS软件打开,如发现文档不全可以联系客服申请处理。

文档下载
VIP免费下载文档

浏览记录