广州大学机械与电气工程学院数字语音信号处理基于DTW算法的语音识别原理与实现院系: 机电学院电子与通信工程姓名: 张翔学号: 2111307030 指导老师: 王杰完成日期: 2014-06-11基于DTW算法的语音识别原理与实现[摘要]以一个能识别数字0~9的语音识别系统的实现过程为例,阐述了基于DTW算法的特定人孤立词语音识别的基本原理和关键技术。
其中包括对语音端点检测方法、特征参数计算方法和DTW算法实现的详细讨论,最后给出了在Matlab下的编程方法和实验结果,结果显示该算法可以很好的显示特定人所报出的电话号码。
[关键字]语音识别;端点检测;MFCC系数;DTW算法Principle and Realization of Speech Recognition Based on DTW AlgorithmAbstract With an example of the realization of a 0~9 identifiable speech recognition system, the paper described the basic principles and key technologies of isolated word speech recognition based on DTW algorithm, including method of endpoint detection, calculation of characteristic parameters, and implementation of DTW algorithm. Programming method under Matlab and experimental results are given at the end of the paper.,and the results show that the algorithm can well display the phone number of the person reported.Keyword speech recognition; endpoint detection; MFCC parameter; DTW algorithm一、引言自计算机诞生以来,通过语音与计算机交互一直是人类的梦想,随着计算机软硬件和信息技术的飞速发展,人们对语音识别功能的需求也更加明显和迫切。
语音识别技术就是让机器通过识别和理解过程把人类的语音信号转变为相应的文本或命令的技术,属于多维模式识别和智能计算机接口的范畴。
传统的键盘、鼠标等输入设备的存在大大妨碍了系统的小型化,而成熟的语音识别技术可以辅助甚至取代这些设备。
在PDA、智能手机、智能家电、工业现场、智能机器人等方面语音识别技术都有着广阔的前景。
语音识别技术起源于20世纪50年代,以贝尔实验室的Audry系统为标志。
先后取得了线性预测分析(LP)、动态时间归整(DTW)、矢量量化(VQ)、隐马尔可夫模型(HMM)等一系列关键技术的突破和以IBM的ViaVoice、Microsoft的V oiceExpress为代表的一批显著成果。
国内的语音识别起步较晚,1987年开始执行国家863计划后语音识别技术才得到广泛关注。
具有代表性的研究单位为清华大学电子工程系与中科院自动化研究所模式识别国家重点实验室,中科院声学所等。
其中中科院自动化所研制的非特定人连续语音听写系统和汉语语音人机对话系统,其准确率和系统响应率均可达90%以上。
常见的语音识别方法有动态时间归整技术(DTW)、矢量量化技术(VQ)、隐马尔可夫模型(HMM)、基于段长分布的非齐次隐马尔可夫模型(DDBHMM)和人工神经元网络(ANN)。
DTW是较早的一种模式匹配和模型训练技术,它应用动态规划的思想成功解决了语音信号特征参数序列比较时时长不等的难题,在孤立词语音识别中获得了良好性能。
虽然HMM模型和ANN在连续语音大词汇量语音识别系统优于DTW,但由于DTW算法计算量较少、无需前期的长期训练,也很容易将DTW算法移植到单片机、DSP上实现语音识别且能满足实时性要求,故其在孤立词语音识别系统中仍然得到了广泛的应用。
本文将通过能识别数字0~9的语音识别系统的实现过程详细阐述基于DTW算法的特定人孤立词识别的相关原理和关键技术。
二、语音识别系统概述语音识别系统的典型原理框图如图1-1所示。
从图中可以看出语音识别系统的本质就是一种模式识别系统,它也包括特征提取、模式匹配、参考模式库等基本单元。
由于语音信号是一种典型的非平稳信号,加之呼吸气流、外部噪音、电流干扰等使得语音信号不能直接用于提取特征,而要进行前期的预处理。
预处理过程包括预滤波、采样和量化、分帧、加窗、预加重、端点检测等。
经过预处理的语音数据就可以进行特征参数提取。
在训练阶段,将特征参数进行一定的处理之后,为每个词条得到一个模型,保存为模板库。
在识别阶段,语音信号经过相同的通道得到语音参数,生成测试模板,与参考模板进行匹配,将匹配分数最高的参考模板作为识别结果。
后续的处理过程还可能包括更高层次的词法、句法和文法处理等,从而最终将输入的语音信号转变成文本或命令。
图1-1 语音识别系统原理框图本文所描述的语音识别系统将对数字0~9共10段参考语音进行训练并建立模板库,之后将对多段测试语音进行识别测试。
系统实现了上图中的语音输入、预处理、特征提取、训练建立模板库和识别等模块,最终建立了一个比较完整的语音识别系统。
三、具体实现过程3.1、语音信号预处理语音信号的预处理模块一般包括预滤波、采样和量化、分帧、加窗、预加重、端点检测等。
在不同的系统中对各子模块会有不同的要求,如在嵌入式语音识别系统中一般要求有防混叠滤波电路、A/D转换电路和采样滤波电路等,而在计算机上实验时则可由音频采集卡完成,无需实验者亲自动手。
3.1.1、分帧语音信号是一种典型的非平稳信号,它的均值函数u(x)和自相关函数R(xl,x2)都随时间而发生较大的变化。
但研究发现,语音信号在短时间内频谱特性保持平稳,即具有短时平稳特性。
因此,在实际处理时可以将语音信号分成很小的时间段(约10~30ms),称之为“帧”,作为语音信号处理的最小单位,帧与帧的非重叠部分称为帧移,而将语音信号分成若干帧的过程称为分帧。
分帧小能清楚地描绘语音信号的时变特征但计算量大;分帧大能减少计算量但相邻帧间变化不大,容易丢失信号特征。
3.1.2、预加重对于语音信号的频谱,通常是频率越高幅值越小,在语音信号的频率增加两倍时,其功率谱的幅度下降6dB。
因此必须对高频进行加重处理,一般是将语音信号通过一个一阶高通滤波器1-0.9375z-1,即为预加重滤波器。
其目的是滤除低频干扰,特别是50Hz到60Hz的工频干扰,将对语音识别更为有用的高频部分进行频谱提升。
在计算短时能量之前将语音信号通过预加重滤波器还可起到消除直流漂移、抑制随机噪声和提升清音部分能量的效果。
3.1.2、加窗为了保持语音信号的短时平稳性,利用窗函数来减少由截断处理导致的Gibbs效应。
用的最多的三种为矩形窗、汉明窗(Hamming)和汉宁窗(Hanning)。
其窗函数如下,式中的N为窗长,一般等于帧长。
窗口的选择非常重要,不同的窗口将使能量的平均结果不同。
矩形窗的谱平滑,但波形细节丢失;而汉明窗则刚好相反,可以有效克服泄漏现象,具有平滑的低通特性。
因此,在语音的时域处理方法中,一般选择矩形窗,而在语音的频域处理方法中,一般选择汉明窗或汉宁窗。
本系统中的端点检测采用时域方法故加矩形窗,计算MFCC 系数时加汉明窗。
3.2、端点检测在基于DTW 算法的语音识别系统中,无论是训练和建立模板阶段还是在识别阶段,都先采用端点检测算法确定语音的起点和终点。
语音端点检测是指用计算机数字处理技术从包含语音的一段信号中找出字、词的起始点及结束点,从而只存储和处理有效语音信号。
对汉语来说,还可进一步找出其中的声母段和韵母段所处的位置。
语音端点检测是语音分析、合成和识别中的一个重要环节,其算法的优劣在某种程度上也直接决定了整个语音识别系统的优劣。
进行端点检测的基本参数主要有短时能量、幅度、过零率和相关函数等。
端点检测最常见的方法是短时能量短时过零率双门限端点检测,近年来在此基础上发展出的动态窗长短时双门限端点检测方法也被广泛使用。
3.2.1、短时能量语音和噪声的主要区别在它们的能量上,语音段的能量比噪声段的大,语音段的能量是噪声段能量叠加语音声波能量的和。
对第n 帧语音信号的短时能量E n 的定义为:∑-==102)(N m n n m x E (3-4)x n 为原样本序列在窗函数所切取出的第n 段短时语音,N 为帧长。
因为在计算时使用的是信号的平方,故将E n 作为一个度量语音幅度值变化的函数有一个缺陷,即对高电平非常敏感。
矩形窗:汉明窗(Hamming):汉宁窗(Hanning): W R = 1 (0≤n <N-1) 0 (Other)W HM = 0.5-0.46cos(2πn/(N-1)) (0≤n <N-1) 0 (Other) W HN = 0.5-0.5cos(2πn/(N-1)) (0≤n <N-1) { {{ 0 (Other)(3-1) (3-2)(3-3)因此在许多场合会将E n 用下式来代替:|)(|10∑-==N m n n m x E (3-5)这样就不会因为取平方而造成信号的小取样值的大取样值出现较大差异。
本系统中窗函数为矩形窗W R (见式3-1),N 为240。
图3-1(I)和图3-2(I)分别为数字0的训练语音00.wav 和数字4的训练语音40.wav 的波形,图3-1(III)和图3-2(III)分别为它们的短时能量。
(I) “00.wav”语音信号波形Time:sA m p l i t u d e (n o r m a l i z e d )(II) 短时过零率FrameZ c r(III) 短时能量Frame E n e r g y图3-1 语音00.wav 的时域分析参数(I) “40.wav”语音信号波形Time:sA m p l i t u d e (n o r m a l i z e d)(II) 短时过零率FrameZ cr(III) 短时能量Frame E n e r g y图3-2 语音40.wav 的时域分析参数3.2.2、短时过零率短时过零表示一帧语音信号波形穿过横轴(零电平)的次数。
对于连续语音信号,过零意味着时域波形通过时间轴;而对于离散信号,如果相邻的取样值的改变符号则称为过零。
过零率就是样本改变符号次数,定义语音信号x(m)的短时过零率Zn 为:∑-=--=1|)]1(sgn[)](sgn[|21N m n n n m x m x Z (3-6) (3-7)清音的能量多集中在较高的频率上,它的平均过零率要高于浊音,故短时过零率可 以用来区分清音、浊音以及无声。