模式识别导论课程论文(共47页)_第1页
模式识别导论课程论文(共47页)_第2页
模式识别导论课程论文(共47页)_第3页
模式识别导论课程论文(共47页)_第4页
模式识别导论课程论文(共47页)_第5页
已阅读5页,还剩50页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、模式识别(m sh sh bi)导论课程(kchng)论文题 目 基于(jy)Matlab的语音识别系统 院(系) 专业学生名单 指导教师 指导教师工作单位 起讫日期 年 月 至 月 摘 要语音(yyn)是人的自然属性之一,是人类信息交流的基本手段(shudun)。语音中包含有多种信息,如语义信息、语言信息、说话人信息、情感信息等。语音识别(shbi)就是从语音信号中识别出这些信息。按照任务的不同,语音识别可以分为四个方面:说话人识别、语种识别、关键词识别和连续语音识别。语音识别是以声音作为研究对象,它是语音信号处理的一个重要研究方向,是模式识别的一个分支涉及到生理学、心理学、语言学、计算机科

2、学以及信号处理等诸多领域,甚至还涉及到人的体态语言(如人在说话时的表情、手势等行为动作可帮助对方理解),其最终目标是实现人与机器进行自然语言通信。语音识别作为一门兼具理论价值与应用价值的研究课题,得到越来越多研究者的兴趣和关注,各种各样的语音识别方法层出不穷。本次课程论文通过分析MFCC系数和语音识别的基本原理,应用Matlab 设计实验程序并结合VQ矢量量化模型完成语音识别的VQ实现。本次课程论文通过语音识别的相关的背景、步骤以及原理,设计了三个matlab语音识别实验,并包含了实验的流程和结果。在附录中附有程序代码,以供参考。关键词:语音识别;MatlabABSTRACTVoice is

3、one of the peoples natural attribute, which is the basic means of communication.Voice contains many information, such as semantic information, language information, the speaker, effective information and so on. Voice recognition is to recognize these information from the voice signal. According to t

4、he different roles, voice recognition can be divided to four floor, including the speaker recognition, the type of voice recognition, the key words recognition and the recognition of continuous voice.The voice recognition bases on the voice as a research object, is an important direction for the voi

5、ce recognition process, which is a branch of model recognition involving physiology, psychology, philology, computer science, signal process and other fields, even involving body language. The final target is to make the machine communicate with human beings.In recent years, face recognition researc

6、h topics, which have both theoretical value and application value, attracted more and more researchers. A wide variety of face recognition methods emerge in an endless stream.This thesis analyzes the basic principle of the VQ and voice recognition. And the experimental procedure is designed with mat

7、lab for completing new methods in voice recognition based on VQ.This paper describes the analysis and design background, steps as well as the principle of the process and design three matlab experiments for the voice recognition, which contains experiment process and results. With program code in th

8、e appendix for reference.Key words:Voice recognition; Matlab; 目 录1.绪论(xln)11.1课题研究(ynji)的目的11.2课题(kt)研究的意义11.3国内外研究概况2原理分析52.1语音识别系统的特征提取52.2语音识别系统的分类模型8语音识别的整体过程113.1 语音识别系统的结构113.2语音信号预处理113.3语音信号的特征提取153.4用矢量量化聚类法生成码本163.5VQ的说话人识别174.实验设计184.1实验一184.2实验二184.3实验三19实验结果215.1实验一215.2实验二235.3实验三26总结2

9、77.程序代码28致谢45参考文献45 1.绪论(xln)1.1课题研究(ynji)的目的近年来,语音(yyn)识别作为一门兼具理论价值与应用价值的研究课题,得到越来越多研究者的兴趣和关注,各种各样的语音识别方法层出不穷。 本次课程论文通过语音识别的基本原理,应用Matlab 设计实验程序。1.2课题研究的意义语音识别是以声音作为研究对象它是语音信号处理的一个重要研究方向,是模式识别的一个分支涉及到生理学、心理学、语言学、计算机科学以及信号处理等诸多领域,甚至还涉及到人的体态语言(如人在说话时的表情、手势等行为动作可帮助对方理解),其最终目标是实现人与机器进行自然语言通信。语音识别是近年来十分

10、活跃的一个研究领域。语音识别技术作为一种重要的人机交互手段,辅助甚至取代传统的键盘、鼠标等输入设备,在个人计算机和手机等数码产品上进行文字录入和操作控制。同时在手持式PDA、智能家电、工业现场控制等应用场合,语音识别技术则有更为广阔的发展前景。由于计算机功能的日益强大,存储技术、语音算法技术和信号处理技术的长足进步,以及软件编程水平的提高,语音识别技术已经取得突破性的进展。语音识别技术的应用主要有以下两个方面。一是用于人机交流。语音识别技术的采用,改变了人与计算机的互动模式,人们只需动动口,就能打开或关闭程序,改变工作界面。这种使电脑人性化的结果是使人的双手得到解放,使每个人都能操作和应用计算

