基于动态时间规整的孤立咳嗽声识别
来源:岁月联盟
时间:2010-07-12
1 引言
咳嗽是机体的一种保护性动作,以消除呼吸道的分泌物、渗出物及侵入呼吸道的异物[1]。多数患者未能完整对自身的咳嗽特征进行描述,比如咳嗽的症状、发作时间、频率等,影响了咳嗽的及时诊断和合理。因此,有必要进行咳嗽的实时监测及其特征的识别。 至今这种对咳嗽严重性的评估,主要依靠主观措施,如咳嗽反射敏感性、患者对自身症状的感觉、咳嗽可视模拟测评、生活质量问卷、咳嗽症状描述和患者的日记等[3]。 从而使大部分的咳嗽监测器的诊断受到人为的影响较大。 利用可靠的咳嗽检测算法可以减少大量需人工分析的数据,甚至可以做到去除人工分析的过程,因此,要提高咳嗽声识别系统的有效性,这就要求有一种算法能够识别出大部分在特定录音中的咳嗽声,同时又能够将它与其它的具有相似特性的声音区分开来。文章在了国内外关于咳嗽声识别的研究现状,并比较了咳嗽声识别与语音识别的关系,提出使用动态时间规整算法作为本文咳嗽声识别的主要算法。2 基本定义
2.1 咳嗽发生机制
咳嗽表现为深呼吸气后,声门关闭,继而以突然剧烈的呼气,冲出狭窄的声门裂隙产生咳嗽动作和发出声音[2]。2.2 Mel频率倒谱系数[12](MFCC)
频率f与Mel频率B之间的转换公式为: (1) MFCC的提取及过程如图1所示。 (1)原始咳嗽声信号y(n)通过预加重、分帧、加窗处理后,得到每帧的时域信号x(n)。 (2)将得到的每帧时域信号进行离散傅立叶变换(DFT)。 (2) 其中,X(k)为线性频谱,N为DFT的窗宽。 (3)线性频谱经过Mel频率滤波器组处理后为M(t),然后对其进行对数能量处理,得到结果为d(m)。图1 Mel频率倒谱系数(MFCC)提取过程图2 通过Mel频率滤波器组得到Mel频谱 其中Mel频率滤波器组为在语音的频谱范围内设置的若干个带通滤波器,M为滤波器的个数。每个带通滤波器的传递函数为: (3) f(m)可以用下面的方法定义: (4) 其中,Ss为采样频率,而B-1为B的逆函数:,而滤波器的频率应用范围的最低频率为f=100Hz和最高频率为f =4000Hz,在实验中为了减少甚至消除交流电的影响,滤波器的个数取M=26,即可以得到26维的MFCC倒谱系数。考虑到让得到的结果对噪声和谱估计误差有更好的鲁棒性,将经过Mel滤波器组得到的Mel频谱取对数能量,其传递函数为: (5) (4)将上述对数频谱d(m)经过离散余弦变换(DCT)变换到倒频谱域,得到Mel频率倒谱系数(MFCC): (6) 以上参数称为静态参数,为了描述咳嗽声帧之间的相关性,引入了动态参数一阶差分和二阶差分。2.3 模版匹配技术[12]
模版匹配法是模式识别中最常用的一种相似度计算与匹配方法,把具有不同人的咳嗽声信号经过特征提取变换后作为不同的模版,构建一个基于模版匹配的简单的咳嗽声识别系统,如图3所示,是该咳嗽声识别系统的原理框图。图3 基于模版匹配的咳嗽声识别原理框图2.3.1 相似度度量 在基于模板匹配的咳嗽声识别系统中,对原始的咳嗽声信号进行训练得到一系列的特征模板,将其存储于模板库中。而在识别过程中采用相似度度量来进行模板匹配,将特征模板库中的各个模板称为参考模板,用R来表示;在模板库建好后,又将待识别的输入咳嗽声信号通过预处理和特征提取得到特征矢量序列,称为待检测模板,用W表示[12]。 参考模板用R={R(1)、R(2)、……、R(m)、……、R(M)}表示,其中M为参考模板所包含的咳嗽帧的总数,r为咳嗽帧的时序标号,R(r)为第m帧的咳嗽特征矢量。 待检测模板用W={W(1)、W(2)、……、W(n)、……、W(N)}表示,其中N为参考模板所包含的咳嗽帧的总数,w为咳嗽帧的时序标号,W(w)为第n帧的咳嗽特征矢量。 待检测模板和参考模板之间的总体相似度可以用它们之间的失真来度量,从W、R中的每个对应帧之间的失真算起,假设r、w为W、R中的任意选择帧号,这两帧之间的帧失真表示为D[W(w),R(r)]。2.3.2 动态时间规整(DTW) 考虑到咳嗽声识别的过程中,进行训练或者识别时,即使每次尽量以同样的方式去录制一个咳嗽,其持续时间的长度也会随机改变,而且不同病人的咳嗽相对时长也时不可预测的。所以,需要对特征参数序列模式重新进行时间的对准,为了有效的解决这个问题,采用动态时间规整算法(DTW)。 动态时间规整算法是寻找一条通过各个交叉点的从起始点到终止点的帧失真度总和为最小的最佳路径,其路径搜索算法[12]: (1)初始化: 在搜索的过程中路径的选择不是任意的,一般对路径中各点处路径的斜率的最大和最小做出了规定,最大斜率为2,最小斜率为0.5。设定路径初始关系为(0,0),r=1,…,N,w=1,…,M。 (2)当时,求 : ①求所有可能的wi,满足限定条件:ri=i且 (ri,wi)∈R ②遍历所有wi,进行下列各步计算: 其中 (3)由d[N,M]即可得到路径的总失真度; (4)由i=N时点(N,M)向前回溯,得到最佳路径: 若在回溯过程中出现,那么终止算法。
3 验过程
首先针对特定人,采取了63个咳嗽声样本,运用多模板平均训练算法,其算法如下: (1)设定最大模板失真阈值:a。 (2)从采集的咳嗽声样本集中取出样本,假设第一个咳嗽声样本形成的特征矢量序列为:Sample1={S11,S12,……,S1n},另一个特征序列为:Sample2={S21,S22,……,S2n},通过DTW算法它们的失真度,如果小于a,那么则转(3),否则转(2)。 (3)通过回溯法得到DTW搜索的最优路径序列:(r1,w1),(r2,w2),……(rt,wt)。 (4)新的模板取为Sample1、Sample2的时间规整后的平均,即:Sample={ Sample1,Sample2,……SampleL,……,SampleT},其中SampleL=0.5×(S1L+S2L)(L=1,2,……T)。 通过上述的算法,实验中用63个样本来训练,获得了7种类型的咳嗽声样本的模板。在采集特定人的咳嗽声样本时,也采集了其孤立的语音样本33个,同样运用这个算法训练20个样本,得到3个语音模板。在识别时,待识别的咳嗽声信号矢量序列用DTW算法分别求得与每个模板的总失真度,然后根据总失真度的大小来判断待识别咳嗽声接近哪个模板,即是属于哪一类咳嗽声或者是非咳嗽声。4 实验结果
在实验中,采样频率为16000HZ,DFT的窗宽N=512,最大模板失真阈值a=0.45。其中模板1~模板7为咳嗽声模板,模板8~模板10是语音模板。如表1所示,输入待识别的信号为咳嗽声时,经过DTW算法后计算的得到失真度,选取最小的,即最接近模板1,是属于跟模板1类似的咳嗽。当输入的待识别信号为语音信号时,如表2可以看到,运用DTW算法进行比较,得到结果是跟模板8比较接近,即是属于语音类的信号。表1 待识别信号为咳嗽声的识别结果 | ||||||||||
模板 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
失真度 | 1.3154 | 3.8826 | 4.2669 | 4.4524 | 4.4157 | 5.5385 | 4.9011 | 7.1392 | 4.9011 | 4.9011 |
表2 待识别信号为非咳嗽声的识别结果 | ||||||||||
模板 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
失真度 | 5.2275 | 3.8379 | 7.1947 | 7.8193 | 3.1395 | 7.9286 | 4.2015 | 2.14 | 4.2015 | 4.2015 |
在实验中,运用动态时间规整算法(DTW)对从病房采集同一个病人的96个咳嗽声和33说话声音进行训练和识别,其结果如表3所示。由于采集的咳嗽样本存在比较严重背景音的影响,因而识别率受到了的影响。
表3 DTW 算法识别结果 | ||
模板类型 | 咳嗽声类 | 说话声类 |
识别率% | 89.58 | 90.9 |