智能家居中语音识别算法研究_语音识别之DTW算法

智能家居中语⾳识别算法研究_语⾳识别之DTW算法
语⾳识别是⼀种以语⾳为研究对象,通过语⾳信号处理和模式识别使得机器⾃动识别⼈类语⾔的⾼级技术,被认为是2000年⾄2010年间信息技术领域⼗⼤重要的科技发展技术之⼀。通常情况下,可以根据识别对象的不同分为三类,即孤⽴词识别、关键词识别和连续语⾳识别。其中在孤⽴词识别中,最常⽤的⽅法就是动态时间规整(Dynamic Time Warping,简称DTW)算法。
⼀、语⾳识别
探针天线在介绍DTW算法之前,⾸先简单了解⼀下语⾳识别的操作步骤。主要有5个步骤,具体流程如图1所⽰。
图1  语⾳识别流程图
1 预处理
提取真正需要分析的⾳频信号,主要包括静⾳切除和声⾳分帧两部分操作。其中静⾳切除部分主要采⽤
的是语⾳活动检测(Voice Activity Detection,简称VAD)算法。声⾳分帧主要是通过使⽤移动窗函数来实现的。分帧之后各帧之间⼀般具有⼀定的交叠,如图2所⽰。
图2  ⾳频分帧⽰意图 2 特征提取 将声⾳信号从时域转换到频域,为声学模型提供合适的特征向量。在语⾳识别中主要采⽤的是梅尔频率倒谱系数(Mel Frequency Cepstrum Coefficient,简称MFCC)。该系数考虑到⼈类的听觉特征,先将线性频谱映射到基于听觉感知的Mel ⾮线性频谱中,然后转换到倒谱上。最终把每⼀帧波形变成⼀个包含声⾳信息的多维向量。 3 构建声学模型 通过对语⾳数据进⾏训练获得声学模型。其中输⼊变量为特征向量,输出变量为⾳素信息。 4 构建语⾳模型 通过对⼤量⽂本信息进⾏训练获得语⾳模型。根据语⾔学相关的理论,可以计算出声⾳信号对应可能词组序列的概率。
5 解码 根据已有的字典,对词组序列进⾏解码,得到最后可能的⽂本表⽰。其中字典指的是字或者词与⾳素之间的对应关系。如果是中⽂,则指的是拼⾳和汉字的对应;如果是英⽂,则指的是⾳标与单词的对应。⼆、 DTW 算法基本原理 DTW算法是⼀种计算两个时间序列尤其是不同长度序列相似度的动态规划算法,主要应⽤在模板匹配问题中,包括孤⽴词语⾳识别、⼿势识别、信息检索等。其中在孤⽴词语⾳识别中,该算法基于动态规划的思想,解决了发⾳长短不⼀的模板匹配问题,是语⾳识别中出现较早、较为经典的⼀种算法。 DTW算法主要是⽤满⾜⼀定条件的时间规整函数描述测试模板和参考模板的时间对应关系,并求解两模板匹配时累计距离最⼩所对应的规整函数。在实际运⽤中,假定⼀个时间序列Q为参考模板,另⼀个时间序列C为测试模板。此时序列中每个点的值即为语⾳序列中每⼀帧的特征值,即Q=q1,q2,…,qi,…,qn;C=c1,c2,…,cj,…,cm。此时两个序列间的相似度可以⽤它们之间对应帧的距离进⾏衡量,距离越⼩则相似度越⾼。通常采⽤欧⽒距离,即:
如图3所⽰,两条实线代表两个时间序列,实线之间的虚线则代表两个序列之间对应相似的点。这些相似点之间距离的和,即为归整路径距离,在DTW中被⽤来衡量两个时间序列之间的相似性。
养蜂专用车
图3  两个时间序列间对应关系⽰意图
三、DTW算法距离计算⽅法
当n=m时,可以直接计算两个序列间的距离。但是如果n≠m,则需要考虑先进⾏对齐处理,再进⾏距离计算。
(⼀)线性缩放⽅法
柴油车尾气处理最简单的对齐⽅式为线性缩放,即如果n
(⼆)动态规划⽅法
最常⽤的对齐⽅式为动态规划(Dynamic Programming,简称DP)的⽅法。⾸先需要构造⼀个n×m的矩阵⽹络。矩阵⽹络中的每⼀个交叉点(i,j)即为测试模式中某⼀帧的交汇点。然后需要寻⼀条通过此⽹络中若⼲个点的路径W。其中路径通过的格点即为两个序列进⾏计算的帧号。即:
在进⾏路径选择时,通常需要满⾜3个约束条件: 1 边界条件 虽然任何⼀种语⾳的发⾳快慢有可能变
化,但是其各部分的先后次序不可能改变,因此所选的路径必定是从左下⾓出发,在右上⾓结束。即:
脱蜡
谐振隧穿器件2 连续性 不能跨过某个点去匹配,只能和⾃⼰相邻的点对齐。即:
逆变器制作3 单调性 路径中的点必须是随着时间单调进⾏的,以保证图3中的虚线不会相交。即:
在满⾜以上三个约束条件的情况下,则每个格点对应的路径只有三个⽅向。即如果路径已经通过格点(i,j),则下⼀个通过的格点只可能为
(i+1,j)、(i,j+1)或(i+1,j+1)中的⼀种。 最终得到归整路径距离最短的⼀条路径,即:
总的来说,DTW⽅法虽然运算量较⼤,但是技术上较为简单,且识别正确率较⾼。因此即便是在连续语⾳识别中,也是较为主流的识别⽅法。除了DTW算法之外,还有很多语⾳识别常⽤的⽅法,如基于
参数模型的隐马尔可夫模型(HMM)⽅法、基于⾮参数模型的⽮量量化(VQ)⽅法等。这些⽅法在之后的⽂章中会进⾏介绍。 最后附上DTW算法在Matlab软件中的代码: function mindist=dtw(Q,C) n=size(Q,1); m=size(C,1); d=zeros(n,m); for i=1:n    for j=1:m        d(i,j)=sum((Q(i,:)-C(j,:)).^2);    end end D=ones(n,m)*realmax;
D(1,1)=d(1,1); for i=2:n    for j=1:m        D1=D(i-1,j);        if j>1            D2=D(i-1,j-1);        else            D2=realmax;        end        if j>2            D3=D(i-1,j-2);        else            D3=realmax;        end        D(i,j)=d(i,j)+min([D1,D2,D3]);    end end mindist=D(n,m);

本文发布于:2024-09-24 17:17:17,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/1/308615.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:识别   序列   算法   时间   对应   模板   模型   路径
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议