11、机。语音识别技术的另一方面应用便是语音输入和合成语音输出。现在,已经出现能将口述的文稿输入计算机并按指定格式编排的语音软件,它比通过键盘输入在速度上要提高24倍。装有语音软件的电脑还能通过语音合成把计算机里的文件用各种语言“读”出来,这将大大推进远程通信和网络电话的发展。在现阶段,语音技术主要用于电子商务、客户服务和教育培训等领域,它对于节省人力、时间,提高工作效率将起到明显的作用。能实现自动翻译的语音识别系统目前也正在研究、完善之中。语音识别是一门交叉学科。近二十年来,语音识别技术取得显著进步,开始从实验室走向市场。人们预计,未来 10 年内,语音识别技术将进入工业、家电、通信、汽车电子、医

12、疗、家庭服务、消费电子产品等各个领域。1.3国内外研究(ynji)概况20世纪50代,就有人(yu rn)提出“口授(kushu)打印机”的设恕。可以说,这是有关语音识别技术最早构想。语音识别技术经历了语音识别、语音合成以及自然语音合成3个阶段。从原理上讲,似乎让计算机识别人的语言并不难,其实困难还是不少的。例如,不同的人读同一个词所发出的音在声学特征上却不完全相同;即便是同一个人,右不同情况下对同一个字的发音也不相同。加上人们讲话时常有不合语法规律的情况,有时还夹杂些俗语,或省略一些词语,而且语速变化不定。所有这些,在我们听别人讲话时似乎都不成为问题,但让机器理解则很是困难。按照任务的不同,

13、语音识别可以分为四个方面:说话人识别、语种识别、关键词识别和连续语音识别。1952年贝尔研究所Davis等人研究成功了世界上第一个能识别10个英文数字发音的实验系统。1960年英国的Denes等人研究成功了第一个计算机语音识别系统。大规模的语音识别3 研究是在进入了70年代以后,在小词汇量、孤立词的识别方面取得了实质性的进展。进入80年代以后,研究的重点逐渐转向大词汇量、非特定人连续语音识别。在研究思路上也发生了重大变化,即由传统的基于标准模板匹配的技术思路开始转向基于统计模型 (HMM)的技术思路。此外,再次提出了将神经网络技术引入语音识别问题的技术思路。进入90年代以后,在语音识别的系统框

14、架方面并没有什么重大突破。但是,在语音识别技术的应用及产品化方面出现了很大的进展。DARPA(Defense Advanced Research Projects Agency)是在70年代由美国国防部远景研究计划局资助的一项10年计划,其旨在支持语言理解系统的研究开发工作。到了80年代,美国国防部远景研究计划局又资助了一项为期10年的DARPA战略计划,其中(qzhng)包括噪声下的语音识别和会话(口语)识别系统,识别任务设定为“(1000单词)连续语音(yyn)数据库管理”。到了90年代,这一DARPA计划仍在持续进行中。其研究重点已转向识别装置(zhungzh)中的自然语言处理部分,识别

15、任务设定为“航空旅行信息检索”。日本也在1981年的第五代计算机计划中提出了有关语音识别输入-输出自然语言的宏伟目标,虽然没能实现预期目标,但是有关语音识别技术的研究有了大幅度的加强和进展。1987年起,日本又拟出新的国家项目高级人机口语接口和自动电话翻译系统。中国发展中国的语音识别研究起始于1958年,由中国科学院声学所利用电子管电路识别10个元音。直至1973年才由中国科学院声学所开始计算机语音识别。由于当时条件的限制,中国的语音识别研究工作一直处于缓慢发展的阶段。进入80年代以后,随着计算机应用技术在中国逐渐普及和应用以及数字信号技术的进一步发展,国内许多单位具备了研究语音技术的基本条件

16、。与此同时,国际上语音识别技术在经过了多年的沉寂之后重又成为研究的热点,发展迅速。就在这种形式下,国内许多单位纷纷投入到这项研究工作中去。1986年3月中国高科技发展计划(863计划)启动,语音识别作为智能计算机系统研究的一个重要组成部分而被专门列为研究课题。在863计划的支持下,中国开始了有组织的语音识别技术的研究,并决定了每隔两年召开一次语音识别的专题会议。从此中国的语音识别技术进入了一个前所未有的发展阶段。目前在大词汇语音识别方面处于领先地位的IBM语音研究小组,就是在70年代开始了它的大词汇语音识别研究工作的。AT&T的贝尔研究所也开始了一系列有关非特定人语音识别的实验。这一研究历经1

17、0年,其成果是确立了如何制作用于非特定人语音识别的标准模板的方法。这一时期所取得的重大进展有:隐式马尔科夫模型(HMM)技术的成熟和不断完善成为语音识别的主流方法。以知识为基础的语音识别的研究日益受到重视。在进行连续语音识别的时候,除了(ch le)识别声学信息外,更多地利用各种语言知识,诸如构词、句法、语义、对话背景方面等的知识来帮助进一步对语音作出识别和理解。同时在语音识别研究领域,还产生了基于统计概率的语言模型。人工神经网络在语音识别中的应用研究的兴起。在这些研究中,大部分采用基于反向传播算法(BP算法)的多层感知网络。人工神经网络具有区分复杂的分类边界的能力(nngl),显然它十分有助

