一种基于语音特征的痴呆早期评估方法及装置与流程

文档序号:29248634发布日期:2022-03-15 23:07阅读:294来源:国知局
1.本发明涉及脑健康体感检测领域,具体涉及一种适用于痴呆早期评估的语音特征识别系统。
背景技术
::2.老年性痴呆是一种常见的神经退行性疾病,严重影响人类的健康。随着人口老龄化的加剧,老年性痴呆患者越来越多,并且有年轻化的趋势,老年性痴呆诊治形势日益严峻。随着时间的发展,该病症状越来越严重,并且不能彻底治愈,但早期干预和治疗能够缓解症状,提高患者生活质量。由于老年性痴呆起病隐匿,初期症状不明显,早期诊断困难,早期很容易漏诊和误诊。大部分患者从出现症状到临床确诊,平均需要几年甚至十几年的时间,误诊率很高。如果能够实现可靠的老年性痴呆早期评估,使患者能在早期接受治疗,在延缓其病情发展,提高其生活质量,减轻家庭和社会负担等方面具有重要的意义。3.研究表明,超过90%的老年性痴呆患者具有语言功能障碍,随着病情加重这种症状越来越明显,表现为讲话速度变慢、音量变低、高次谐波频谱能量升高、声音震颤、音调降低、停顿较多较长等。由于语音信号采集方便,易于存储和传输,利用语音特征评估老年性痴呆病具有简单、无创、成本低、可远程实现、容易普及等优点,这一领域的研究引起了国内外众多学者的广泛关注。4.以往利用语音评估老年性痴呆研究大多没有考虑噪声影响,评估准确率可达78%以上。但在现实环境下,语音信号采集过程中不可避免地受到环境噪声的干扰,影响语音特征参数的准确性,导致评估性能下降。5.本发明针对老年性痴呆语音评估中的噪声干扰问题,通过语音预处理模块实现音量标准化、高通低通滤波、去除噪声,特征提取模块提取梅尔倒谱系数、plp、基频特征提取等措施提高特征的鲁棒性,特征选择模块使用sfs方法实现特征降维,数据平衡模块实现上采样、下采样、smote等方法平衡数据,然后通过分类预测模块利用支持向量机(supportvectormachine,svm)分类方法进行分类,实现老年性痴呆语音评估,给出分类预测结果。技术实现要素:6.本发明所要解决的技术问题是克服了老年性痴呆语音评估中易受噪声干扰的问题,提供了一种基于语音特征的老年性痴呆早期评估方法及装置。7.为解决上述技术问题,本发明是采用如下技术方案实现的:所述的基于语音特征的老年性痴呆的早期评估方法及装置包括步骤及模块如下:8.1)通过语音采集模块录制语音,建立老年性痴呆病语音库和健康语音库;9.相对安静环境和一定噪声环境中的老年性痴呆病语音库和健康语音库均来自北京老年脑健康数据库,采用pad录制,其中老年性痴呆病语音500多个,健康语音200多个;10.老年性痴呆病语音和健康语音均转换为16khz、16bit、单声道的wav格式;此处得到相对安静环境和一定噪声环境中的老年性痴呆病语音库和健康语音库;pythoninterfacetopraat.journalofphonetics,71,1-15.https://doi.org/10.1016/j.wocn.2018.07.00136.localjitter=call(pointprocess,″getjitter(local)″,0,0,0.0001,0.02,1.3)37.localabsolutejitter=call(pointprocess,″getjitter(local,absolute)″,0,0,0.0001,0.02,1.3)38.rapjitter=call(pointprocess,″getjitter(rap)″,0,0,0.0001,0.02,1.3)39.ppq5jitter=call(pointprocess,″getjitter(ppq5)″,0,0,0.0001,0.02,1.3)40.ddpjitter=call(pointprocess,″getjitter(ddp)″,0,0,0.0001,0.02,1.3)41.localshimmer=call([sound,pointprocess],″getshimmer(local)″,0,0,0.0001,0.02,1.3,1.6)[0042]localdbshimmer=call([sound,pointprocess],″getshimmer(local_db)″,0,0,0.0001,0.02,1.3,1.6)[0043]apq3shimmer=call([sound,pointprocess],″getshimmer(apq3)″,0,0,0.0001,0.02,1.3,1.6)[0044]aqpq5shimmer=call([sound,pointprocess],″getshimmer(apq5)″,0,0,0.0001,0.02,1.3,1.6)[0045]apq11shimmer=call([sound,pointprocess],″getshimmer(apq11)″,0,0,0.0001,0.02,1.3,1.6)[0046]ddashimmer=call([sound,pointprocess],″getshimmer(dda)″,0,0,0.0001,0.02,1.3,1.6)[0047]minf0=call(broad_pitch,″getminimum″,0,0,″hertz″,″parabolic″)#getminpitch;maxf0=call(broad_pitch,″getmaximum″,0,0,″hertz″,″parabolic″)#getmaxpitch[0048]meanf0=call(pitch,″getmean″,0,0,″hertz″)#getmeanpitch[0049]stdevf0=call(pitch,″getstandarddeviation″,0,0,″hertz″)#getstandarddeviation[0050]hnr=call(harmonicity,″getmean″,0,0)[0051]提取脚本基于parselmouthpraatscriptsinpythoncontributors:davidr.feinbergdatecreated:2018-11-1810:46amlastupdated:2019-10-0903:29amidentifier:doi10.17605/osf.io/6dwr3thisrepoislinkedtoacitableversionofthepitch/hnrscriptonthe《ahref=″https://osf.io/6dwr3/″》opensciencefoundationwebsitehere《/a》thedoifortheprojectisdoi《ahref=″doi10.17605/osf.io/6dwr3″》10.17605/osf.io/6dwr3《/a》[0052]4)提取非静默暂停个数(filledpause、repetition、lengthening、repair),音调(汉语音调)等特征,[0053]提取方法是基于praat软件,使用prosogram软件,具体参见文献:mertens,piet(toappear2020)theprosogrammodelforpitchstylizationanditsapplicationsinintonationtranscription.inbarnes,j.a.andshattuck-hufnagel,s.(eds)prosodictheoryandpractice.cambridge,ma:mitpress.[0054]5)提取pitch(mfcc梅尔倒谱系数12个)等特征,[0055]提取方法是基于praat软件,使用opensmile软件,具体参见文献:eyben,f.,m.,&schuller,b.(2010,october).opensmile:themunichversatileandfastopen-sourceaudiofeatureextractor.inproceedingsofthe18thacminternationalconferenceonmultimedia(pp.1459-1462).[0056]mfcc计算步骤:[0057]把信号切分成帧[0058]计算每帧的功率谱周期图估计(theperiodogramestimateofthepowerspectrum)[0059]使用梅尔滤波器对每一帧的功率谱滤波,再把每一帧滤波后的能量相加得到能量总和[0060]求所有滤波器组能量总和的对数[0061]对上一步得到的结果做离散余弦变换[0062]保留2-13的离散余弦对数,舍弃其他的[0063]mfcc提取脚本基于mfcc12_e_d_a.conf,取12个系数,具体参见文献:schuller,b.,steidl,s.,&batliner,a.(2009).theinterspeech2009emotionchallenge.intenthannualconferenceoftheinternationalspeechcommunicationassociation.[0064]技术方案中所述的特征选择模块是指:[0065]特征太多不利于模型泛化,利用sfs等特征选择方法,实现特征降维,取得较好泛化能力。[0066]特征选择使用weka软件元方法,使用randomforest方法,具体参见文献:[0067]hall,m.,frank,e.,holmes,g.,pfahringer,b..reutemann,p.,&witten,i.h.(2009).thewekadataminingsoftware:anupdate.acmsigkddexplorationsnews]etter,11(1),10-18.[0068]技术方案中所述的数据平衡模块是指:健康和高危的比例是不平衡的,使用上采样、下采样、smote等方法平衡数据后,能有效提高分类效果。[0069]数据平衡使用基于python的imbalanced-learn库,具体参见文献:[0070]g.,nogueira,f.,&aridas,c.k.(2017).imbalanced-learn:apythontoolboxtotacklethecurseofimbalanceddatasetsinmachinelearning.thejournalofmachinelearningresearch,18(1),559-563.[0071]技术方案中所述的训练模块,利用svm训练老年性痴呆病语音和健康语音模型是指:[0072]1)得到语音信号的多特征向量之后,设定标签,把相对安静环境和一定噪声环境中的老年性痴呆病语音的特征向量标签设为1,健康语音的特征向量标签设为0,把带标签的向量按行排列,存成features.csv文件,把数据随机分成10份,其中9份用来训练,1份用来测试,即10折交叉验证,重复10次,最后评估准确率取10次的平均值;[0073]2)训练语音模型利用svm库(alibraryforsupportvectormachines,libsvm)中的python语言实现,调用svc.svm函数,利用features.csv数据中的9份进行老年性痴呆病语音和健康语音的模型训练;其中svm的类型采用c-svc,核函数采用linear线性核函数,惩罚系数c设为0.1;[0074]libsvm库的具体用法参照文献:[0075]c.-c.changandc.-j.lin.libsvm:alibraryforsupportvectormachines.acmtransactionsonintelligentsystemsandtechnology,2:27:1--27:27,2011.[0076]与现有技术相比本发明的有益效果是:[0077]1.本发明所述的基于语音特征的老年性痴呆病的评估方法及装置通过音量标准化、高通低通滤波器、去除噪声、选择提取特征等方法增强所提取特征的鲁棒性,能显著提高噪声环境下老年性痴呆病语音评估的准确率;[0078]2.本发明所述的基于语音特征的老年性痴呆病的评估方法及装置,利用基频变化特点等提取各种特征向量,同时兼顾局部单值特征和整体统计特征,为svm分类方法提供数据基础。附图说明[0079]下面结合附图对本发明作进一步的说明:[0080]图1是本发明所述的基于语音特征的老年性痴呆病的评估方法及装置的流程框图。具体实施方式[0081]以下结合附图对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。[0082]参阅图1,本发明所述的基于语音特征的老年性痴呆病的早期评估方法及装置的步骤及模块如下:[0083]1.语音采集模块录制语音,收集建立老年性痴呆病语音库和健康语音库[0084]相对安静环境和一定噪声环境中的老年性痴呆病语音库和健康语音库均来自北京老年脑健康数据库,采用pad录制,其中老年性痴呆病语音500多个,健康语音200多个;老年性痴呆病语音和健康语音均转换为16khz、16bit、单声道的wav格式;此处得到相对安静环境和一定噪声环境中的老年性痴呆病语音库和健康语音库;[0085]2.语音预处理及特征提取模块[0086]1)对语音信号进行预处理[0087]用sox处理声音为标准pcm格式头wav、单声道、16khz、16bit。[0088]用sox软件做音量归一化[0089]用低通、高通滤波器滤除50hz以下、8000hz以上信号[0090]先采样前2秒或后2秒噪声样本,再通过噪声滤波器去除噪声[0091]2)提取基于音素的音素数、语速、暂停率、发音率、平均暂停时长等特征[0092]提取方法是使用praat软件,具体参见文献:[0093]paulboersma&davidweenink(2018):praat:doingphoneticsbycomputer[computerprogram].version6.0.37,retrieved14march2018fromhttp://www.praat.org/[0094]根据信号强度(intensity)确定静默门限(silence_threshold)、相邻波峰最小强度差(minimum_dip_between_peaks)、最短静默时长(minimum_pause_duration)、最短发音时长(minimum_sounding_duration)来确定是否为静默或者有话音,标定每段静默的开始和结束位置,基于此计算出语速、暂停率、发音率、平均暂停时长等。[0095]语速(speechrate)=音素数/总时长[0096]音素数(syllable)[0097]暂停率(pauseratio)=暂停时长/总时长[0098]发音率(phonationratio)=发音时长/总时长[0099]平均暂停时长(meanpausetime)=暂停时长/暂停个数[0100]提取脚本基于praatscriptsyllablenucleicopyright2008nivjadejongandtonwempe2010.09.17byhugoquené,ingridpersoon,&nivjadejongbugfixedconcerningsummingtotalpause,feb28th2011translatedtopythonin2019bydavidfeinberg[0101]3)提取jitter、shimmer、f0相关(min/max/medium/mean/variance)等特征,[0102]提取方法是基于praat、python软件,使用parselmouth.praat接口,具体参见文献:[0103]jadoul,y.,thompson,b.,&deboer,b.(2018).introducingparselmouth:apythoninterfacetopraat.journalofphonetics,71,1-15.https://doi.org/10.1016/j.wocn.2018.07.001[0104]localjitter=call(pointprocess,″getjitter(local)″,0,0,0.0001,0.02,1.3)[0105]localabsolutejitter=call(pointprocess,″getjitter(local,absolute)″,0,0,0.0001,0.02,1.3)[0106]rapjitter=call(pointprocess,″getjitter(rap)″,0,0,0.0001,0.02,1.3)[0107]ppq5jitter=call(pointprocess,″getjitter(ppq5)″,0,0,0.0001,0.02,1.3)[0108]ddpjitter=call(pointprocess,″getjitter(ddp)″,0,0,0.0001,0.02,1.3)[0109]localshimmer=call([sound,pointprocess],″getshimmer(local)″,0,0,0.0001,0.02,1.3,1.6)[0110]localdbshimmer=call([sound,pointprocess],″getshimmer(local_db)″,0,0,0.0001,0.02,1.3,1.6)[0111]apq3shimmer=call([sound,pointprocess],″getshimmer(apq3)″,0,0,0.0001,0.02,1.3,1.6)[0112]aqpq5shimmer=call([sound,pointprocess],″getshimmer(apq5)″,0,0,0.0001,0.02,1.3,1.6)[0113]apq11shimmer=call([sound,pointprocess],″getshimmer(apq11)″,0,0,0.0001,0.02,1.3,1.6)[0114]ddashimmer=call([sound,pointprocess],″getshimmer(dda)″,0,0,0.0001,0.02,1.3,1.6)[0115]minf0=call(broad_pitch,″getminimum″,0,0,″hertz″,″parabolic″)#getminpitch[0116]maxf0=call(broad_pitch,″getmaximum″,0,0,″hertz″,″parabolic″)#getmaxpitch[0117]meanf0=call(pitch,″getmean″,0,0,″hertz″)#getmeanpitch[0118]stdevf0=call(pitch,″getstandarddeviation″,0,0,″hertz″)#getstandarddeviation[0119]hnr=call(harmonicity,″getmean″,0,0)[0120]提取脚本基于parselmouthpraatscriptsinpythoncontributors:davidr.feinbergdatecreated:2018-11-1810:46amlastupdated:2019-10-0903:29amidentifier:doi10.17605/osf.io/6dwr3thisrepoislinkedtoacitableversionofthepitch/hnrscriptonthe《ahref=″https://osf.io/6dwr3/″》opensciencefoundationwebsitehere《/a》thedoifortheprojectisdoi《ahref=″doi10.17605/osf.io/6dwr3″》10.17605/osf.io/6dwr3《/a》[0121])提取非静默暂停个数(filledpause、repetition、lengthening、repair),音调(汉语音调)等特征,[0122]提取方法是基于praat软件,使用prosogram软件,具体参见文献:[0123]mertens,piet(toappear2020)theprosogrammodelforpitchstylizationanditsapplicationsinintonationtranscription.inbarnes,j.a.andshattuck-hufnagel,s.(eds)prosodictheoryandpractice.cambridge,ma:mitpress.[0124]5)提取pitch(梅而系数12个)等特征,[0125]提取方法是基于praat软件,使用opensmile软件,具体参见文献:[0126]eyben,f.,m.,&schuller,b.(2010,october).opensmile:themunichversatileandfastopen-sourceaudiofeatureextractor.lnproceedingsofthe18thacminternationalconferenceonmultimedia(pp.1459-1462).[0127]mfcc计算步骤:[0128]把信号切分成帧[0129]计算每帧的功率谱周期图估计(theperiodogramestimateofthepowerspectrum)[0130]使用梅尔滤波器对每一帧的功率谱滤波,再把每一帧滤波后的能量相加得到能量总和[0131]求所有滤波器组能量总和的对数[0132]对上一步得到的结果做离散余弦变换[0133]保留2-13的离散余弦对数,舍弃其他的[0134]mfcc提取脚本基于mfcc12_e_d_a.conf,取12个系数,具体参见文献:[0135]schuller,b.,steidl,s.,&batliner,a.(2009).theinterspeech2009emotionchallenge.intenthannualconferenceoftheinternationalspeechcommunicationassociation.[0136]技术方案中所述的数据平衡是指:健康和高危的比例是不平衡的,使用上采样、下采样、smote等方法平衡数据后,能有效提高分类效果。[0137]数据平衡使用基于python的imbalanced-learn库,具体参见文献:[0138]g.,nogueira,f.,&aridas,c.k.(2017).imbalanced-learn:apythontoolboxtotacklethecurseofimbalanceddatasetsinmachinelearning.thejournalofmachinelearningresearch,18(1),559-563.[0139]5.利用svm训练老年性痴呆病语音和健康语音模型[0140]1)利用python软件得到语音信号的多特征向量之后,设定标签,把相对安静环境和一定噪声环境中的老年性痴呆病语音的特征向量标签设为1,健康语音的特征向量标签设为0,把带标签的向量按行排列,存成features.csv数据文件,把文件随机分成10份,其中9份用来训练,1份用来测试,即10折交叉验证,重复10次,最后评估准确率取10次的平均值;[0141]2)训练语音模型利用libsvm(alibraryforsupportvectormachines)中的python语言实现,调用svc.svm训练函数,利用features.csv数据文件中的9份进行老年性痴呆病语音和健康语音的模型训练,其中svm的类型采用c-svc,核函数采用linear线性核函数,惩罚系数c设为0.1;libsvm库的具体用法参照文献:[0142]c.-c.changandc.-j.lin.libsvm:alibraryforsupportvectormachines.acmtransactionsonintelligentsystemsandtechnology,2:27:1--27:27,2011.[0143]6.利用svm分类方法进行分类,实现老年性痴呆病语音评估[0144]svm分类方法利用libsvm工具箱中python语言实现。利用步骤5得到的语音模型,调用svm.predict()预测函数,利用features.csv数据文件中的测试集进行测试,得到老年性痴呆病语音分类结果,即为老年性痴呆病的评估结果。[0145]此处步骤5和步骤6可以同时完成,利用整个features.csv数据文件,调用libsvm软件包中svc.svm训练函数,设参数cv为10,采用10折交叉验证法同时进行模型训练和分类,其中svm的类型采用c-svc,核函数采用linear线性核函数,惩罚系数c设为0.1,得到uar=85%以上的老年性痴呆病语音评估准确率。[0146]实施例[0147]为了更好的说明本发明的先进性,在自然噪声环境下进行实际实验验证本发明方法老年性痴呆病语音评估的准确率,具体步骤如下:[0148]1.语音采集模块录制语音,收集建立老年性痴呆病语音库和健康语音库[0149]为了更好的说明本发明的先进性,本发明建立了一定噪声环境下的老年性痴呆病语音库和健康语音库。相对安静环境和一定噪声环境中的老年性痴呆病语音库和健康语音库均来自北京老年脑健康数据库,采用pad录制,其中老年性痴呆病语音500多个;健康语音200多个;噪声均来自环境真实噪声;老年性痴呆病语音和健康语音均转换为16khz、16bit、单声道的wav格式;得到噪声环境中的老年性痴呆病语音库和健康语音库;[0150]2.语音预处理及特征提取模块[0151]1)对语音信号进行预处理[0152]用sox处理声音为标准pcm格式头wav、单声道、16khz、16bit。[0153]用sox软件做音量归一化[0154]用低通、高通滤波器滤除50hz以下、8000hz以上信号[0155]先采样前2秒或后2秒噪声样本,再通过噪声滤波器去除噪声[0156]2)提取基于音素的音素数、语速、暂停率、发音率、平均暂停时长等特征[0157]提取方法是使用praat软件,具体参见文献:[0158]paulboersma&davidweenink(2018):praat:doingphoneticsbycomputer[computerprogram].version6.0.37,retrieved14march2018fromhttp://www.praat.org/[0159]根据信号强度(intensity)确定静默门限(silence_threshold)、相邻波峰最小强度差(minimum_dip_between_peaks)、最短静默时长(minimum_pause_duration)、最短发音时长(minimum_sounding_duration)来确定是否为静默或者有话音,标定每段静默的开始和结束位置,基于此计算出语速、暂停率、发音率、平均暂停时长等。[0160]语速(speechrate)=音素数/总时长[0161]音素数(syllable)[0162]暂停率(pauseratio)=暂停时长/总时长[0163]发音率(phonationratio)=发音时长/总时长[0164]平均暂停时长(meanpausetime)=暂停时长/暂停个数[0165]提取脚本基于praatscriptsyllablenuclei2008nivjadejongandtonwempe2010.09.17byhugoquené,ingridpersoon,&nivjadejongbugfixedconcerningsummingtotalpause,feb28th2011translatedtopythonin2019bydavidfeinberg[0166]3)提取jitter、shimmer、f0相关(min/max/medium/mean/variance)等特征,[0167]提取方法基于praat、python软件,使用parselmouth.praat接口,具体参见文献:[0168]jadoul,y.,thompson,b.,&deboer,b.(2018).introducingparselmouth:apythoninterfacetopraat.journalofphonetics,71,1-15.https://doi.org/10.1016/j.wocn.2018.07.001[0169]localjitter=call(pointprocess,″getjitter(loca])″,0,0,0.0001,0.02,1.3)[0170]]ocalabsolutejitter=call(pointprocess,″getjitter(local,absolute)″,0,0,0.0001,0.02,1.3)[0171]rapjitter=call(pointprocess,″getjitter(rap)″,0,0,0.0001,0.02,1.3)[0172]ppq5jitter=call(pointprocess,″getjitter(ppq5)″,0,0,0.0001,0.02,1.3)[0173]ddpjitter=call(pointprocess,″getjitter(ddp)″,0,0,0.0001,0.02,1.3)[0174]localshimmer=call([sound,pointprocess],″getshimmer(local)″,0,0,0.0001,0.02,1.3,1.6)[0175]]ocaldbshimmer=call([sound,pointprocess],″getshimmer(local_db)″,0,0,0.0001,0.02,1.3,1.6)[0176]apq3shimmer=call([sound,pointprocess],″getshimmer(apq3)″,0,0,0.0001,0.02,1.3,1.6)[0177]aqpq5shimmer=ca]l([sound,pointprocess],″getshimmer(apq5)″,0,0,0.0001,0.02,1.3,1.6)[0178]apq11shimmer=call([sound,pointprocess],″getshimmer(apq11)″,0,0,0.0001,0.02,1.3,1.6)[0179]ddashimmer=call([sound,pointprocess],″getshimmer(dda)″,0,0,0.0001,0.02,1.3,1.6)[0180]minf0=call(broad_pitch,″getminimum″,0,0,″hertz″,″parabolic″)#getminpitch[0181]maxf0=call(broad_pitch,″getmaximum″,0,0,″hertz″,″parabolic″)#getmaxpitch[0182]meanf0=call(pitch,″getmean″,0,0,″hertz″)#getmeanpitch[0183]stdevf0=call(pitch,″getstandarddeviation″,0,0,″hertz″)#getstandarddeviation[0184]hnr=call(harmonicity,″getmean″,0,0)[0185]提取脚本基于parselmouthpraatscriptsinpythoncontributors:davidr.feinbergdatecreated:2018-11-1810:46amlastupdated:2019-10-0903:29amidentifier:doi10.17605/osf.io/6dwr3thisrepoislinkedtoacitableversionofthepitch/hnrscriptonthe《ahref=″https://osf.io/6dwr3/″》opensciencefoundationwebsitehere《/a》thedoifortheprojectisdoi《ahref=″doi10.17605/osf.io/6dwr3″》10.17605/osf.io/6dwr3《/a》[0186]4)提取非静默暂停个数(filledpause、repetition、lengthening、repair),音调(汉语音调)等特征,[0187]提取方法是基于praat软件,使用prosogram软件,具体参见文献:[0188]mertens,piet(toappear2020)theprosogrammodelforpitchstylizationanditsapplicationsinintonationtranscription.inbarnes,j.a.andshattuck-hufnagel,s.(eds)prosodictheoryandpractice.cambridge,ma:mitpress.[0189]5)提取pitch(mfcc梅尔倒谱系数12个)等特征,[0190]提取方法是基于praat软件,使用opensmile软件,具体参见文献:[0191]eyben,f.,m.,&schuller,b.(2010,october).opensmile:themunichversatileandfastopen-sourceaudiofeatureextractor.inproceedingsofthe18thacminternationalconferenceonmultimedia(pp.1459-1462).[0192]mfcc计算步骤:[0193]把信号切分成帧[0194]计算每帧的功率谱周期图估计(theperiodogramestimateofthepowerspectrum)[0195]使用梅尔滤波器对每一帧的功率谱滤波,再把每一帧滤波后的能量相加得到能量总和[0196]求所有滤波器组能量总和的对数[0197]对上一步得到的结果做离散余弦变换[0198]保留2-13的离散余弦对数,舍弃其他的[0199]mfcc提取脚本基于mfcc12_e_d_a.conf,取12个系数,具体参见文献:[0200]schuller,b.,steidl,s.,&batliner,a.(2009).theinterspeech2009emotionchallenge.intenthannualconferenceoftheinternationalspeechcommunicationassociation.[0201]3.技术方案中所述的数据平衡是指:健康和高危的比例是不平衡的,使用上采样、下采样、smote等方法平衡数据后,能有效提高分类效果。[0202]4.数据平衡使用基于python的imbalanced-learn库,具体参见文献:[0203]g.,nogueira,f.,&aridas,c.k.(2017).imbalanced-learn:apythontoolboxtotack]ethecurseofimbalanceddatasetsinmachinelearning.thejournalofmachinelearningresearch,18(1),559-563.[0204]5.利用svm训练老年性痴呆病语音和健康语音模型[0205]1)利用python软件得到语音信号的多特征向量之后.设定标签,把相对安静环境和一定噪声环境中的老年性痴呆病语音的特征向量标签设为1,健康语音的特征向量标签设为0,把带标签的向量按行排列,存成features.csv数据文件,把数随机分成10份,其中9份用来训练,1份用来测试,即10折交叉验证,循环10次,最后评估准确率取10次的平均值;[0206]2)训练语音模型利用svm工具箱(alibraryforsupportvectormachines,libsvm)中的python语言实现,调用svm.predict()预测函数,利用features.csv数据文件中的9份进行老年性痴呆病语音和健康语音的模型训练,其中svm的类型采用c-svc,核函数采用linear线性核函数,惩罚系数c设为0.1;libsvm库的具体用法参照文献:[0207]c.-c.changandc.-j.lin.libsvm:alibraryforsupportvectormachines.acmtransactionsonintelligentsystemsandtechnology,2:27:1--27:27,2011.[0208]6.利用svm分类方法进行分类,实现老年性痴呆病语音评估。[0209]svm分类方法利用libsvm工具箱中python语言实现。利用步骤5得到的语音模型,调用svm.predict()预测函数,利用features.csv数据文件中的测试集进行测试,得到老年性痴呆病语音分类结果,即为老年性痴呆病的评估结果。[0210]此处步骤5和步骤6同时完成,利用整个features.csv数据文件,调用libsvm工具箱中svc.svm训练函数,设参数cv为10,采用10折交叉验证法同时进行模型训练和分类,其中svm的类型采用c-svc,核函数采用linear线性核函数,惩罚系数c设为0.1,得到uar=85%以上的老年性痴呆病的评估准确率。[0211]由于本发明采用的梅尔倒谱系数、语速、犹豫率、平均暂停时长等特征提取方法加入了去除噪声步骤,使得svm分类方法在一定噪声环境下取得了较高的老年性痴呆病的评估准确率,实际实验结果说明本发明方法适用于一定噪声环境下的老年性痴呆病的语音评估。当前第1页12当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1