




已阅读5页,还剩30页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
毕业论文(设计)题 目:孤立词语音识别技术研究学生姓名:学 号:2012011257所在学院:机械与电子工程学院专业班级:电子信息科学与技术1202班届 别:2016届指导教师:方杰 皖西学院本科毕业设计(论文)创作诚信承诺书1.本人郑重承诺:所提交的毕业设计(论文),题目孤立词语音识别技术研究 是本人在指导教师指导下独立完成的,没有弄虚作假,没有抄袭、剽窃别人的内容; 2.毕业设计(论文)所使用的相关资料、数据、观点等均真实可靠,文中所有引用的他人观点、材料、数据、图表均已标注说明来源; 3. 毕业设计(论文)中无抄袭、剽窃或不正当引用他人学术观点、思想和学术成果,伪造、篡改数据的情况; 4.本人已被告知并清楚:学校对毕业设计(论文)中的抄袭、剽窃、弄虚作假等违反学术规范的行为将严肃处理,并可能导致毕业设计(论文)成绩不合格,无法正常毕业、取消学士学位资格或注销并追回已发放的毕业证书、学士学位证书等严重后果; 5.若在省教育厅、学校组织的毕业设计(论文)检查、评比中,被发现有抄袭、剽窃、弄虚作假等违反学术规范的行为,本人愿意接受学校按有关规定给予的处理,并承担相应责任。 学生(签名): 日期: 年 月 日目 录引言21语音识别系统的基础21.1语音识别的基本原理21.2语音识别系统的实现31.3语音信号的预处理41.3.1采样41.3.2预加重处理41.3.3分帧41.3.4加窗处理51.3.5端点检测61.4语音识别的特征提取71.5语音识别的模式匹配101.5.1模式匹配的几种方法101.5.2隐马尔可夫模型(HMM)111.5.3动态规划算法(DTW)132 语音信号的软件仿真162.1系统总体设计方案162.2设计内容172.2.1语音库的建立172.2.2 使用MATLAB处理语音信号172.2.3端点检测法的软件实现172.2.4 特征参数提取的软件实现193 MATLAB语音测试20参考文献:23孤立词语音识别技术研究学生:蒋召召(指导老师:方杰)(皖西学院机械与电子工程学院)摘要:语音识别是一种人机交互技术,它能通过机器识别和理解将语音信号转换为相应的命令或文本,以此实现人与计算机的“沟通”。孤立词语音识别系统主要应用于自动控制,如机器人操纵、通信设备控制、智能玩具操纵等。本文在基于MATLAB的基础上以隐马尔科夫模型为主要原理对孤立词语音命令识别系统进行了研究和实现。隐马尔科夫模型具有较高的识别准确度,在实现上也比较简单方便。通过最后的识别结果,证明这种该模型对语音识别技术的发展研究具有良好效果,最终实现了一个小词汇量的孤立词识别系统。关键词:语音识别;孤立词;隐马尔可夫模型;动态时间规整技术;MATLAB;GUIStudy of Isolated Word Speech Recognition Technology Student: Jiang Zhao Zhao(Faculty Adviser:Fang Jie)(College of mechanical and Electronic Engineering, West Anhui University)Abstract: Speech recognition is the technology of human-computer interaction. It is to make the machine through the understanding and recognition of the process of the speech signal into the corresponding text or command technology, then realize the communication between human and computer. The isolated word speech recognition system is mainly used in automatic control, such as robot manipulation, communication equipment, smart toys and so on. This paper focus on the research and implement of isolated command word recognition with HMM based on MATLAB. Through the simulation results, it is proved that this algorithm has good effect for the development of speech recognition technology, ultimately it designed a small vocabulary isolated word recognition system.Keywords: Speech Recognition; Isolated Word; HMM; DTW; MATLAB; GUI引言语音是人类进行交流的手段,因此,使用语音作为人机交互的途径对于使用者来说是最自然的一种方式,同时设备的小型化也要求省略键盘以节省体积。近年来,语音识别技术被广泛应用于工业控制、消费类产品及移动通信中,是高科技应用领域的研究热点。语音识别技术的创立是以上一个世纪Bell实验室研发的能识别一到十字母的实验为旗帜,近年来该技术发展也比较迅速。本文就是在这种情况下对特定人孤立词语音识别系统做了一些探讨。论文中首先介绍了孤立词语音识别系统的基本理论,分析了孤立词语音识别的基本工作过程。接着对语音识别中的关键技术加以介绍。在语音识别的实现方法上本文对DTW(动态时间规整算法)和HMM(隐马尔科夫模型)两种方法进行了比较,最终选定隐马尔科夫模型来实现语音命令的识别。最后阐述了系统的软件设计过程,对各部分给出了相应的软件流程图,并且对具体算法进行了MATLAB仿真论证。1语音识别系统的基础1.1语音识别的基本原理 对于语音识别技术根据任务的差异人们可以有不一样的处理方式,可是相关的模型和结构基本类似。语音识别系统主要包括语音信号的分析和预处理过程、特征提取、语音模板库的训练、模式匹配等几个部分。每个部分都很重要,因为它们会对语音识别的精确度高低产生重要的影响。比如说预处理部分中的端点检测的好坏在整个过程中就比较重要。而对于语音识别的方法,后续内容将会重点研究。下图是识别的基本理论框图:图 1 语音识别系统的原理图1.2语音识别系统的实现语音识别的实现是一个比较复杂的过程,这是因为它牵扯到许多的知识点。这些知识点包括对信号的处理,一些算法的实现,还有一些语音识别的匹配方法。下面我们讲一下语音实现的具体过程。首先我们要获取一个语音库,其次是要对这些语音信号进行训练和处理,这些过程会在后面的章节中详细论述。通过训练将每一个词的模型保存建立为模版库。识别过程中,说话者声音也会经过一样的通道取得参数,保存建立为测试的模版。并在先前存储的参考模板库中匹配保存,然后把匹配率最大的参考模版作为最终的识别成果。从下图我们可以看到实现的具体步骤。 图2 语音识别的基本实现过程1.3语音信号的预处理对于待输入的语音信号机器是不能直接对其分析和理解,那么我们就要将待测的信号先数字化。一般而言,语音信号的预处理模块一般包括采样、预加重、分帧、加窗、端点检测等。信号的加窗分帧是在处理时必不可少的也是经常要用到的。总的来说,它就是把相关信号分段处理。端点检测是为排除噪声和无声频段的干扰,找出我们需要处理的有声语音部分。图 3 语音信号的数字化处理1.3.1采样采样主要是在时间域上将模拟信号进行等间隔抽样。作时域离散化处理。抽取样值间隔的大小直接影响语音信号的失真情况,抽取间隔过大可能造成语音信号信息的丢失,抽取间隔过小的情况下可能会发生信号波形的混叠情况产生干扰。那么如何进行合理的处理才能避免信息的丢失又能获取较好的采样,根据采样定理 :当采样频率才可以很好的保留信号的大量信息。而且能够很好的完成频率抽取。此外,一般情况下电话语音信号的抽样频率为8赫兹左右。但是在语音信号的处理过程中。为了实现较高精确度的语音识别或者较高质量的语音合成,信号的抽样频率f也会提高2到4倍。另外,如果我们对语音信号的带宽不明确的话,我们需要在A/D变换之前做一些必要的处理。1.3.2预加重处理预加重是我们处理信号时常常会使用的一种信号处理方式,其作用在不同的信息处理中有不同的作用,在这里我们主要是为了放大信号中的高频分量 1宋庭新,刘幺和.语音识别与控制系统M. 出版社,2000.。这种信号处理有一种经常使用的处理函数,通常情况下,预加重一般是使用一阶的数字滤波器:H(Z)=1-,值接近于1。 1.3.3分帧 不同人的发声有很大区别,而且由语调语气的变化可知语音信号是一种整体非平稳信号,它的许多与语音信号相关的特征参量都会随时间发生变化。语音信号属于整体非稳定的一类信号,可是研究人员发现在极短的时间里它是较为稳定。所以,在实际的语音信号处理过程中会把它分成很小的称之为帧的时间段。帧移与帧长有一定的关系,通常情况下两者之比在1/3到1/2的区间 2王倩,吴国平,陈琳特定人语音识别算法DRW算法J中国地质大学(武汉)通信工程学院,湖北 武汉 430074。此外,分帧的大小也会直接影响到语音信号信息情况,根据信号处理的需求可以确定不同的帧长,一般取帧长取20ms。1.3.4加窗处理 加窗的目的是使信号的主瓣带宽更加尖锐,旁瓣更窄,加窗常常应用的函数是矩形窗、海明窗以及汉宁窗,根据不同的需要我们可以选择不一样的类型。形式分别为:(1)矩形窗(Rectangular Window) (1)(2)海明窗(Hamming Window) (2)(3)汉宁窗(Hann Window) (3) 其中N是窗口的长度。下图是三种窗函数的相关波形图。 图 4 三种窗的时域和频域波形图 海明窗和汉宁窗都属于广义升余弦函数,经过对两者频率特性的研究发现,矩形窗的谱旁瓣比海明窗和汉宁窗都要高,可能会使其频谱泄露,高频成分不易保存;汉宁窗也有其自身的局限性,比如说频谱衰减太快;因为海明窗的低通特性好和旁瓣低而被较多的运用。虽然上面三种窗函数存在一些异同点。但是为了很好的处理信号我们需要选择一种比较好的方式。综合而言在本文的研究中,要选用的函数是海明窗。 图5 Hamming及频谱特性1.3.5端点检测对于语音信号而言其包括有声、静音以及噪声等比较复杂的成分。我们需要将不一样的时分段分开来获取必要的部分。端点检测就是通过一定的方法定位到某些词汇的起止点以及排除无声部分的干扰。端点检测是语音识别中不可忽略的一部分,好的端点检测技术不仅能提高识别的准确度,而且它在是在孤立词语音识别中能将计算量较大的非实时系统加以简化。端点检测有许多的要求,这些要求能使我们更好的对信号进行处理。端点检测的方法很多,我们可以对不同的方法进行不同的分类,几种主要常见的端点检测方法和特征参量如下:(1)根据语音信号的时域特性来检测,如音量,过零率的检测,其计算量比较小。(2)利用语音信号的频域特征进行检测。端点检测检测的过程中有很多的特征参量作为可以作为参考量,在这些参量中我们要选择一种合适的方式来作为该方式的参考量,这个参考量必须能够很好地代表信号的某些特征,而且能够很好地实现端点检测这样一个关键技术。我们选取了下面两点作为参量来检测。1、短时能量、短时幅度 对信号完成上面的处理之后,第n帧的信号为: (4)N代表帧长。不同的信号进行分帧后每一个帧会有不一样的能量。第n 帧信号的短时能量En为: (5)2、短时过零率 通常,如果信号为连续的时间信号,短时过零率(ZCR)就是表示时域波形通过坐标时间轴的次数,语音的频谱特性就可以通过它表现出来了3林波, 吕明基于DTW改进算法的孤立词识别系统的仿真与分析J信息技术,2006年第4期。就离散信号而言,邻近两个参数取样值不同的话就称之为过零。计算公式如下: (6) sgn 表示符号函数,具体的算法见下式: (7) 这里运用两者相结合的方法来处理。同时应用这两种检测法可以更高效的检测信号的开始点以及结束点。具体方法需要根据流程检验。 1.4语音识别的特征提取1、 端点检测之后我们就要开始了整个系统中比较重要的一项技术那就是特征提取。它之所以如此的重要是因为特征参数的选择正确与否不仅会对系统识别的正确度起重大作用。而且能将信号的某些特征很好地表现出来。2、特征参数的要求是: (1)各个参量间应该具有较好的的独立特性,可以提高语音检测的效率。 (2)不同的参数要有很好的区分度,此外要注意的是他们要能够代表相关信号的特征,以此来提高识别度。 (3)为了方便计算,对于选取的特征参数的个数要小,而且要具有较高的有效性。3、信号的特征参数分为时域特征和频域特征,通常在信号的信息处理中频域特征比频域能够更好地表现出一些特质。所以本文中主要介绍后者。我们知道信号存在众多的特性,这些特性很多都可以作为参考量。比如能量,共振峰,语音频谱等语音参数都可以作为语音信号的特征参数。LPCC和MFCC两种方法应用广泛。下图是计算LPCC的过程: 图6 LPCC计算流程图LPCC与MFCC有许多异同点。值得注意的是,通过两者的比较我们发现MFCC比LFCC有更好的优越性:(1)语音信号的低频部分包含大量信息,而Mel到频谱在转化时也是比较注重其低频信息;(2)MFCC的使用情况非常的广泛,没有各种前提假设;(3)语音识别属于人工智能的范畴,它的所有技术都应考虑到人类本身的构造,这样才能在该技术上产生突破。此外MFCC还充分考虑了人体结构中听觉特点,所以在语音处理方面MFCC比LPCC的性能更好。目前语音识别系统的相关处理工作也是把MFCC作为主要方向。 MFCC的计算方式是比较复杂的。通常的方法就是建立一个滤波器组,滤波器组之间会进行频率之间的相应变换。下式为Mel频率的公式: (8)式中f是实际的语音信号频率。下图展示MFCC尺度对应曲线: 图7 MFCC尺度对应曲线 我们之所以选择MFCC是因为它的特殊作用。它能够对频率进行不均匀的标定。通过上面的式子可以进行相应的频域向倒谱的变换。下面是MFCC倒谱系数的求取步骤: (1) 首先我们要获得信号并将其进行数字化,这是信号处理的重要部分。(2) 其次对于一帧语音信号进行FFT变换。这样就可以获取信号的离散功率谱X(k)。(3)定义一个滤波器组。各个滤波器的中心频率都设为f(m),这些滤波器组在频域上是有一些要求的,通常情况下它在一定的范围内。现在我们把三角滤波器的中心f(m)定义为 (9) (9)式中:是录波器的低通频率部分而是它的高通频率部分;是信号采样频率;M是滤波器的个数;N是进行FFT变换时的数;计算公式如下: (10)(4)从上一步我们可以求出不同滤波器产生得相关输出频谱能量。我们再对其取对数之后便得到一组如下系数 (11)再经过离散余弦变换(DCT)将S(m)转换到时域,就是MFCC。计算过程如下: (12)下图为Mel倒谱系数(MFCC)的计算流程框图: 图 8 MFCC计算流程图 1.5语音识别的模式匹配1.5.1模式匹配的几种方法目前存在多种语音识别方法,主要分为三种:随机模型法、模板匹配法、概率语法分析法。其他的一些方法都归属于上面的几种类型,如果再进行细致的划分则可为下面这些。动态时间规整技术(DTW)和隐马尔科夫模型(HMM)归属于模板匹配的范畴。人工神经网络(ANN)、矢量量化(VQ)也是出现比较早并且用到的较多的。当然为了语音识别技术的改进一些多种技术联合使用的新方法也得到推广,比如说HMM和VQ交叉使用的匹配方法就是一种对隐马尔科夫改进的方法。动态时间规整技术(DTW)在识别中是比较早期的关于模式匹配与模型训练的技术。特征参数之间进行比较的时候会消耗不同的时间。这样就不能同时完成参数间的检测,识别率机会大大降低。而动态时间规整里的DP算法可以很好地解决这样的问题。在DTW算法中,主要是把语音信号的时间轴失真处理。当然这种处理最主要的就是对其进行不规则的扭曲。这样做的目的是为了限制该算法中匹配路径的个数。个数越少我们计算就会越简单,最后我们可以找到一条比较好的路径方式。 隐马尔科夫模型(HMM)是比较早的引入理论的。它是一种比较理想的统计方法。这种方法如今已经得到了比较广泛的运用。属于上面分类中模板匹配的一种方式。其和别的方法最特殊的地方就是他的对比库的不同。这种对比库在和待测量进行比较之前会进行大量的训练。通过这些训练可以得到一个和待测语音很近的矢量值作为存储模板保留。人工神经网络(ANN)。它的研究是语音识别技术的重大突破,尽管还未成熟,但是如今它是研究的重点。多层感知神经网络以及其特征映射是现在识别系统主要研究的方向。在众多的方法比较中HMM方法的识别准确度比DTW要高。可是HMM的计算过程可能就会更复杂一些了,因为它的方法实现会需要大量的数据,此外对这些数据的比较和训练比较繁琐的过程。所以本文仅仅对隐马尔科夫的算法加以介绍。而DTW算法和其他算法相比有很多的优点,比如和大计算量的HMM比较的话就简单多了。另外,DTW比较适合实际的应用。对于本文而言,有多种不同的识别方法选择,下面重点研究HMM和DTW两种模型的算法。 1.5.2隐马尔可夫模型(HMM)HMM是一种较好描述语音信号整体非平稳特性的统计模型,我们将其看作数学上的一个双重随机过程。前面我们说过语音信号可以进行无限分解。这样就可以在极短的时间里解决问题。但是如何确定段与段之间什么时候转变又是一个问题,HMM就通过统计学理论很好的突破这样的难题。通常情况下一个n种状态的HMM模型通常由来表示,这些参数的含义解释如下:是状态转移概率矩阵:。它的每一个元素都可以用a表述,它是有某一个状态向另外一个状态庄毅的概率,同时前后的两者状态转变又是有联系的。矩阵元素必须满足:。 B是输入语音特征序列中的任意随机变量在各状态的输出概率分布。它有离散型和连续型两类,对于离散HMM模型,B是一个概率矩阵;其中,M是编码符号集中符号的总数,并且满足;连续的模型满足条件:。为各状态的初始概率分布,它通常表示n=1时某个状态Si的概率。在HMM的模型算法中它是最不重要的。而另外的两个定义重要些。 基于HMM识别系统需解决的以下问题:(1)如何确定一个状态转移序列。并且通过相关算法求出q对隐马尔科夫的输出概率。根据此概率判断语音命令的识别; (2)如何调整的参数使得输出概率最大。 HMM中的一些算法的产生也是用于解决上面的两个问题。下面简单介绍一下隐马尔科夫的三种基本算法,即前向-后向算法,Viterbi算法和Baum-Welch算法。前向-后向算法的作用主要是简化模型的输出概率的计算量。首先定义变量HMM在时间t的输出序列,并且位于状态的概率为 (13)那么有初始化: (14)递归: (15)结果: (16) 这种算法计算量大为简化,它是一种典型的格型结构。上面是前向算法的方式,后向算法和它类似。Viterbi算法解决了给定一个观察值序列和一个,在最佳意义上确定一个状态序列的问题。其算法叙述如下:定义为时刻t时沿一条路径,且,产生出的最大概率,既有 (17)Viterbi算法也是一种格型结构,而且类似于前向算法。同样,由后向算法的思路出发也可以推导出Viterbi算法的另外一种实现方式。Baum-Welch算法主要用于解决HMM的训练,定义为给定训练序列O和模型,在时刻t时马尔科夫链处于状态,在时为状态概率,即 (18)可以导出 (19)那么,时刻t时马尔科夫链处于状态的概率为 (20)由上面的式子可以导出Baum-Welch的重估公式,重复计算过程可以起到改善模型的作用。1.5.3动态规划算法(DTW)在孤立词语音识别中,比较常用的一种识别方法是DYW,它的原理还是比较容易理解,另外其用法也不复杂。DTW算法最为重要的作用就是用来解决待测语音和参考模板之间的匹配问题。这种方法在上个世纪六十年代就开始被使用,所以它是一种比较早而且常用的方法。在上面的内容中我们讲到了语音识别的另外一种方法,即HMM。它常常会拿来和DTW算法进行比较。两者各有各的优点和缺点,DTW的计算量较另外一种方法较为简单,由于本文研究的是小词汇量的语音识别,DTW算法就比较适合了。另外使用DTW技术还解决了端点检测中某些参量效果不明显的问题,主要是因为这种方法可以把待测量和参考量的差异放大。以使其特征和模型特性进行对正。这种方法应用的比较广泛,并且它对语音识别技术产生了很重要的影响。DTW的原理可以用下图表示:2(1,1)NMmnAB2(N,M)DT(n),R(m)R(m)T(n)(n,m) 图9 DTW算法原理图 在规整过程中,有两个时间函数作为输入量。如上图所示,设A,B作为匹配的时间函数,B为模板,A为被测试的语音。他们分别被标注在时间轴上,中间的弯曲线表示两者的映射关系。表示这两帧特征矢量之间的距离,这种方法的目的只是把两者的这种最小矢量距离找出来。 在上图中我们是把字母A当作测试部分,而字母B当作参考部分。他们的关系通过横纵坐标指示出来了。现在我们设A有N帧矢量,B有M种矢量,且N不等于M,通常情况下两者也是不相等的。而动态时间规整就是寻找一个时间规整函数,通俗地讲就是寻找一条最优路径4何强,何英MATLAB扩展编程M第一版,北京:清华大学出版社。 D就是处于最优情况下的匹配路径,它满足一个函数公式: (21) 上面的公式实际上就是求取矢量距离的一个公式。通过这样一个公式我们就可以在某一个开始点进行搜索在众多的距离中找出一个最优的路径。如下图就是某一路径方式:21 2 3 4 5 6 7 8 9 10 NM91345678图10 DTW算法的一条路径从以上的表述我们会发现一个问题,从一个坐标到另外一个坐标的路径是非常多的,我们不可能每条路径都去测试它的匹配距离。那么我们就需要找出一种函数对匹配路径加以限制。这样会大大的简化计算量。我们可以称之为总的代价函数,其计算公式为 (22)式中,dc(k)为匹配点c(k)本身的代价,min Dc(k-1)是限制路径中最小的一条。1.5.4 动态规划算法基本步骤以下面的图表为例: 表1 参考模板与测试模板匹配示意b6(参考模板)2 191 197 235 26b51 175 221 166 22b44 167 182 154 19b35 122 114 153 16b23 74 98 172 13b12 41 55 101 11待测模板a1a2a3a4上图中的A是待测语音信号的模板,B代表参考模板。每一个表格中都有一个数字,每个数字代表A和B之间的矢量距离。类比于在坐标轴中,我们要求的是从一个坐标到另外一个坐标的距离,所以要求的是上表中对于某一条路径矢量距离之和,也就是累加距离。计算步骤如下: (1) 取初始值,在上面的图表中体现在被测模板和参考模板交叉的数值部分。(2) 然后根据待测模板和参考模板交叉的数值,即矢量距离,进行相加求出两者之间的累加距离。特别要指出的是,不光要计算待测模板和参考模板之间的累加距离还要注意对各条路径的记录。在上面的DTW原理的介绍中我们说到,在计算匹配路径的时候不可每条路径都去考虑,因为这样计算量很大,所以要找到一个函数来限制路径。函数如下: (23)对于上面的路径约束,具体的推导公式为: ; (24) ; (25)(3) 最后我们根据限制后的路径找出被测模板和参考模板之间匹配的最佳路径。 本文是针对一些孤立词语的语音识别系统,动态规整算法是一种不错的选择,计算简单方便,很适用于该课题的研究。在对DTW的后续研究中,人们也对该方法做了许多的改进和优化,在这里对优化后的DTW就不再作详细表述。2 语音信号的软件仿真这一章主要介绍系统的软件设计与仿真过程。软件设计主要是包括语音预处理子程序、端点检测子程序以及语音识别子程序。因为语音识别系统是一个较大的课题,所以在软件处理方面它有很多的源程序内容。由于条件限制在信号的仿真方面我们可以通过MATLAB来实现。2.1系统总体设计方案MATLAB软件对语音信号的处理和开发很久就已经开始了。现在matlab中已经存在各种比较好的开发工具箱。由于本人使用的版本不存在VOICEBOX工具箱。我们需要下载该工具箱并且添加到工具箱的相关文件夹里。本文的设计是在MATLAB中的GUI图形页面下完成的。通过在GUI中使用回调函数来实现信号的录音、信号处理、识别等工作。下图为总设计方案:图 11 语音识别软件设计方案2.2设计内容2.2.1语音库的建立语音库的建立就是对我们要处理的语音进行实时录入。一般情况下可以用录音笔或者笔记本电脑来完成。本文的语音库包括三位同学对1到9数字的实时录音,一共有三组语音。另外存在一份待测试的语音库。特别要注意的是一下两点。(1) 录音的时候要尽可能的排除外界环境的干扰。因为这个录入的语音相当于一个“源文件”,干扰越小后续的处理越准确。(2) 录音的时候还要注意音量的大小要合适,只有这样才能建立较好的语音库。 2.2.2 使用MATLAB处理语音信号 启动MATLAB后首先要注意的就是菜单栏中Set Path的路径情况。在后续对语音信号的处理过程中文件的存储路径要和系统默认的路径一致。以上是完成语音工具箱的路径设置。 MATLAB中有一些语音信号处理常用的函数,比如说wavread函数。这个函数是最常用的语音处理函数,它的主要作用就是对语音进行读取。函数用法如下:y,fs,nbits=wavread (“0b.wav”) 。这其中包括了音讯变量y和采样频率fs。前面录入的语音信号还不可以作为检测的模板,需要对录入的音频进行处理。处理的各个部分都可以通过相应的源程序在MATLAB中实现。 2.2.3端点检测法的软件实现 资料表明,语音识别的识别率较低等原因可能都是来自端点检测,所以较为精准的确定起止点和终止点能够提高语音识别的精度。但是端点检测的时候通常会受到噪声、气息、音调等因素的影响。本文中选用短时能量E和过零率ZCR一起的双门限条件来实现。一般包括四个阶段status0、status1、status2、status3。它们分别为静音段、过渡段、语音段以及结束段5胡航.语音信号处理M. 哈尔滨:哈尔滨工业大学出版社,2000.。各个阶段可以通过相互转化实现检测过程。检测过程中的门限是一个参考量度。如果静音段比最小的门限高的话,它就会跳转到下一个阶段。也就是过渡段。但是此时我们还不能确定语音段是不是已经达到。只有等到过渡段再次升高,达到一个较高的门限我们才能确定。下图为端点检测的基本流程图。图 12 端点检测子程序流程图端点检测在整个软件处理过程中比较关键。下面是端点检测的部分源代码,可以在MATLAB中运行实现:程序对应在userDataSet.m中标记语音信号的端点。此外这部分还包括一些语音处理的子程序。比如说endPointDetect.m就是音量和过零率的一个检测程序源代码6徐文盛,戴蓓倩,方绍武,陆伟特定人汉语数码语音抗噪识别方法J电路与系统学报,第5 卷第2 期,1007-0249(2000)02-0058-04.。 实验时需要调用 voicebox 中的 vad 函数。再在matlab中输入程序。下图是数字1的训练语音的端点检测结果,程序开始运行后会依次显示上面录入的语音文档的波形,并且用红色的线标出语音端点。图 13 语音“1”的端点检测结果2.2.4 特征参数提取的软件实现 特征提取的过程可以通过建立滤波器组来进行。melbankm(m,n,fs)被用来作为求取其系数的函数。其中m表示滤波器个数,n为一帧的长度。而mfcc系数的函数可以表示为7刘加.汉语大词汇量连续语音识别系统研究进展J.电子学报,2000,28(1)。在MATLAB中运行的时候,相关的程序首先会对我们预先准备好的语音文件进行分帧。然后便是对其能量进行计算,相关计算方法在上节部分已经做了表述,紧接着就是对信号的各种处理。这中间还要做FFT得到其频谱,目的是实现时域信号到频域信号的变换。最后可以使用M个Mel带通滤波器进行滤波。 在进行仿真实验的时候我们通常选取24维的MFCC,当然这种维数的选取是通过复杂的计算得出来的,在这里我们不做详细阐述。下图现实的就是24位MFCC参数值。 图14 24维特征参数的部分数值关于参数提取在软件上的实现,可以编写mfcc程序再保存到当前路径下,在后面语音识别时能够调用该函数。 3 MATLAB语音测试Matlab软件在音频处理方面的功能较强,该软件可以实现基本的语音录入以及读写wav文件。另外,MATLAB中存在许多语音处理函数。利用这些函数可以实现某些语音信号处理工作。在这个版本中的MATLAB可能缺少一些需要的函数,我们可以事先下载一个工具箱到软件默认的路径。这个工具箱主要是一些函数程序。这样我们可以根据需要调用这些函数。进行语音测试前要做一些准备工作,首先录制语音,由于条件的限制我们不在用MATLAB进行录音,而是使用已经准备好的语音包。train文件夹里包含三组训练语音,也就是语音库。test文件夹中包含一组测试语音8杨行俊,迟惠生等.语音信号数字处理M.北京:电子工业出版社,1995.附录A 部分程序x,fs,nbits=wavread(F:/11.wav);x = x / max(abs(x);%幅度归一化到-1,1%参数设置FrameLen = 256; %帧长inc = 90; %未重叠部分amp1 = 10; %短时能量阈值amp2 = 2; zcr1 = 10; %过零率阈值zcr2 = 5;minsilence = 6; %用无声的长度来判断语音是否结束minlen = 15; %判断是语音的最小长度status = 0; %记录语音段的状态count = 0; %语音序列的长度silence = 0; %无声的长度%计算过零率tmp1 = enframe(x(1:end-1), FrameLen,inc);tmp2 = enframe(x(2:end) , FrameLen,inc);signs = (tmp1.*tmp2)0.02;zcr = sum(signs.*diffs,2);%计算短时能量amp = sum(abs(enframe(filter(1 -0.9375, 1, x), FrameLen, inc).2, 2);%调整能量门限amp1 = min(amp1, max(amp)/4);amp2 = min(amp2, max(amp)/8);%开始端点检测for n=1:length(zcr) goto = 0; switch status case 0,1 % 0 = 静音, 1 = 可能开始 if amp(n) amp1 % 确信进入语音段 x1 = max(n-count-1,1); % 记录语音段的起始点 status = 2; silence = 0; count = count + 1; elseif amp(n) amp2 | zcr(n) zcr2 % 可能处于语音段 status = 1; count = count + 1; else % 静音状态 status = 0; count = 0; end case 2, % 2 = 语音段 if amp(n) amp2 |zcr(n) zcr2 % 保持在语音段 count = count + 1; else % 语音将结束 silence = silence+1; if silence minsilence % 静音还不够长,尚未结束 count = count + 1; elseif count minlen % 语音长度太短,认为是噪声 status = 0; silence = 0; count = 0; else % 语音结束 status = 3; end end case 3, break; endend count = count-silence/2;x2 = x1 + count -1; %记录语音段结束点subplot(3,1,1)plot(x)axis(1 length(x) -1 1)ylabel(原始信号);line(x1*inc x1*inc, -1 1, Color, red);line(x2*inc x2*inc, -1 1, Color, red);subplot(3,1,2)plot(amp);axis(1 length(amp) 0 max(amp)ylabel(短时能量检测);line(x1 x1, min(amp),max(amp), Color, red);line(x2 x2, min(amp),max(amp), Color, red);subplot(3,1,3)plot(zcr);axis(1 length(zcr) 0 max(zcr)ylabel(过零率检测);line(x1 x1, min(zcr),max(zcr), Color, red);line(x2 x2, min(zcr),max(zcr), Color, red);%改进DTW算法子程序dtw2.mfunction dist = dtw2(test, ref)global x y_min y_maxglobal t rglobal D dglobal m nt = test;r = ref;n = size(t,1);m = size(r,1);d = zeros(m,1);D = ones(m,1) * realmax;D(1) = 0;% 如果两个模板长度相差过多,匹配失败if (2*m-n3) | (2*n-mxa%xbxa, 按下面三个区域匹配% 1 :xa% xa+1:xb% xb+1:Nfor x = 1:xay_max = 2*x;y_min = round(0.5*x);warpendfor x = (xa+1):xby_max = round(0.5*(x-n)+m);y_min = round(0.5*x);warpendfor x = (xb+1):ny_max = round(0.5*(x-n)+m);y_min = round(2*(x-n)+m);warpendelseif xaxb%xaxb, 按下面三个区域匹配% 0 :xb% xb+1:xa% xa+1:Nfor x = 1:xby_max = 2*x;y_min = round(0.5*x);warpendfor x = (xb+1):xay_max = 2*x;y_min = round(2*(x-n)+m);warpendfor x = (xa+1):ny_max = round(0.5*(x-n)+m);y_min = round(2*(x-n)+m);warpendelseif xa=xb%xa=xb, 按下面两个区域匹配% 0 :xa%
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年度中国农业银行大连市分行校园招聘备考考试题库附答案解析
- 2025下半年浙江台州科技职业学院高层次人才招聘37人笔试备考题库及答案解析
- 《马克思主义基本原理概论》简单题
- 中专报名咨询方案
- 手指受伤安全培训课件
- 化肥厂水溶肥生产管理制度
- 学生食堂工人安全培训课件
- 学生食堂安全培训内容课件
- 学生集体培训安全事项课件
- 线缆厂维修费用核算规定
- 教研活动:幼儿园班级主题墙创设课件
- GB/T 42430-2023血液、尿液中乙醇、甲醇、正丙醇、丙酮、异丙醇和正丁醇检验
- 酒店住宿水单模板-可修改
- SF-三福的历史与文化 v2.0
- 幼儿园故事《小红帽》PPT模板
- GB/T 6723-2017通用冷弯开口型钢
- GB/T 4456-2008包装用聚乙烯吹塑薄膜
- 葫芦丝(初学教学)-课件
- 李家小学教师绩效考核实施方案
- 小粒咖啡栽培技术措施课件
- 曲顶柱体的体积市公开课金奖市赛课一等奖课件
评论
0/150
提交评论