18、于模式划分。特别是在电话语音识别方面,由于其有着广泛的应用前景,成了当前语音识别应用的一个热点。另外,面向个人用途的连续语音听写机技术也日趋完善。这方面,最具代表性的是IBM的ViaVoice和Dragon公司的Dragon Dictate系统。这些系统具有(jyu)说话人自适应能力,新用户不需要对全部词汇进行训练,便可在使用中不断提高识别率。中国的语音识别技术的发展 :在北京有中科院声学所、自动化所、清华大学、北方交通大学等科研机构和高等院校。另外,还有哈尔滨工业大学、中国科技大学、四川大学等也纷纷行动起来。现在,国内有不少语音识别系统已研制成功。这些系统的性能各具特色。 = 1 * GB3

19、 * MERGEFORMAT 在孤立字大词汇量语音识别方面,最具代表性的要数92年清华大学电子工程系与中国电子器件公司合作研制成功的THED-919特定人语音识别与理解实时系统。 = 2 * GB3 * MERGEFORMAT 在连续语音识别方面,91年12月四川大学计算机中心在微机上实现了一个主题受限的特定人连续英语汉语语音翻译演示系统。 = 3 * GB3 * MERGEFORMAT 在非特定人语音识别方面,有清华大学计算机科学与技术系在87年研制的声控电话查号系统并投入实际使用。2.原理(yunl)分析2.1 语音(yyn)识别系统的特征提取语音识别系统中的特征提取即提出适合分类的某些信

20、息特征(如说话(shu hu)人,或语言特征,或关键词特征),次特征应能有效地区分不同的模式,而且对同种方式的变化保持相对稳定。目前的语音识别系统主要依靠较低层次的声学特征进行识别。语音识别特征大致可以分为3类:(1)线性预测系数及其派生参数,如线性预测系数(LPC)、线谱对系数、线性预测倒谱系数(LPCC)及其组合参数。(2)由语音频谱直接导出的参数,如基音(Pitch)及其轮廓、美尔频率倒谱系数(MFCC)、感知线性预测(PLP)参数、口音敏感倒谱系数(ASCC)。(3)混合参数。混合参数由以上不同的参数组成的矢量。语音识别中几种常用的参数:线性预测系数(LPC)语音产生的线性预测模型是2

21、0世纪50年代提出的,其中,声道和嘴唇的声辐射以及声门激励的组合谱效应被模型化为一个时变数字滤波器,其稳态系统传输函数为 ,该式子把语音信号s(n)建模成一个P阶的AR过程。对于浊音段,此系统受准周期冲激串激励;对于清音段,该系统则受随机噪声序列激励。此模型的参数有浊音/清音判决、浊音语音的基音周期、增益常数G及数字滤波器参数。利用该传输函数可得到语音信号s(n)合成的差分方程为,可以看出,s(n)是前P个语音(yyn)信号采样值s(n-1),s(n-2),s(n-P)的线性组合,因此(ync)该语音产生模型通常被称为线性预测(LP)模型或自回归(AR)模型。(k=1,2,P)为线性预测系数,

22、是从语音信号中提取出来的。声道形状在时间上是变化的,所以预测系数也是时变的。根据语音信号的短时平稳性,可认为(rnwi)语音在每一个分析帧(1030ms)上是非时变的,从而计算得到一组预测系数。计算预测系数的常用方法是自相关法,其思想为使预测误差e(n)的均方值最小。,其中:,称做s(n)的预测值或估计值。计算的准则是使极小,故令得到一个线性方程组: 其中称为语音短时自相关系数,N为语音帧的样点数,P为预测器阶数,用德宾(Durbin)算法解方程式即可得(k=1,2,P)。Levinson-Durbin递推算法求解过程:采用Durbin算法(sun f)递推时,从零阶预测开始,此时P=0,可以

23、(ky)逐步递推出一直(yzh)到。最后用确定增益G值。其中各阶预测系数的最后一个值被定义为偏相关系数,整个递推过程为(1)(2)(3)(4)(5)如果iP则转到(2),如果i=P则终止计算。最终解为,其中代表第n帧的自相关函数,表示第i阶预测器的第j个预测系数,计算结束后会得到各阶预测器的预测系数、反射系数和各阶预测误差功率。线性预测倒谱系数(LPCC)同态信号处理就是将非线性问题转化为线性问题来进行处理的一种方法。对语音信号产生过程建模成一个激励信号通过时变系统的过程,即一个卷积的过程,卷积作为一个非线性问题可使用同台处理来解决。LPC系数可以用来估计语音信号的倒谱,这也是语音信号短时倒谱

