本发明涉及语种识别技术领域,尤其涉及一种语种识别方法及系统。
背景技术:
目前,自动语种识别在语音翻译,重点人群监护,信息安全,军事安全等领域有着广泛的应用前景,现有方法无论是gmm(adaptivebackgroundmixturemodelsforreal-timetracking)-ivector框架还是深度神经网络框架都面临解决识别鲁棒性的问题,本发明从语音样本预处理、语音特征鲁棒性处理、增加人声检测模块、语种特征匹配的鲁棒性处理等方面增强了语种识别的鲁棒性。
技术实现要素:
本发明为一种语种识别方法及系统,用于解决语种识别领域中对集外数据鲁棒性识别较难的问题。
本发明提供一种语种识别方法,包括:
s0:建立背景噪音库和人声数据库,所述人声数据库包含多个语种的语音数据;
s100:基于所述背景噪音库对所述人声数据库中的语音数据进行预处理;
s200:对预处理后的语音数据进行活动语音段检测,拼接包含活动语音段的帧以生成活动语音数据,并提取所述活动语音数据的mfcc特征向量,建立人声gmm模型;
s300:对背景噪音库中的噪音数据进行活动噪音段检测,拼接包含活动噪音段的帧以生成活动噪音数据,并提取所述活动噪音数据的mfcc特征向量,建立噪音gmm模型;
s400:基于各个语种的活动语音数据的mfcc特征向量,建立gmm-ivector语种识别模型,并生成各个语种的语种特征库;
s500:对待测声音数据进行活动语音段检测、拼接包含活动语音段的帧并提取mfcc特征向量,基于所述人声gmm模型和噪音gmm模型判断待测声音数据是否为人声信号;
s600:若判断待测声音数据为人声信号,则利用所述gmm-ivector语种识别模型提取该待测声音数据的ivector特征,并基于所述语种特征库进行语种识别。
更进一步的,还包括语种注册步骤:当需要增加语种时,采集该语种的语音数据,并进行所述预处理、活动语音段检测,拼接包含活动语音段的帧并提取mfcc特征向量,进而利用所述gmm-ivector语种识别模型提取该待测声音数据的ivector特征,生成该语种对应的语种特征库。
更进一步的,所述步骤s100包括:
s110:对人声数据库中的原始语音数据s1进行重采样,并分别进行声强归一化和语速随机重采操作,得到声强归一语音数据s1’和语速随机重采的语音数据s1”;
s120:对所述声强归一语音数据s1’叠加背景噪音库中的噪音信号,得到叠加噪音的语音数据s2;
s130:对所述语速随机重采的语音数据s1”叠加人声数据库中的其他任一语音数据,得到叠加其他人声的语音数据s3;
s140:将所述语音数据s1、s2和s3拼接得到预处理后的语音数据。
更进一步的,所述步骤s200包括:
s210:基于高低频带能量比较对预处理后的语音数据进行活动语音段检测;
s220:拼接包含活动语音段的帧以生成活动语音数据;
s230:提取所述活动语音数据的mfcc特征、mfcc一阶特征和mfcc二阶特征,得到mfcc特征向量,并进行归一化;
s240:基于所述归一化后的mfcc特征向量建立人声gmm模型。
更进一步的,所述步骤s300包括:
s310:基于高低频带能量比较对预处理后的语音数据进行活动噪音段检测;
s320:拼接包含活动噪音段的帧以生成活动噪音数据;
s330:提取所述活动噪音数据的mfcc特征、mfcc一阶特征和mfcc二阶特征,得到mfcc特征向量,并进行归一化;
s340:基于所述归一化后的mfcc特征向量建立噪音gmm模型。
更进一步的,所述步骤s400包括:
s410:对于每个语种活动语音数据的mfcc特征向量,按其所在帧的先后顺序拼接在一起得到顺序拼接的mfcc特征向量,再按照随机顺序拼接在一起得到随机拼接的mfcc特征向量,将所述顺序拼接的mfcc特征向量和所述随机拼接的mfcc特征向量拼接在一起并进行归一化,得到该语种的归一化mfcc特征向量;
s420:基于各个语种的归一化mfcc特征向量建立gmm-ivector语种识别模型,并将各个语种的语音数据输入该gmm-ivector语种识别模型以得到各个语种的特征矩阵,并保存到各个语种的语种特征库。
更进一步的,所述步骤s500包括:
s510:对待测声音数据进行活动语音段检测、拼接包含活动语音段的帧并提取mfcc特征向量;
s520:将该mfcc特征向量分别输入所述人声gmm模型和噪音gmm模型,得到该待测声音数据为人声的后验概率和该待测声音数据为噪音的后验概率;
s530:通过比较两个后验概率来判断待测声音数据是否为人声信号。
更进一步的,所述步骤s600包括:
s610:若判断待测声音数据为人声信号,则利用所述gmm-ivector语种识别模型提取该待测声音数据的ivector特征;
s620:分别计算该待测声音数据的ivector特征与各个语种特征集的平均余弦距离;
s630:找出最大的两个平均余弦距离值,对其进行鲁棒性判断,确定该待测声音数据的语种。
更进一步的,所述鲁棒性判断采用以下判断条件:
其中,maxscore1和maxscore2为最大的两个平均余弦距离值;
若maxscore1和maxscore2满足上述条件,则确定该待测声音数据的语种为maxscore1对应的语种。
本发明的另一目的是提供一种语种识别系统,包括:
人声检测模块:用于基于人声gmm模型和噪音gmm模型对待测声音数据进行检测,判断是否为人声;
语种识别模块:用于利用gmm-ivector语种识别模型获得所述将待测声音数据的ivector特征,并与各个语种特征库进行比对,确定待测声音数据的语种;
语种注册模块:用于当需要增加语种时,采集该语种的语音数据,并进行所述预处理、活动语音段检测,拼接包含活动语音段的帧并提取mfcc特征向量,进而利用所述gmm-ivector语种识别模型提取该待测声音数据的ivector特征,生成该语种对应的语种特征库;
其中,所述人声检测模块包括语音预处理单元、活动语音段检测单元、特征提取单元和gmm建模单元;
所述语音预处理单元用于对声音数据进行预处理;
所述活动语音段检测单元用于对所述预处理后的声音数据进行活动语音段检测;
所述特征提取单元用于对所述活动语音段检测后的声音数据进行mfcc特征提取;
所述gmm建模单元用于基于所述提取的mfcc特征建立人声gmm模型和噪音gmm模型,以判断待测声音数据是否为人声;
其中,所述语种识别模块通过分别计算该待测声音数据的ivector特征与各个语种特征集的平均余弦距离,并进行鲁棒性判断来确定该待测声音数据的语种。
本发明的有益效果在于:通过对语音样本进行预处理、对语音特征进行鲁棒性处理、增加人声检测模块和对语种特征匹配进行鲁棒性处理等方式增强了语种识别的鲁棒性,使得语音识别更加稳定准确。
附图说明
图1为本发明的语种识别方法流程示例图;
图2为本发明的语音预处理流程图;
图3为本发明的语音段检测流程图;
图4为本发明的语种识别流程图;
图5为本发明的语种注册流程图;
图6为本发明的语种识别系统流程示例图。
具体实施方式
下面将结合附图和具体实施例对本发明的语种的识别方法及系统做进一步地说明与叙述,需要说明的是,本发明中的所有实施例仅为解释本发明的具体技术方案而使用,本领域的技术人员结合本发明中的实施例在未进行创造性劳动的前提下对本发明中实施例做出的技术改进均属于本发明中保护的范围。
当前无论是传统学习方法还是当下流行的深度学习方法都面临着集外数据的挑战,由于声音数据有很大的随机性,所以设定的训练集很难囊括较全面的数据。但是人的声音具有一些共同的特性,符合gmm建模的要求,gmm的痛点在于样本数据过少会导致过拟合,但是本发明中对所有人声建立gmm,这样的人声无需说话人标签,也无需关注语种,因此这种人声数据容易获得。同样的,背景噪声也可以用gmm模型建模,当人声的gmm模型、背景噪音的gmm模型建好之后,就可以计算出一条语音在人声gmm模型和背景噪音gmm模型的后验概率对数似然比,若所述对数似然比不大于给定阈值时,则不认为他是一条人声数据,所以无需进行语种识别,此种方式可以在一定程度上减少运算量,同时也避免了误识别,使识别过程更加准确。
如图1所示,本发明提供一种语种识别方法,包括:
s0:建立背景噪音库和人声数据库,所述人声数据库包含多个语种的语音数据;
s100:基于所述背景噪音库对所述人声数据库中的语音数据进行预处理;
s200:对预处理后的语音数据进行活动语音段检测,拼接包含活动语音段的帧以生成活动语音数据,并提取所述活动语音数据的mfcc(mel-scalefrenquencycepstralcoefficients)特征向量,建立人声gmm模型;
s300:对背景噪音库中的噪音数据进行活动噪音段检测,拼接包含活动噪音段的帧以生成活动噪音数据,并提取所述活动噪音数据的mfcc特征向量,建立噪音gmm模型;
s400:基于各个语种的活动语音数据的mfcc特征向量,建立gmm-ivector语种识别模型,并生成各个语种的语种特征库;
s500:对待测声音数据进行活动语音段检测、拼接包含活动语音段的帧并提取mfcc特征向量,基于所述人声gmm模型和噪音gmm模型判断待测声音数据是否为人声信号;
s600:若判断待测声音数据为人声信号,则利用所述gmm-ivector语种识别模型提取该待测声音数据的ivector特征,并基于所述语种特征库进行语种识别。
本发明中的语种识别方法的优点在于,通过对语音样本进行预处理、对语音特征进行鲁棒性处理、增加人声检测模块和对语种特征匹配进行鲁棒性处理等方式增强了语种识别的鲁棒性,使得语音识别更加稳定准确,增强了集外数据的鲁棒性。
下面,将结合具体实施例对上述方法的具体步骤做详细清楚的叙述与说明。
s0:建立背景噪音库和人声数据库,所述人声数据库包含多个语种的语音数据。
本发明中的人声数据库采用已有的语种数据库,所述语种数据库中的数据集中包括35个语种;所述背景噪音库为在不同环境下录制的环境噪音,如户外、室内、地铁或车站等场景的背景噪音数据。
如图2所示,为语音预处理流程图,对应步骤s100:基于所述背景噪音库对所述人声数据库中的语音数据进行预处理。具体的,所述步骤s100包括如下子步骤:
s110:对人声数据库中的原始语音数据s1进行重采样,并分别进行声强归一化和语速随机重采操作,得到声强归一语音数据s1’和语速随机重采的语音数据s1”;
s120:对所述声强归一语音数据s1’叠加背景噪音库中的噪音信号,得到叠加噪音的语音数据s2;
s130:对所述语速随机重采的语音数据s1”叠加人声数据库中的其他任一语音数据,得到叠加其他人声的语音数据s3;
s140:将所述语音数据s1、s2和s3拼接得到预处理后的语音数据。
首先从人声数据库中对每个语种数据随机抽取10个小时的语音数据分别作为一条原始语音数据,记为s1;随机提取人声数据库中任一其他人声语音数据,记为sother;将背景噪音库中的噪音数据信号记为snoise。
分别计算原始语音数据s1、噪音数据snoise和其他人声语音数据sother的语音长度,记为l1、l2和l3,将原始语音数据s1重采样到16000hz并做声强归一化操作得到语音数据s1’,将获取的背景噪音snoise按照一定信噪比叠加到原始语音数据s1中生成语音数据s2,s2的叠加长度为min(l1,l2),最终s2=s1’+rand*0.5*snoise;然后将原始语音数据s1重采样到语速为原始语速的0.8-1.2倍,即s1”=resample(s1,sampleratio),其中sampleratio为[0.8,1.2]之间的随机值,将重采样后的语音数据s1”与其他人声数据sother进行叠加,生成语音数据s3,s3的叠加长度为min(l1,l3),最终s3=s1”+rand*0.5*sother,其中,rand为[0,1]之间的随机数。最后,将原始语音数据数据s1、语音数据s2和语音数据s3拼接,形成语音数据s,其中,s={s1,s2,s3}。
上述即步骤s100对语音数据进行预处理的过程。
s200:对预处理后的语音数据进行活动语音段检测,拼接包含活动语音段的帧以生成活动语音数据,并提取所述活动语音数据的mfcc特征向量,建立人声gmm模型。
如图3所示,为语音段检测流程图。所述步骤s200包括如下子步骤:
s210:基于高低频带能量比较对预处理后的语音数据进行活动语音段检测。
首先,对所述预处理后的语音数据s进行重采样并分帧。将语音数据s进行重采样处理得到sd,将采样率从16000hz降低到8000hz,即sd=resample(s,0.5);将sd按照每160个采样点进行分帧,记作{sd1,sd2,sd3...sdi...sdn}。
然后,设置初始最小能量标记e_min=100,设置初始最大能量标记e_max=0.1;
对每一帧sdi的能量记作e_full,比较e_full与e_min、e_max值的大小,将最大值更新到e_max中,最小值更新到e_min中;
对sdi做快速傅里叶变换,记作yi=fft(sdi,fftsize),fft的点数为fftsize,其中fftsize=256;
令yi(1:qfftsize)=0,yi(fftsize-(qfftsize-1):fftsize)=0,其中qfftsize=64;
对yi进行傅里叶变换并取前160个数值,即:yis=ifft(yi,fftsize),yis=yis(1:160);
计算yis的能量,记作e_high,即
计算全频带能量阈值,记作thrr,则有:
计算高频带相对于低频带能量比值,记作e_r,则有:
通过全频带能量阈值和高频带与低频带能量比值判断当前帧是否为语音帧,并形成所有帧的活动语音段检测标记。通过thrr和e_r判断当前帧是否为语音帧,当前帧是否为语音帧记作ti,其中i表示帧的编号,判断方法为ti=(e_full>thrr||e_r>10),其中||表示或操作。最终ti的结果为1或0,值为1则表示该帧是活动语音段,为0则表示该帧不是活动语音段。最终,形成所有帧的vad标记,记作t={t1,t2,t3...ti}。
s220:拼接包含活动语音段的帧以生成活动语音数据。
对所述活动语音段检测标记做中值滤波处理,将所有语音帧依次拼接形成最终的语音段检测数据svad。具体的,对上述得到的vad标记t做中值滤波,记作tsmooth,则有:
tsmooth=medfilt(t,smoothlength),其中smoothlength为滤波窗大小,其值设为5;
然后,将ti为1的对应帧依次拼接,拼接后的语音段检测数据记为svad,由于vad操作中进行了从16000到8000的降采样,因此svad中单帧的起止位置应乘以2,即svad中单帧的采样点个数为320。
s230:提取所述活动语音数据的mfcc特征、mfcc一阶特征和mfcc二阶特征,得到mfcc特征向量,并进行归一化。
对svad提取mfcc,mfcc一阶和mfcc二阶特征。mfcc阶数系数设为12,则有总共36维的向量(记作mfcc36)作为单帧的特征向量。
mfcc一阶特征记作mfcc1,mfcc二阶特征记作mfcc2,其中,mfcc1和mfcc2均为12*n的矩阵;具体如下:
mfcc1[i]=-2*mfcc[i-2]-mfcc[i-1]+mfcc[i+1]+2*mfcc[i+2]
其中,mfcc1[i]表示mfcc1特征的第i列。
mfcc2[i]=-2*mfcc1[i-2]-mfcc1[i-1]+mfcc1[i+1]+2*mfcc1[i+2]
其中,mfcc2[i]表示mfcc2特征的第i列。
将mfcc、mfcc1和mfcc2按行进行拼接,如下所示:
mfcc36=[mfcc;mfcc1;mfcc2]
其中,mfcc36的维度为36*n。
将mfcc36特征向量在列方向随机重排,将重排后的结果更新到mfcc36特征向量中,然后按照每500列为一组将mfcc36分组,每组记作mfccseg,mfccseg的维度为36*500,对mfccseg进行mvn均值方差归一化操作,将得到的结果记为mfccnorm。通过均值方差归一化后的mfccnorm特征向量的识别精度更高,能够在一定程度上减少随时间变化的特征分布不匹配的程度。
s240:基于所述归一化后的mfcc特征向量建立人声gmm模型。
将步骤s230中得到的mfccnorm特征向量使用gmm高斯混合模型进行建模,并使用em算法估算出人声gmm模型的参数,其中高斯核的个数为256。
具体的,gmm模型可表示为:
其中,x为mfccnorm,wi为高斯核的权重,m表示高斯核的个数,本实例中m取值为256,bi为d维的联合高斯概率分布。
所述bi(x)可表示为:
其中,d的值为36,wi,μi和∑i为需要估计的参数。
在进行gmm参数的估计时使用em算法进行估计,所述em算法可分为e步骤和m步骤,通过对e步骤和m步骤依次迭代直到收敛得到最终的人声gmm模型。
所述e步骤是根据wi,μi和∑i的初始值或者上一次迭代的wi,μi和∑i计算隐变量的后验概率,记作:
其中λ为隐变量,i表示高斯分量编号,t为特征向量维度编号,wi的初始值为1/m,μi的初始值为0,∑i的初始值为随机值。
所述m步骤是根据e步骤中的p(i|xt,λ)更新wi,μi和∑i,其中:
通过上述e步骤和m步骤可生成人声gmm模型,记作gmmspeech。
上述步骤为建立人声gmm模型的具体过程,下面对建立噪音gmm模型的过程做简要叙述。
s300:对背景噪音库中的噪音数据进行活动噪音段检测,拼接包含活动噪音段的帧以生成活动噪音数据,并提取所述活动噪音数据的mfcc特征向量,建立噪音gmm模型。具体的,步骤s300还分为如下子步骤:
s310:基于高低频带能量比较对预处理后的语音数据进行活动噪音段检测;
s320:拼接包含活动噪音段的帧以生成活动噪音数据;
s330:提取所述活动噪音数据的mfcc特征、mfcc一阶特征和mfcc二阶特征,得到mfcc特征向量,并进行归一化;
s340:基于所述归一化后的mfcc特征向量建立噪音gmm模型。
所述噪音gmm模型的建立过程与人声gmm模型的建立过程相同,故本部分具体方法过程参照步骤s200,最终得到噪音gmm模型,记作gmmnoise。
本方法的步骤s400:基于各个语种的活动语音数据的mfcc特征向量,建立gmm-ivector语种识别模型,并生成各个语种的语种特征库。具体的,所述步骤s400包括:
s410:对于每个语种活动语音数据的mfcc特征向量,按其所在帧的先后顺序拼接在一起得到顺序拼接的mfcc特征向量,再按照随机顺序拼接在一起得到随机拼接的mfcc特征向量,将所述顺序拼接的mfcc特征向量和所述随机拼接的mfcc特征向量拼接在一起并进行归一化,得到该语种的归一化mfcc特征向量;
s420:基于各个语种的归一化mfcc特征向量建立gmm-ivector语种识别模型,并将各个语种的语音数据输入该gmm-ivector语种识别模型以得到各个语种的特征矩阵,并保存到各个语种的语种特征库。
关于gmm-ivector的建模过程为现有技术,故此处不再赘述。
s500:对待测声音数据进行活动语音段检测、拼接包含活动语音段的帧并提取mfcc特征向量,基于所述人声gmm模型和噪音gmm模型判断待测声音数据是否为人声信号。
所述步骤s500具体包括:
s510:对待测声音数据进行活动语音段检测、拼接包含活动语音段的帧并提取mfcc特征向量。
令待测声音数据标记为adata,根据所述步骤s100至s200对待测声音数据adata进行活动语音段检测、拼接包含活动语音段的帧并提取mfcc特征向量,得到对应的语音数据mfccnorm。其中,若待测语声音数据adata中的活动语音过短,则不进行人声判断,判断的方法为:length(find(t>0))>200,即只有语音帧的个数大于200时才进行后续操作。
s520:将该mfcc特征向量分别输入所述人声gmm模型和噪音gmm模型,得到该待测声音数据为人声的后验概率和该待测声音数据为噪音的后验概率。
使用上述步骤中得到语音数据mfccnorm作为gmmspeech的输入数据,计算后验概率的对数形式,将结果记作llk_speech;
使用语音数据mfccnorm作为gmmnoise的输入数据,计算后验概率的对数形式,将结果记作llk_noise。
s530:通过比较两个后验概率来判断待测声音数据是否为人声信号。
计算上述中llk_speech和llk_noise的对数似然比thr,具体的,对数似然比thr=llk_speech-llk_noise。最后,将对数似然比thr的结果设定阈值为0.5,当thr>0.5时,则判断该段语音为人声,进入后续步骤;否则判断其不是人声,终止识别过程。
s600:若判断待测声音数据为人声信号,则利用所述gmm-ivector语种识别模型提取该待测声音数据的ivector特征,并基于所述语种特征库进行语种识别。
所述步骤s600具体包括:
s610:若判断待测声音数据为人声信号,则利用所述gmm-ivector语种识别模型提取该待测声音数据的ivector特征。
使用最近邻插值方法将mfccnorm插值到36*500维度,记为feasrc;已知mfccnorm的维度为36*n,feasrc的维度为36*500,feasrc第i列对应mfccnorm的第floor(i×n÷500)列,其中,floor表示下取整;将feasrc通过gmm-ivector建模计算ivector特征,记为srcivs。
s620:分别计算该待测声音数据的ivector特征与各个语种特征集的平均余弦距离。
设语种数据中已注册的语种特征数据集为{dstivs1,dstivs2,dstivs3,...,dstivsn},其中n为已注册语种数量;然后,分别计算srcivs与{dstivs1,dstivs2,dstivs3,...,dstivsn}的平均余弦距离,将所述平均余弦距离记作{score1,score2,csore3,...,scoren};对{score1,score2,csore3,...,scoren}进行排序。
s630:找出最大的两个平均余弦距离值,对其进行鲁棒性判断,确定该待测声音数据的语种。
找出{score1,score2,csore3,...,scoren}中最大的两个平均余弦距离值,记作maxscore1和maxscore2。然后对上述两个平均余弦距离值进行判断,公式如下:
其中,条件1:maxscore1>0.2用于对类内距离做约束,表示特征的余弦距离必须大于0.2。条件2:
如图5所示,进一步的,本方法还包括语种注册步骤:当需要增加语种时,采集该语种的语音数据,并进行所述预处理、活动语音段检测,拼接包含活动语音段的帧并提取mfcc特征向量,进而利用所述gmm-ivector语种识别模型提取该待测声音数据的ivector特征,生成该语种对应的语种特征库。
具体的,将mfccnorm数据通过gmm-ivector模型计算出多个400维向量的ivector特征,然后随机选取2000组ivector向量作为该类语种的语种特征,并添加保存至数据库。
上述方法的优点在于可以在一定程度上减少运算量,同时也避免了误识别,使识别过程更加准确。
如图6所示,基于上述鲁棒性语种识别方法,本发明还提供了一种语种识别系统,包括:
人声检测模块:用于基于人声gmm模型和噪音gmm模型对待测声音数据进行检测,判断是否为人声;
语种识别模块:用于利用gmm-ivector语种识别模型获得所述将待测声音数据的ivector特征,并与各个语种特征库进行比对,确定待测声音数据的语种;
语种注册模块:用于当需要增加语种时,采集该语种的语音数据,并进行所述预处理、活动语音段检测,拼接包含活动语音段的帧并提取mfcc特征向量,进而利用所述gmm-ivector语种识别模型提取该待测声音数据的ivector特征,生成该语种对应的语种特征库;
其中,所述人声检测模块包括语音预处理单元、活动语音段检测单元、特征提取单元和gmm建模单元;
所述语音预处理单元用于对声音数据进行预处理;
所述活动语音段检测单元用于对所述预处理后的声音数据进行活动语音段检测;
所述特征提取单元用于对所述活动语音段检测后的声音数据进行mfcc特征提取;
所述gmm建模单元用于基于所述提取的mfcc特征建立人声gmm模型和噪音gmm模型,以判断待测声音数据是否为人声;
其中,所述语种识别模块通过分别计算该待测声音数据的ivector特征与各个语种特征集的平均余弦距离,并进行鲁棒性判断来确定该待测声音数据的语种。
本语种识别系统的具体操作流程已在上述方法中进行了详细的叙述与说明,故在此不再赘述,本系统同样可达到如上述方法中提到的有益效果。
需要说明的是,如上所述仅为本发明的实施方式而已,并不用于限制本发明。对于本领域技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原理内所作的任何修改、等同替换、改进等,均应包括在本发明的权利要求范围之内。