[0064] (5)计算DCT倒谱
[0065]
[0066] 式中, FT和FT-1表示傅里叶变换和傅里叶逆变换。
[0067]
[0068] k=0,1,…,N-1
[0069] 式中,参数N是序列x(n)的长度;C(k)是
正交因子,可表示为
[0070]
[0071] 把Mel滤波器的能量取对数后计算DCT:
[0072]
[0073] 式中,S(i,m)是Mel滤波器能量;m是指第m个Mel滤波器(共有M个);i是指第i帧;n是DCT后的谱线,mfcc(i,n)就是所求MFCC特征。
[0074] 所述根据正常鼾声与OSAHS患者鼾声的特征信息,使用SVM对这两种鼾声进行分类识别,包括:
[0075]
训练数据得到SVM模型和SVM分类器,具体包括:
[0076] 确定训练样本集 X表示由所述特征信息组成的
特征向量,y表示正常鼾声与OSAHS患者鼾声的类型标签,分别取值为+1(正样本)和-1(负样本),n表示训练样本数;
[0077] 在引入松弛变量和核函数的情况下,在
超平面集 中寻找最佳分离超平面 使得训练样本集可容忍的情况下上正负样本间隔最大,得到SVM模型和分类器;
[0078] 根据训练好的SVM分类器,判断正常鼾声和OSAHS患者鼾声,具体包括:
[0079] 从鼾声信号中提取特征信息,通过分类器计算后得到一个数值,如果该数值大于0.5,则认为该信号为正常鼾声;如果该数值小于0.5,则认为是OSAHS患者鼾声。
[0080] 所述使用模型调优模块进行参数调优,具体方法包括:
[0081] 网格搜索算法是一种通过遍历给定的参数组合来优化模型表现的方法,以
决策树为例,当我们确定了要使用决策树算法的时候,为了能够更好地拟合和预测,需要调整它的参数。在决策树算法中,通常选择的参数是决策树的最大深度。于是我们会给出一系列的最大深度的值,比如{'max_depth':[1,2,3,4,5]},尽可能包含最优最大深度。但是只用一次的结果不能说明某组的参数组合比另外的参数组合好,所以这里引入K折交叉验证,它将其中K-1份作为训练数据,剩下的一份作为验证数据输入到模型中,一共进行K次,将最后K次使用事先选择好的评分方式的评分求平均返回,然后找出最大的一个评分对用的参数组合即最优参数组合,这样能使训练出来的模型有很好的泛化能
力。
附图说明
[0082] 图1为本发明的基于支持向量机的鼾声分类系统模块图。
具体实施方式
[0083] 下面结合附图对本发明
专利做进一步分析。
[0084] 如图1所示,本发明的基于支持向量机的鼾声分类系统包括录音模块、声音预处理模块、MFCC特征计算模块、SVM学习模块、模型调优模块。其中录音模块把获取的鼾声信号传入到声音预处理模块,然后预处理模块将信号传入到MFCC特征计算模块,MFCC特征计算模块又将信号传入到SVM学习模块,最后进入模型调优模块进行模型调优。
[0085] 所诉的录音模块通过录音设备获取测试者整晚的鼾声,然后传入到声音预处理模块。
[0086] 所述的声音预处理模块通过对鼾声信号进行端点检测、预加重和分帧加窗处理,对鼾声信号进行预处理从而提取出每个鼾声信号,然后传入MFCC特征计算模块。
[0087] 所述的MFCC特征计算模块通过对预处理过后的信号进行MFCC特征的提取,然后将数据传入到SVM学习模块。
[0088] 所述的SVM学习模块通过特征数据和鼾声样本,利用支持向量机进行正常鼾声和OSAHS患者鼾声的识别,然后将数据导入到模型调优模块。
[0089] 所述的模型调优模块通过网格搜索和交叉验证相结合的方法进行模型参数的调优,最终得到表现最好的模型。
[0090] 本发明提出一种基于支持向量机的鼾声分类系统,通过录音设备采集鼾声样本,再对鼾声信号进行预处理,然后导入到MFCC特征计算模块计算出特征数据,再将数据传入SVM模型中进行学习,最后进行参数的调优来得到最优的模型。
[0091] 目前的端点检测算法在较高的信噪比下均能给出较高的检测率,但是在低信噪比下却不够理想。传统的能量和过零率特征在低信噪比下已不再稳健,因此本发明利用基于谱熵的端点检测算法,它是从语音信号的频域来进行计算,然后从频谱分布概率来进行语音端点的检测,此方法在较低的信噪比下也能够显著地提高端点检测的准确率,具体包括:
[0092] 先对鼾声数据进行预加重和加窗分帧,帧长为20ms,帧移为10ms,重叠率50%;
[0093] 然后通过
快速傅立叶变换得到每一帧信号的频谱,其中每个频谱向量的系数表明了该帧信号在该频率点的大小分布。之后计算每个频谱分量在每帧总能量中所占的比例,将其作为信号能量集中在某频率点的概率,其概率密度函数定义为:
[0094]
[0095] i=1,…,N
[0096] 式中,S(fi)是fi的能量,Pi是相应的概率密度,N是FFT中频率成分的所有点数。由于语音信号的绝大部分能量集中200Hz~3500Hz之间,所以,为了集中计算谱熵以增加语音和非语音在概率密度函数中的区分性,我们把200Hz~3500Hz之外的频率分量置为0,即:
[0097] s(fi)=0,fi<200Hz或fi>3500Hz
[0098] 相应的每一帧的谱熵定义如下:
[0099]
[0100] 通过熵函数就可以计算每帧语音信号的谱熵,并跟阈值比较,就可以检测出语音的起止点。
[0101] 所述对鼾声信号进行其他预处理,具体包括:
[0102] 从语音信号的频谱图中可以看出,频率越高的地方,语音信号的成分越小,也就是说语音信号的高频处的频谱比低频处的频谱难求,为此要在语音信号的预处理中进行预加重处理,它的目的是提升高频部分,使语音信号变得平坦这样就能在低频到高频的整个频带中用同样的信噪比来求频谱。
[0103] 预加重通常使用具有6dB/倍频程的提升高频特性的预加重
数字滤波器来实现,它一般是一阶有限冲激相应(FIR)滤波器:
[0104] H(z)=1-μz-1
[0105] 式中μ的取值范围是[0.4-1.0]。
[0106] 在进行过预加重处理的信号还要进行加窗和分帧处理。加窗和分帧是实现语音短时分析的手段。
[0107] 通过加窗处理可以把语音信号分为许多个短时的语音段,每个短时的语音段都被称为一帧。帧和帧之间既可以连续,也可以交叠,但是一般都采用有交叠的分帧方法,这样做的目的是为了使帧与帧之间平滑过渡,保持语音信号的连续性,前一帧和后一帧的交叠部分称为帧移。帧移和帧长的比值一般取为0-0.5之间。分帧是用可以移动的窗口进行加权的方法来实现的,窗口的长度是有限长的,设窗函数为w(n),用窗函数乘以语音信号s(n),从而形成加窗的语音信号:
[0108] sw(n)=s(n)*w(n)
[0109] 在语音信号数字处理中最常用的窗函数是矩形窗和汉明窗等,它们的表达式如下:
[0110] 矩形窗:
[0111]
[0112] 汉明窗:
[0113]
[0114] 窗函数的选取对于语音信号的短时参数的影响非常大。为此应该选择合适的窗函数,使语音信号的短时参数能更贴切地反映出语音信号的特征变化。
[0115] 汉明窗的主瓣宽度为8π/N,矩形窗的主瓣宽度为4π/N,由此可知汉明窗的主瓣宽度比矩形窗大一倍,即带宽约增加一倍,同时它的带外衰减也比矩形窗大。虽然矩形窗的谱平滑性能比较好,但是却损失了高频分量,从而造成了波形细节的部分丢失,所以从这一方面来看汉明窗比矩形窗更为适合应用于语音信号的加窗分帧。
[0116] 所述进行鼾声信号的特征提取,具体特征信息包括:
[0117] Mel频率倒谱系数的分析是基于人的听觉机理,即依据人的听觉实验结果来分析语音的频谱,期望能获得好的语音特性。MFCC分析依据的听觉机理有两个。
[0118] 第一,人的主观感知频域的划定并不是线性的,根据Stevens和Volkman的工作,有下面的公式:
[0119]
[0120] 式中,Fmel是以美尔(Mel)为单位的感知频率;f是以Hz为单位的实际频率。第二,临界带。频率带相应于人耳基底膜分成许多很小的部分,每一部分对应一个频率群,对应于同一频率群的那些频率的声音,在大脑中是叠加在一起进行评价的。按临界带的划分,将语音在频域上划分成一系列的频率群组成了滤波器组,即Mel滤波器组。
[0121] 在语音的频率范围内设置若干带通滤波器Hm(k),0≤m
[0122]
[0123] 0≤m≤M F(m)可以用下面的方法加以定义:
[0124]
[0125] 式中,fl为滤波器频率范围的最低频率;fh为滤波器频率范围的最高频率;N为DFT(或FFT)时的长度;fs为
采样频率;Fmel的逆函数 为
[0126]
[0127] MFCC特征提取分为五步:
[0128] (1)预处理:预加重、分帧、加窗。
[0129] (2)快速傅里叶变换
[0130] 对每一帧信号进行FFT变换,从时域数据转变为频域数据:
[0131] X(i,k)=FFT[xi(m)]
[0132] (3)计算谱线能量
[0133] 对每一帧FFT后的数据计算谱线的能量:
[0134] E(i,k)=|X(i,k)|2
[0135] (4)计算通过Mel滤波器的能量
[0136] 在频域中相当于把每帧的能量谱E(i,k)与Mel滤波器的频域响应Hm(k)相乘并相加:
[0137]
[0138] 0≤m
[0139] (5)计算DCT倒谱
[0140]
[0141] 式中, FT和FT-1表示傅里叶变换和傅里叶逆变换。
[0142]
[0143] k=0,1,…,N-1
[0144] 式中,参数N是序列x(n)的长度;C(k)是正交因子,可表示为
[0145]
[0146] 把Mel滤波器的能量取对数后计算DCT:
[0147]
[0148] 式中,S(i,m)是Mel滤波器能量;m是指第m个Mel滤波器(共有M个);i是指第i帧;n是DCT后的谱线,mfcc(i,n)就是所求MFCC特征。
[0149] 所述根据正常鼾声与OSAHS患者鼾声的特征信息,使用SVM对这两种鼾声进行分类识别,包括:
[0150] 训练数据得到SVM模型和SVM分类器,具体包括:
[0151] 确定训练样本集 X表示由所述特征信息组成的特征向量,y表示正常鼾声与OSAHS患者鼾声的类型标签,分别取值为+1(正样本)和-1(负样本),n表示训练样本数;
[0152] 在引入松弛变量和核函数的情况下,在超平面集 中寻找最佳分离超平面 使得训练样本集可容忍的情况下上正负样本间隔最大,得到SVM模型和分类器;
[0153] 根据训练好的SVM分类器,判断正常鼾声和OSAHS患者鼾声,具体包括:
[0154] 从鼾声信号中提取特征信息,通过分类器计算后得到一个数值,如果该数值大于0.5,则认为该信号为正常鼾声;如果该数值小于0.5,则认为是OSAHS患者鼾声。
[0155] 所述使用模型调优模块进行参数调优,具体方法包括:
[0156] 网格搜索算法是一种通过遍历给定的参数组合来优化模型表现的方法,以决策树为例,当我们确定了要使用决策树算法的时候,为了能够更好地拟合和预测,我们需要调整它的参数。在决策树算法中,我们通常选择的参数是决策树的最大深度。于是我们会给出一系列的最大深度的值,比如{'max_depth':[1,2,3,4,5]},我们会尽可能包含最优最大深度。但是只用一次的结果不能说明某组的参数组合比另外的参数组合好,所以这里引入K折交叉验证,它将其中K-1份作为训练数据,剩下的一份作为验证数据输入到模型中,一共进行K次,将最后K次使用事先选择好的评分方式的评分求平均返回,然后找出最大的一个评分对用的参数组合即最优参数组合,这样能使训练出来的模型有很好的泛化能力。