24、分析中一种特殊的处理方法。声道传输函数H(z)的冲激响应为h(n),首先求序列h(n)的倒谱。因为H(z)是最小相位的,所以可以求出和之间的递推关系为 由上式可以直接(zhji)从预测系数推得倒谱,由于这个倒谱是从线性预测系数得到的,因此又称之为LPC倒谱(LPCC)。由于LPCC利用(lyng)了线性预测中声道传输函数H(z)的最小相位特性,因此避免了一般同态处理中求复对数而带来的相位卷绕的问题。美尔频率(pnl)倒谱系数(MFCC)MFCC不同于LPCC,它是在频谱上采用滤波器组的方法计算出来的,这组滤波器在频率的美尔(Mel)坐标上是等带宽的。这是因为人类在对1000Hz以下的声音频率范

25、围的感知遵循近似线性关系。美尔刻度与频率的关系式为 MFCC正是基于这个现象提出的,它的计算过程如下图所示图2 MFCC的计算过程语音信号在经过加窗处理后变为短时信号,用FFT计算它的能量谱之后,通过一个具有40个滤波器的滤波器组,前13个滤波器在1000Hz以下是线性划分的,后27个滤波器在1000Hz以上是在美尔坐标上线性划分的。如果表示第k个滤波器的输出能量,则美尔频率倒谱在美尔刻度谱上可以采用修改的离散余弦变换(DCT)求得,其中,P为MFCC参数的阶数。2.2 语音识别系统的分类模型 模型建立是指在训练阶段用合适的模型来表征这些参数,使得模型能够代表该语言的语音特性。对模型的选择主要

26、应从语音的类型、所期望的性能、训练和更新的难易程度以及计算量和存储量等方面综合考虑。可分为以下四类:模板匹配模型:从每种模型的训练语句中提取相应的特征矢量,这些特征矢量称为模板。识别时,从语音信号中按同样的处理法提取测试模板,并且与其(yq)相应的参考模板相比较。模板匹配模型的不足之处在于不能全面地反映样本分布及统计特性,适应性较差。典型的模板匹配模型有最邻近(NN)模型、动态时间规整(DTW)模型和矢量量化(VQ)模型。概率统计生成模型(又称参数模型):语音信号(xnho)具有短时平稳性,通过对稳态特征如基音、声门增益、低阶反射系数的统计分析,可以利用均值、方差等统计量和概率密度函数进行分类

27、判决。概率统计生成模型采用某种概率密度函数来描述语音特性在特性空间的分布情况,并以该概率密度函数的一组参数作为语音模型。概率统计生成模型由于考虑了语音的统计特性,能较全面地反映语音的统计信息,其优点是不用对特征参量在时域上进行规整。典型的概率统计生成模型有隐马尔可夫模型(HMM)和高斯混合模型(GMM)。神经网络模型(ANN):人工神经网络在某种程度上模拟了生物的感知特性,它是一种分布式并行处理结构的网络模型,具有自组织和自学习能力、很强的复杂分类边界区分能力以及对不完全信息的稳健性,其性能近似理想的分类器。其缺点是训练时间长,动态时间规整哪里弱。目前(mqin)常用的神经网络模型有多层次感知

28、器(MLP)、径向基函数(RBF)网络、自组织映射(SOM)网络和支持向量机(SVM)网络等。融合模型:把以上分类方法与不同特征进行有机组合可显著提高语音识别的性能。动态时间规整(DTW)模型:由于语速、语调、重音和韵律的变化,语音信息存在时变因素,从而使得测试模板和参考模板在时间尺度上可能不完全一致。因此,需要将识别模板和参考模板进行时间对齐,按照某种距离测度计算两模板间的相似程度。模板序列与输入序列不均匀匹配得分z定义为 ,其中,模板标记j(i)是由基于最邻近原则的动态时间规整法(DTW)给出的。DTW算法使z最小化,将两个信号进行时间上的对齐。在时间对齐后,最终的距离和是匹配得分基础。矢

29、量(shling)量化(VQ)模型:一般采用LBG算法把训练数据进行聚类生成码本,即参考模板的集合。识别(shbi)时,对输入矢量进行矢量量化,以量化产生的失真度作为判决标准。L帧测试语音矢量的匹配(ppi)得分为 ,其中,C是参考模板的集合。VQ模型不需对要时间进行对齐,具有复杂度低、精度较高以及判断速度快的优点。3、隐马尔可夫模型(HMM):隐马尔可夫模型把语音建模成由可观察的符号序列组成的随机过程,符号序列是发声系统状态序列的输出。HMM为有限状态的随机过程,从状态到状态的转移概率为;对应于状态,语音特征x(随机向量)的概率密度函数为。由给定模型M产生具有L帧语音特征向量(连续)的似然值

30、为,其中,表示所有可能状态的集合。对于离散的语音特征向量,和为相应的概率。在使用HMM识别时,为每个说话人建立发声模型,通过训练得到状态转移概率矩阵和语音特征向量的概率密度矩阵。识别时计算未知语音在状态转移过程中的最大似然值或概率,根据最大似然值或概率的模型进行判决。高斯混合模型(GMM):高斯混合模型本质上是一种多维概率密度函数,可以用来表示语音特征矢量的分布。一个具有M个混合数的D维GMM,其概率密度函数用M个高斯分量的加权和来表示,即 ,其中,x是一个D维德观测矢量;为混合权值,满足 ;为D维高斯密度函数,即其中(qzhng),为均值(jn zh)矢量;为协方差矩阵(j zhn);D是参

