单宝娟,段文睿
(北京信息科技大学 仪器科学与光电工程学院,北京 100192)
咳嗽是儿童期常见的临床症状,表现为通过高速、高压气流来清除儿童呼吸道异物和有害分泌物,本质是一种生理防御机制[1]。但是,随着咳嗽强度和频率的增加,咳嗽不仅会影响儿童的正常生活,甚至会引起呼吸系统疾病,对生命健康造成威胁。研究显示,以咳嗽为主要症状的儿童肺炎是致使全球5 岁以下儿童死亡的主要原因[2]。目前,配合药物治疗能够缓解相应症状,但对儿童身心健康造成了一定影响。如果能在咳嗽初期尽早发现咳嗽异常尽早治疗,将会减小呼吸系统患病几率。咳嗽是呼吸道疾病的主要症状,因此可通过评估儿童咳嗽声音状况为儿童呼吸道疾病的诊断和预防提供依据。近年来,语音识别技术因检测速度快、无接触等优点,在儿童语音自动检测方面得到了广泛应用。
目前,国内外有部分研究者应用语音识别技术研究人咳嗽声的分类识别。Hirtum[3]等通过提取声音功率谱密度作为特征参数实现不同种类咳嗽的自动识别;俞一奇[4]等人提取Mel 频率刻度的小波能量作为特征参数,使用隐马尔科夫模型(Hidden Markov Models,HMM)对儿童咳嗽音的干湿性进行分类;Swarnkar V[5]等人应用Logistics回归模型开发出一种自动化技术,实现了对儿童咳嗽的干湿性进行分类。以上研究分别从特征参数提取、模型识别算法等不同方面实现了对人咳嗽性质的研究,并取得了较好的识别效果。但是,准确分辨咳嗽和非咳嗽是能够进行更深入研究的前提和关键。因此,如何在输入的一段语音中有效检测出咳嗽声音尤为重要。目前,石锐[6]等采用高斯混合模型对咳嗽声音进行了识别;Yusuf A A[7]等人提取共振峰、短时过零率、梅尔频率倒谱系数(Mel Frequency Cepstrum Coefficient,MFCC)等特征参数,对比TDNN 模型和LDA 模型的分类器识别性能,提出了一种能够从儿科录音中对咳嗽声自动识别的方法。
本文设计一种新的语音识别系统,采集儿童的4 种常见声音——哭声、笑声、尖叫声、咳嗽声作为研究对象,采用预加重、端点检测和分帧加窗的技术实现儿童语音信号的预处理,提取MFCC+ΔMFCC 作为语音特征参数,构建基于HMM的儿童咳嗽音识别模型,实现了对儿童咳嗽音的准确识别,以期用于后续有关儿童咳嗽的定量分析和定性分析。
本文采集6 名学龄期儿童(3 女3 男,5~12岁)的640段录音,其中包含每名儿童的哭声、笑声、尖叫声、咳嗽声各20~40 段不等,并将文件保存为wav 格式。针对上述4 种儿童语音样本建立两个数据集——训练数据集(每种语音80 段,共320段语音)和测试数据集(每种语音80 段,共320 段语音),分别用作后续语音识别中的模型训练和模型测试。该系统算法框架如图1 所示。
2.1.1 端点检测
采集到的儿童语音信号包含静音片段。为了缩短后续特征参数提取时间,需要去掉语音中的静音成分,获取语音的有效片段,提高语音识别系统识别效率。端点检测算法能够从包含静音片段的一段信号中准确定位语音片段的起止点,区分静音和语音。本研究采用基于短时平均过零率和短时能量为特征参数的双门限算法进行端点检测。第i帧语音信号的短时平均过零率Z(i)和短时能量E(i)的计算公式为:
式中,L为帧长,xi(n)为第i帧数据上所对应的第n个采样点值,sgn[·]为符号函数,即:
采用双门限算法对儿童语音信号的端点检测结果如图2 所示。
2.1.2 分帧操作
语音信号具有短时平稳性,在10~30 ms 通常可将语音信号视为稳态时不变信号。因此,可以对语音信号进行分帧操作,将其分割为一帧一帧的短时稳态信号,进而可对语音信号作短时分析。常用的分帧手段是采用窗函数的平滑移动来实现分帧操作。汉明窗函数的主瓣较窄,能够保证声音信号的相邻帧之间具有更好的连续性。此外,它的第一旁瓣较主瓣的衰减最大,使得声音信号的频谱泄露最小。因此,本文选用汉明窗函数对声音信号进行分帧处理。分帧过程中,采用交叠分帧的方法对语音信号进行分帧操作,以确保在分帧过程中造成的信号遗漏。同时,相邻两帧之间的交叠部分能确保帧与帧之间的平滑过渡,有效保证声音信号的平稳性和连续性。
汉明窗函数定义如下:
式中,L为窗长。
人耳在嘈杂混乱的环境中仍然能够分辨出各种声音信号,这一特殊功能主要得益于耳蜗的功能。人的耳蜗等同于一个滤波器组,对频率范围在1 000 Hz 以下的语音信号进行线性尺度上的滤波,对频率范围在1 000 Hz 以上的信号进行对数尺度上的滤波。这决定了人耳对低频信号较高频信号具有更高的敏感度。Mel 频率滤波器组具有人耳耳蜗的感知特性。组成梅尔滤波器组的每一个滤波器的中心频率是在梅尔频率尺度上均匀排列的。
Mel 频率与实际频率遵循如下关系:
MFCC 是在梅尔刻度频率域中提取出来的倒谱参数。MFCC 是基于人的听觉机理实现对语音频谱的分析,能够反映人的语音特征,具有良好的识别性能和抗干扰能力。标准的MFCC 特征参数只反映语音参数的静态特性,难以获得全面的语音特征信息。通过加入ΔMFCC,能够更好地描述语音信号的动态特性。本文选用24 维MFCC+ΔMFCC 参数作为特征参数,将采集到的儿童语音信号经过预处理后,对每一帧信号进行快速傅里叶变换以获得频域信号,再对频域信号进行平方运算,计算每一帧频域数据的谱线能量。将每帧信号的能量谱先通过Mel 滤波器,再将Mel 滤波器的输出能量取对数后作离散余弦变换,从而获得12 维MFCC,然后加入一阶差分系数得到24 维MFCC。MFCC 的计算过程如图3 所示。
不同声音的MFCC+ΔMFCC 参数三维视图如图4 所示,其中X、Y、Z轴分别代表维数、帧数和梅尔频率倒谱系数值。从MFCC 幅值变化范围来看,咳嗽声和尖叫声的变化大,哭笑声变化小。
在语音识别领域中,常用的识别方法有支持向量机、矢量量化模型以及DTW 算法等,其中隐马尔可夫模型因其稳定性良好[8]、算法成熟等优点而备受青睐[9]。因此,本文选取HMM 模型来识别儿童咳嗽声。HMM模型可以由模型参数λ=(π,A,B)表示,其中π表示初始状态概率,A表示状态转移概率矩阵,B表示观测概率矩阵。π、A用来描述Markov链,输出状态序列。B用来描述由状态产生观测值的随机过程,输出观测值序列。HMM 的训练和识别流程如图5 所示。
2.3.1 训练流程
输入训练数据集的语音样本作为已知信号,经预处理后,对每一帧的数据提取特征参数MFCC+ΔMFCC。获得的特征向量作为隐马尔科夫训练模型的观测序列Otraining,应用Baum-Welch 算法对每种类型声音i建立相应的HMM 模型参数λi。Baum-Welch 算法是一种基于最大似然估计的局部最优算法。给定观测序列Otraining,为确定P(Otraining|λ)的最大值,利用递归思想,使P(Otraining|λ)局部极大,最终确定HMM 的模型参数λ=(π,A,B)。
2.3.2 识别流程
输入测试数据集的语音样本作为待测信号,经预处理后,对每一帧的数据提取特征参数MFCC+△MFCC。获得的特征向量作为隐马尔科夫识别模型的观测序列Otesting,应用Viterbi 算法计算同一观测序列Otesting在所有可能的模型λi下对应的概率P(Otraining|λi),其中可能性最高的模型被认为是代表最可能的语音类型,即i*=arg max[P(Otraining|λi)]。Viterbi 算法实质上是利用动态规划求解最佳状态序列Q*,以解决隐马尔科夫模型的译码问题。Q*是指P(Q,Otesting|λ)达到最大时确定的状态序列。
应用Matlab 进行算法仿真,其中在HMM 训练过程中,笑声、咳嗽声、哭声、尖叫声分别迭代39次、33 次、28 次、21 次达到模型收敛,后应用Viterbi算法进行模型匹配,给出识别结果。本实验采用识别率(正确识别个数占该种类声音测试样本总数的比例)和误识别率(被误识别为该种声音的其他声音数量占其他声音测试样本总数的比例)两个指标来描述系统识别性能,结果如表1 所示。
表1 识别结果
由表1 可知,该系统对咳嗽声的识别率达到92.5%,误识别率达到9.17%,具有良好的识别性能,能够对儿童咳嗽声进行准确判别和计数,确保在一定时间周期内的咳嗽次数如果超过正常范围能够自动提醒看护人员及时检查排除隐患。综上所述,该系统可以为儿童呼吸道疾病的在线监测和预警提供新的方法参考,能够用于后续有关儿童咳嗽的定量分析。