语音识别中DTW算法改进研究
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
邮局订阅号:82-946360元/年技术创新
模式识别
《PLC 技术应用200例》
您的论文得到两院院士关注
语音识别中DTW 算法改进研究
A Research on improving DTW in speech recognition
(佛山科学技术学院)
文翰黄国顺
WEN Han HUANG Guo-shun
摘要:动态时间规整(Dynamic Time Warping )是语音识别中的一种经典算法,算法简单有效。针对DTW 方法计算和存储量大的不足,本文提出了改进累积距离计算和放宽端点对齐限制的策略。实验结果表明,改进后的算法在孤立词语音识别中能获得更加良好的效果。
关键词:DTW;语音识别;放宽端点对齐中图分类号:TP391.42文献标识码:A
Abstract:Dynamic Time Warping is a kind of classic programming in speech recognition system.The DTW algorithm is simple and effective.For the questions of great computation and storage,the paper puts forward improving the computation of cumulative distance and relaxing the alignment of vertices.The experiments results show that the improved DTW algorithm gets better performance in speech recognition of single word.
Key words:DTW;speech recognition;relaxing the alignment of vertices
文章编号:1008-0570(2010)07-1-0195-03
1引言
语音识别是信号处理和人工智能领域非常活跃的研究课题,常用的方法有动态时间规整(Dynamic Time Warping,DTW )、
隐马尔可夫模型(Hidden Markov Models,HMM )、人工神经网络(Artificial Neural Networks,ANN )等多种方法。其中隐马尔可
夫模型适用于大词汇量、
连续语音识别,其不足是结构复杂,需要大量的训练样本;人工神经网络在语音的分类、聚类和音素识别中有新的突破,其缺点是在训练数据较多的情况下,学习速度非常慢;而动态时间规整算法是把时间规整和间距测量计算结合起来的非线性动态规划方法,相对简单且有效。DTW 算法主要解决了发音长短不一的模板匹配的关键问题,是一种适用于小词汇量、孤立词的相对成熟的语音识别技术。
2语音识别实现
语音识别系统直接以孤立词为识别基元,采取如图1所示的识别流程:
图1语音识别系统流程图
2.1语音信号的端点检测
找出语音数据的开始点和结束点,我们称为端点检测。实现端点检测,我们可以用信号的幅度作为特征,区分静音和语音。只要设定一个门限,当信号的幅度超过该门限的时候,就认为语音开始,当幅度降低到门限以下,就认为语音结束。
实际上,一般用短时能量的概念来描述语音信号的幅度,对于输入的语音信号,其中n 为采样点。首先,进行分帧操作,语音信号被分成每20-30毫秒一段,相邻两帧起始点之间间隔为10毫秒,也就是说两帧之间有10-20毫秒的交叠。由于采样
频率的差异,帧长和帧移所对应的实际采样点数也是不同的,对
于9K Hz 采样频率,30毫秒的帧长对应240点,记为N,而10毫秒的帧移对应80点,记为M 。
对于第i 帧,第n 点样本,它与原始语音信号的关系为:(1)
第i 帧语音信号的短时能量可以用绝对值的累加、平方累加和平方的对数累加得到。
将语音信号分帧后计算每帧的短时能量,再设定一个门限,就能实现一个简单的短时检测算法。但这样的算法并不可靠,因为人的语音分为清音和浊音两种:浊音为声带振动发出,对应的语音信号有幅度的提高、周期性明显的特点;而清音则不会有声带的振动,只是靠空气在口腔中的摩擦,冲击或爆破发声,其短时能量一般比较小,往往会被基于能量的算法漏过去。
对于清音尽管此时不能用短时能量可靠地加以检测,但清音段信号的波形由于口腔空气摩擦效果,造成波形在单位时间内变化剧烈,通常可以用一帧信号中波形穿越零电平的次数描述。这种变化剧烈程度,称为过零率,用公式表达:
(2)
在开始进行端点检测之前,首先为短时能量和过零率分别确定两个门限,一个是比较低的门限,对信号变化比较敏感,很容易就会被超过。另一个是比较高的门限,信号必须达到一定的强度,该门限才可能被超过。低门限被超过未必就是语音的开始,有可能是时间很短的噪声引起,高门限被超过则基本确信是由语音引起的。
整个语音信号的端点检测可以分为四段:静音、过渡段、语音段、结束。在静音段,如果能量或过零率超过了低门限,就应该开始标记始点,进入过渡段。在过渡段中,由于参数的数值比较小,不能确信是否处于真正的语音段,因此只要两个参数的数值都回落到低门限以下,就将当前状态恢复到静音状态。而如果在过渡段中两个参数中的任一超过了高门限,就可以确信已进入
文翰:讲师硕士
195--
技术创新
《微计算机信息》(测控自动化)2010年第26卷第7-1期
360元/年邮局订阅号:82-946
《现场总线技术应用200例》
模式识别
语音段。当前状态处于语音段时,如果两个参数的数值降低到低门限以下,且总的记时长度小于最短门限,则认为这是一段噪音,继续扫描以后的语音数据,否则就标记为结束端点,并返回。
实际对语音信号进行分词、断句处理时,仍需作如下的调整和改进:
(1)由于线路等的影响,某些帧的波形中会有毛刺存在,有时甚至达到几个数量级,导致整个语音信号的波幅增大,影响归一化后大部分数据偏小,接近于零,使得端点检测算法失效。针对上述现象,在端点检测前,计算整个语音信号的短时能量,经过统计,正常语音信号的短时能量都不超过60,超过60的帧被视为不正常帧,将该帧去掉,再进行端点检测。
(2)清音能量弱、
过零率高,浊音过零率低而能量高,在汉字中,均以元音结尾,在结尾再次进行过零率检测将毫无益处,甚至适得其反。而汉语语音信号最强的部分为前面和中间的部分,在结尾部分往往只是信息弱时间长的拖尾音,将过多的拖尾音取入识别匹配所用的特征序列对识别无甚贡献,甚至有害。而这些拖尾音的能量通常逐渐减弱,适当提高低能量门限将有助于截断过多的拖尾音。因此,在结束点的检测上,将对过零率的检测
忽略掉,高低能量门限合并为一个门限,该阈值取为低门限的两倍。改进后的结束点识别比较准确,这样不仅缩短了识别时间还提高了识别率。
2.2DTW 语音识别算法
由于每个人说话语速不同会造成相同的语音长度不同,而DTW 方法则将不同长度的语音进行弯折,规整为参考模板的长度,从而实现未知语音同给定参考模板的匹配,所以时间规整与模式匹配是非常必要的。
无论在训练、模板建立还是识别阶段,都先采用端点检测算法确定语音的起点和终点。已存入模板的各个词条称为参考模板,一个参考模板可表示为,m 为训练语音帧的时序标号,m=1为起点语音帧,m=M 为终点语音帧,因此M 为该模板所包含的语音帧总数,R(m)为第m 帧的语音特征矢量。所要识别的一个输入词条语音称为测试模板,可表示为
,n 为测试语音帧的时序标号。n=1
为起点语音帧,m=M 为终点语音帧,N 为该模板所包含的语音帧总数,T(n)为第n 帧的语音特征矢量。参考模板与测试模板一般采用相同类型的特征矢量(如MFCC)、相同的帧长、相同的窗函数和相同的帧移。
假设测试和参考模板分别用T 和R 表示,为了比较他们之间的相似度,可以计算它们之间的距离D[T,R],距离越小则相似度越高。为了计算这一失真距离,应从T 和R 中各个对应帧之间的距离算起。设n 和m 分别是T 和R 中任意选择的帧号,d[T (n),R(m)]表示这两帧特征矢量之间的距离,在DTW 算法中距离函数通常采用欧氏距离。
若N=M,可以直接计算,否则要考虑T(n)和R(m)对齐。对齐可以采用线性扩张的方法,如果N<M 可以将T 线性映射为一个
M 帧的序列,再计算它与
之间的距离。但这样计算没有考虑语音中各段在不同情况下的持续时间会产生或长或短的变化,识别效果不佳,因而更多地采用动态规划(DP)方法。
如果把测试模板的各个帧号n=1~N 在一个二维直角坐标系中的横轴上标出,把参考模板的各帧号m=1~M 在纵轴上标出,通过这些表示帧号的整数坐标画出一些纵横线即可形成一
个网格,网络中的每一个交叉点(n,m)表示测试模式中某一帧与训练模式中某一帧的交汇点。DP 算法可以归结为寻找一条通过此网格中若干点的最佳匹配路径,采用非线性时间对准方法,将全局最优问题转化为多步决策的局部最优问题:通过计算每一步的局部最优路径而获得全局最优路径。
2.3DTW 算法改进
传统DTW 算法以整个单词为基本识别单位进行训练和识别,并没有考虑单词的分段问题。若待识别模式的差别很小时,例如“作者”和“著者”,其中只有
“作”和“著”存在较小的差异,这样算法的搜索路径会受到之前路径的影响,很难在距离上表现出来。另外,DTW 算法进行模式匹配的运算量太大,对于两个分别长为N 帧、M 帧的模板,动态规划要用MN 次运算才能找到一个时间弯折函数,不适合大词汇量的语音识别。由于匹配过程中限定了弯折的斜率,因此许多格点实际上是达不到的,如图2所示,此菱形之外的格点对应的帧匹配距离是不需要计算的。另外也没有必要保存所有的帧匹配距离矩阵和累积距离矩阵,因为每一列各格点上的匹配计算只用到了前一列的三个网络。充分利用这两个特点可以大幅减少计算量和存储空间的要求。
图2匹配路径约束示意图
在图2中,把实际的动态弯曲拆分为三段,
和
,其中:
(3)
和
都取最邻近的整数,由此也得出对M 和N 长度的
限制条件:
(4)
当不满足以上条件时,认为两者差别实在太大,无法进行动态弯折匹配。
在X 轴上的每一帧不再需要与Y 轴上的每一帧进行比较,而只是与Y 轴上间的帧进行比较,和的计算如下式:
(5)(6)
也可能会出现>
的情况,此时弯折匹配的三段为,
和。对于X 轴上每前进一帧,虽然所要比较的Y 轴上的帧数不同,但弯折特性是一样的,累积距离的更新都是用下式实现的:
(7)
对于X 轴上每前进一帧,只需用到前一列的累积距离。所以只需要两个列矢量D 和d 分别保存前一列的累积距离和计
196--