31、数的维数高斯混合模型可由各均值矢量、协方差矩阵及混合权值来描述,可表示为三元式 在GMM模型中,首先对特征矢量进行聚类,把每一类看做是一个多维高斯分布函数;然后,求出每一类的均值、协方差矩阵和出现的概率,得到每种模式的训练模板;最后,将观测序列代入每个模板,对应于最大的后验概率的模板作为所识别的对象。3.语音识别的整体过程3.1 语音识别系统的结构典型的语音识别系统结构框图如下图所示,一个完整的语音识别系统包括预处理、特征提取、模型建立、模式匹配和判决规则(guz)等5个部分。图1 语音(yyn)识别系统的结构框图 语音识别是属于人工智能领域中的一项技术(jsh),从本质上讲,语音识别技术是一

32、个语音信号模式识别问题,它由训练(或注册)和识别(或测试)两个阶段完成。从训练语音中提取语音特征、建立参考模型并储存的过程称为训练阶段;从待识别语音中提取语音特征,依据参考模型进行比较和判决的过程称为识别阶段。3.2 语音信号预处理 实际的语音信号是模拟信号,因此在对语音信号进行数字处理之前,首先要将模拟语音信号s(t)以采样周期T采样,将其离散化为s(n),采样周期的选取应根据模拟语音信号的带宽来确定,以避免信号的频域混叠失真。在对离散后的语音信号进行量化处理过程中会带来一定的量化噪声和失真。语音信号的预处理包括预加重和加窗分帧处理。3.2.1 语音信号预加重处理 预加重的目的是提升高频部分

33、,使信号的频谱变得平坦,保持在低频到高频的整个频带中,能用同样的信噪比求频谱,以便于频谱分析或声道参数分析。用预加重数字滤波器来实现,它一般是一阶的数字滤波器:,其中,为预加重系数,一般3.2.2 语音信号(xnho)分帧处理进行预加重数字滤波器处理之后,接下来就要进行加窗分帧处理。分帧是用可移动的有限长度窗口进行加权的方法来实现的,即用一定的窗函数w(n)来乘以s(n),从而形成(xngchng)加窗语音信号在语音信号数字处理(chl)中常用的窗函数有两种,一种是矩形窗,另一种是汉明窗。矩形窗 ,其中,N为帧长clear all;x=linspace(0,100,1000); %在0到100

34、的横坐标间取10000个点h=zeros(10000,1); %为矩阵h赋0值h(1001:8000)=1; %矩形窗长,窗内取值为1subplot(211);plot(h); %画时域波形title(矩形窗时域波形,fontsize,18);xlabel(样点数,fontsize,18);ylabel(幅度,fontsize,18);axis(0,10000,-1,2);w=h(1001:1060); %取窗长内的60个数据点W=fft(w,1024); %对时域信号进行1024点的傅里叶变换W2=W/W(1); %幅度(fd)归一化W3=20*log10(abs(W2); %对归一化幅度(

35、fd)取对数W4=2*0:511/1024; %频率(pnl)归一化subplot(212);plot(W4,W3(1:512); %画幅频特性图title(矩形窗幅频特性,fontsize,18);xlabel(归一化频率,fontsize,18);ylabel(幅度/dB,fontsize,18);汉明窗 在确定了窗函数以后,对语音信号的分帧处理,实际上就是对各帧进行某种变换或运算。设这种变化或运算用T表示,x(n)为输入语音信号,w(n)为窗序列,h(n)是与w(n)有关的滤波器,则各帧经处理后的输出可以表示为,这样经过上述处理过程,语音信号就已经被分割成一帧一帧的加过窗函数的短时信号,

36、然后再把每一个短时语音信号帧看成平稳的随机信号,利用数字信号处理技术来提取语音特征参数。在进行处理时,按帧从数据区中取出数据,处理完成后再取下一帧,等等,最后得到由每一帧参数组成的语音特征参数的时间序列。clear all;h=hamming(60); %取60个点的汉明窗值subplot(211);plot(h); %画时域波形title(汉明窗时域波形,fontsize,18);xlabel(样点数,fontsize,18);ylabel(幅度(fd),fontsize,18);H=fft(h,1024); %对时域信号进行(jnxng)1024点的傅里叶变换H1=H/H(1);H2=20

37、*log10(abs(H1);H3=2*0:511/1024;subplot(212);plot(H3,H2(1:512); %画幅频特性图title(汉明窗幅频特性,fontsize,18);xlabel(归一化频率(pnl),fontsize,18);ylabel(幅度/dB,fontsize,18);3.2.3 端点检测语音信号起止点的判别式任何一个语音识别系统必不可少的组成部分。因为只有准确地找出语音段的起始点和终止点,才有可能使采集到的数据是真正要分析的语音信号,这样不但减少了数据量、运算量和处理时间,同时也有利于系统识别率的改善。常用的端点检测方法有两种:短时平均幅度 端点检测中需

38、要计算信号的短时能量,由于短时能量的计算涉及到平方运算,而平方运算扩大了振幅不等的任何相邻取样值之间的幅度差别,给窗的宽度选择带来了困难,因为必须用较宽的窗才能对取样间的平方幅度起伏有较好的平滑效果,然而又可能导致短时能量反映不出语音能量的时变特点。而用短时平均幅度来表示语音能量,在一定程度上可以克服这个弊端。短时平均过零率 当离散信号的相邻两个取样值具有不同的符号时,便出现过零现象,单位时间内过零的次数叫做过零率。如果离散时间的包络是窄带信号,那么过零率可以比较准确地反映该信号的频率。在宽带信号情况下,过零率只能粗略地反映信号的频谱特性。端点检测系统包括语音预处理模块、能量和过零率参数提取模

39、块、端点检测模块,下图为基于能量和过零率的两级三门限判决的语音端点检测系统的框架。基于能量和过零率的语音端点检测算法步骤(bzhu)如下: = 1 * GB3 * MERGEFORMAT 语音信号(xnho)进行预加重和分帧处理,对语音的高频部分进行了加重,增加了语音的高频分辨率,同时将分帧后的信号记为,n为离散语音信号时间(shjin)序列,N为帧长 = 2 * GB3 * MERGEFORMAT 计算每一帧语音信号的短时能量和短时过零率 = 3 * GB3 * MERGEFORMAT 考察语音的平均能量设置一个较高的门限,用以确定语音开始;然后再根据背景噪声平均能量确定一个稍低门限,用以确

40、定第一级中的语音结束点。完成第一级判决,然后根据背景噪声的平均过零率来设置第三个门限,最终判断出语音的准确的边界点。3.3 语音识别的特征提取 语音线性预测的基本思想是:由于语言样点之间存在相关性,所以可以用过去的样点值来预测现在或未来的样点值,即一个语音信号的抽样值可以用过去若干个取样值得线性组合来逼近。通过使实际语音抽样和线性预测抽样之间的误差在某个准则下达到最小值来决定唯一的一组预测系数。3.3.1 LPC谱估计 根据语音信号产生的模型,语音的功率谱等于激励源功率谱与各极点线性滤波器频率特性的模的平方的乘积。由于激励源是准周期冲击序列或白噪声,其功率是平坦的,因此,语音的功率谱主要由全极

41、点线性滤波器频率特性决定。所以,LPC可以看作是对语音信号的短时谱进行估计的一种有效方法。3.3.2 LPC倒谱估计语音信号的倒谱分析就是求取语音倒谱特征系数的过程,它可以通过同态处理来实现。同态信号处理也称为同态滤波,它实现了将卷积关系变换为求和关系的分离处理,即解卷。对语音信号进行解卷,可将语音信号的声门激励信息及声道响应信息分离出来,从而求得声道共振特征和基音周期。当预测阶数很大时,语音信号的短时谱满足,因此可以认为包含了语音信号谱的包络信息,即可近似认为等价于原始信号x(n)的短时谱,通过对倒谱的分析,可以分别估计语音信号短时谱包络和声门激励参数,实现方法如下:直接从LPC系数估计(g

42、j)语音信号的短时谱包络先通过信号做FFT、对数变换运算(yn sun),然后再求得逆FFT以及选用(xunyng)适当的辅助因子获得倒谱,并用低时窗取出谱包络信息经线性预测分析取得H(z),然后递推出LPC倒谱,从而求得短时谱包络。3.3.2 MFCC参数MFCC参数的提取过程如下:对语音信号进行分帧、加窗,然后作离散时间傅里叶变换,获得频谱分布信息。设语音信号为,其中,x(n)为语音信号,N为傅里叶变换的点数。求频谱幅度的平方,得到能量谱将能量谱通过一组Mel尺度的三角形滤波器组。定义一个有M个滤波器的滤波器组(滤波器的个数和临界带的个数相近),采用的滤波器为三角滤波器,中心频率为f(m)

43、,m=1,2,3,M(本系统取M=100)计算每个滤波器组输出的对数能量 ,其中,为三角滤波器的频率响应经过离散弦变换(DCT)得到MFCC系数 ,MFCC系数个数通常取20-30,一般不用0阶倒谱系数,所以,在一般识别系统中,将其称为能量系数,并不作为倒谱系数,本系统选取20阶倒谱系数。3.4 用矢量量化聚类法生成码本将每个待识别的说话人看作是一个信源,用一个码本来表征。码本是从该说话人的训练序列中提取的MFCC特征矢量聚类而生成。只要训练的序列足够长,可认为这个码本有效地包含了说话人的个人特征,而与讲话的内容无关。本系统采用基于分裂的LBG算法设计VQ码本,为训练序列,B为码本。具体实现过

44、程如下:取提取出来的所有帧的特征矢量的均值(jn zh)作为第一个码字矢量B1;将当前的码本Bm根据以下规则(guz)分裂,形成2m个码字,其中(qzhng),m从1变化到当前码本的码字数,为分裂时的参数,(3)根据得到的码本把所有的训练序列(特征矢量)进行分类,然后按照下面两个公式计算训练矢量量化失真量的总和D以及相对失真(n为迭代次数,初始n=0,B为当前的码书),若相对失真小于某一阈值,迭代结束,当前的码书就是设计好的2m个码字的码书,转到(5),否则,转到下一步(4)重新计算各个区域的新型心,得到新的码书,转到(3)(5)重复(2)、(3)和(4)步,直到形成有M个码字的码书,其中D0

45、=100003.5 VQ的说话人识别 设未知的说话人的特征矢量,共有T帧是训练阶段形成的码书,表示第i个码书第m个码字,共有N个码书(即N个说话人),每个码书有M个码字。则对于说话人识别用来计算第i个说话人的平均量化失真Di,然后用同样的方法求出,则最终的识别结果就是Di最小者所对应的那个i,即是所识别的那个人。4.实验设计4.1 实验(shyn)一 先读入原始语音信号,显示其波形,然后通过预加重滤波器,即可得到预加重语音信号,之后就可以(ky)对语音信号进行短时平均幅度和平均过零率分析,同时,也可以通过相应的计算得到语音信号的部分特征参数(LPC谱和LPC倒谱)4.2 实验(shyn)二主程

46、序:MFCC函数(hnsh):分帧函数(hnsh)blockFrames:LBG算法的具体实现(shxin)过程详见3.3用矢量量化聚类法生成码本训练函数train:识别函数test:4.3 实验(shyn)三 本次实验用到的录音为5个不同男声,均为男歌手,各截取一段10秒钟的音频,实验过程(guchng)如下:打开matlab,使当前工作目录(ml)为录音及程序所在的文件夹(F:C盘文件DocumentsMATLAB)进行训练:在命令行窗口中输入:train:(F:C盘文件DocumentsMATLAB,5),回车进行测试:在命令行窗口中输入:test:(F:C盘文件DocumentsMAT

47、LAB,5,ans),回车由运行结果可知,5个人的识别中,全部都识别正确,成功率达到(d do)了100%,所以,可以认为是实现了语音识别的功能。5.实验(shyn)结果5.1 实验(shyn)一原始语音信号及其预加重处理后的波形如下图所示不同(b tn)矩形窗长对应的短时平均幅度如下图所示原始语音信号(xnho)及其短时平均过零率如下图所示语音信号(xnho)的短时谱和LPC谱估计如下图所示语音(yyn)信号的短时谱和LPC倒谱估计如下图所示5.2 实验(shyn)二运行(ynxng)主函数后,命令行窗口截图如下原始(yunsh)语音信号s1的波形如下图所示线性能量(nngling)谱及其对

48、数能量谱如下图所示不同帧长的对数能量谱如下图所示Mel尺度(chd)滤波器组如下图所示原始信号能量谱和Mel倒谱修正(xizhng)后的能量谱如下图所示说话人1和说话人2的二维声学(shngxu)向量图如下图所示说话人1和说话人2的二维声学向量(xingling)图及其码本如下图所示5.3 实验(shyn)三命令行窗口输入训练(xnlin)命令train后的截图如下图所示命令(mng lng)行窗口输入识别命令test后的截图如下图所示由运行结果可知,5个人的识别中,全部都识别正确,成功率达到了100%,所以,可以认为是实现(shxin)了语音识别的功能。6.总结经过(jnggu)本次课程(k

49、chng)论文学习(xux),我已对语音识别有了一定的研究,并对matlab软件更加熟悉。本次设计中主要涉及到了语音识别的基本原理、MFCC系数的算法、矢量量化聚类法、VQ的说话人识别技术以及matlab编程知识。本实验在matlab平台上基本实现了说话人的语音识别,从实验结果来看,基本上实现了预定的目的。本实验的程序代码参考了部分参考书籍和网上资料,但它们的代码在matlab上运行均会出现一些错误,无法正常运行,本人通过多次修改调试并改进,终于使程序成功运行,并得到较为理想的结果。当然,在这个过程中也碰到过很多各种各样的问题,一开始语音录入的时候,打算叫几个人来录音,但是后来觉得太麻烦了,直

50、接用一段音频(mp3音乐)就算了,但是问题来了,有时因为音频时间可能太长了导致程序运行的时间很长,或者电脑直接就死机了,后来想起kugou有个制作铃声的工具,然后就用这个工具将比较长的音频截成一段时间很短的音频,大概就是10秒钟,这样的话,我就只需找几个不同的歌手就可以达到不同说话人的目的了,还挺方便的。用matlab程序实现相应的功能其实难度还是挺大的,语音识别的大概流程和理论算法我都有一定的了解,但是用matlab语言描述出来,用matlab实现的话很多时候都是无从下手,尤其是涉及比较多的函数的时候,不过经过这次实验,我的matlab编程实现能力又得到了一定的提高。调程序的时候也真的很需要

51、耐心,因为这个问题解决了,再运行的时候,也继续会有下一个问题的出现,最怕的就是要验证问题是否解决的时候,程序需要运行很长的时间,程序运行完了,问题还没有解决,不断地修改,不断的等待,可能有时候真的会不耐烦,所以调程序需要耐心,我在调试生成码本那个程序的时候就是这样的,还好最终都能实现了。虽然本次实验的结果比较理想,但是语音识别还有很多的模型、方法和技术。本次实验只是模拟了说话人的识别,但是语音识别其实还有其它方面的任务,仍然有很大的空间值得去学习和提高。7.程序代码7.1 实验(shyn)一原始语音(yyn)信号及其预加重处理:clear all; %清空(qn kn)内容signal,fs,

52、bits=wavread(s1.wav); %读入语音x=double(signal); x=filter(1,-0.9375,1,x); %预加重滤波器subplot(211);plot(signal); %显示原始语音信号波形title(原始语音信号,fontsize,18);subplot(212);plot(x); %显示预加重语音信号波形title(预加重语音信号,fontsize,18);不同矩形窗长对应的短时平均幅度:clear all;signal,fs,bits=wavread(s1.wav); %读入语音framelength=50; %设定帧长framenumber=fi

53、x(length(signal)/framelength); %获取语音帧数for i=1:framenumber; %分帧处理 framesignal=signal(i-1)*framelength+1:i*framelength);%获取每帧的数据 M(i)=0; %每帧短时平均幅度置零 for j=1:framelength; M(i)=M(i)+abs(framesignal(j); %计算每帧信号的短时平均幅度 end;end;subplot(221);plot(M);xlabel(帧数,fontsize,18);ylabel(短时平均幅度,fontsize,18);legend(N

54、=50);clear M;framelength=100;framenumber=fix(length(signal)/framelength);for i=1:framenumber; framesignal=signal(i-1)*framelength+1:i*framelength); M(i)=0; for j=1:framelength; M(i)=M(i)+abs(framesignal(j); end;end;subplot(222);plot(M);xlabel(帧数,fontsize,18);ylabel(短时平均(pngjn)幅度,fontsize,18);legend(

55、N=200);clear M;framelength=200;framenumber=fix(length(signal)/framelength);for i=1:framenumber; framesignal=signal(i-1)*framelength+1:i*framelength); M(i)=0; for j=1:framelength; M(i)=M(i)+abs(framesignal(j); end;end;subplot(223);plot(M);xlabel(帧数,fontsize,18);ylabel(短时平均(pngjn)幅度,fontsize,18);legen

56、d(N=200);clear M;framelength=400;framenumber=fix(length(signal)/framelength);for i=1:framenumber; framesignal=signal(i-1)*framelength+1:i*framelength); M(i)=0; for j=1:framelength; M(i)=M(i)+abs(framesignal(j); end;end;subplot(224);plot(M);xlabel(帧数,fontsize,18);ylabel(短时平均(pngjn)幅度,fontsize,18);leg

57、end(N=400);语音信号的短时谱和LPC谱估计:clear all; %清空内容signal,fs,bits=wavread(s1.wav); %读入语音framelength=200; %设定帧长frameshift=80; %设定帧交叠部分的长度xn=enframe(signal,framelength,frameshift);%按照指定的要求分帧data=xn(:,70); %取第70帧语音进行分析rank=40; %设定(sh dn)阶数num=512; %设定(sh dn)频谱的点数a=lpc_coefficients(data,rank); %求预测(yc)系数b=1,-a,

58、zeros(1,num-rank-1); %对1-a1-a2,.,-ap进行补0处理Hw=abs(ones(1,num)./fft(b);Hw=abs(Hw); %取模求幅值Sw=abs(fft(data,num); %求语音信号的短时谱plot(Sw/max(Sw);axis(0,256,0,1);hold on;plot(Hw/max(Hw),r);title(语音信号的短时谱和LPC谱估计,fontsize,18);legend(语音信号的短时谱,lpc谱估计);enframe函数:function f=enframe(x,win,inc)%F = ENFRAME(X,LEN) spli

59、ts the vector X(:) up into frames. %Each frame is of length LEN and occupies one row of the output matrix. %The last few frames of X will be ignored if its length is not divisible by %LEN.It is an error if X is shorter than LEN.nx=length(x(:);nwin=length(win);if (nwin = 1) len = win;else len = nwin;

60、endif (nargin 1) w = win(:); f = f .* w(ones(nf,1),:);Endlpc_coefficients函数:function c=lpc_coefficients(s,p)%此函数的功能是用自相关法求信号s使均方预测误差为最小的预测系数%算法(sun f)为Durbin快速递推算法%注:s必须是一维向量(xingling) p为声道模型的阶数n=length(s); %获得(hud)信号长度 for i=1:p %测试向量 Rp(i)=sum(s(i+1:n).*s(1:n-i); %求向量的自相关函数 endRp_0=s*s; %即Rn(0)Ep=

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论