本发明涉及语音信号处理、模式识别等技术领域,特别涉及一种基于说话人分割和聚类的说话人数目判断方法。
背景技术:
随着语音处理技术的不断发展,说话人数目的准确判断,能够帮助分析语音记录的场景,优化说话人分离的效果,从而制定相应的策略提升识别的效果。例如,电话记录的双说话人场景;或者会议记录的多说话人场景。
现有的说话人数目判断方法中数目判断结果的准确性完全依赖于说话人分割和聚类的准确性,而由于说话人分割受到步长的影响,步长多是根据经验确定,所以难免出现不合适的情况,从而影响分割及后面的聚类准确性,最终使得说话人数目判断出现误差。
技术实现要素:
本发明提供一种说话人数目的判断方法,解决对于双说话人场景或多说话人场景,判断的说话人数目不准确的问题,提高判断说话人数目的准确度。
本发明采用如下技术方案:
一种说话人数目的判断方法,包括如下步骤:
接收语音数字信号,并对数字信号进行预处理;
提取预处理后的语音信号特征;
根据所述语音信号特征,将所述语音信号进行初步分割和初步聚类;
判断说话人数目是否为多人,若是,所述多人语音特征聚类,判断出说话人的数目,若否,判断出说话人数目是单人或双人;其中,多人为三人或三人以上。
进一步地,所述判断说话人数目是否为多人的步骤包括:
对语音信号的特征重新聚类;
利用总体变化因子模型提取当前各语音信号类的说话人因子向量;
根据所述说话人因子向量之间的距离计算不同语音信号类之间的相似度;
如果得到的最大相似度大于设定的第一阈值,则将最大相似度对应的两个语音信号类进行合并;然后重复计算过程;
否则,计算过程结束。
进一步地,所述多人语音特征聚类,判断出说话人的数目的步骤为:
利用总体变化因子模型提取当前各语音信号类的说话人因子向量;
利用概率线性鉴别分析plda技术从所述说话人因子向量中提取信道无关的说话人因子向量;
根据所述信道无关的说话人因子向量之间的距离计算不同语音信号类之间的相似度;
如果得到的最大相似度大于设定的第二阈值,则将最大相似度对应的两个语音信号类进行合并;然后重复计算过程;
否则,计算过程结束;
其中,将当前语音信号类的数目作为说话人数目。
进一步地,所述判断出说话人数目是单人或双人的步骤为:
利用总体变化因子模型提取当前各语音信号类的说话人因子向量;
利用大量离线数据训练的plda模型来计算各语音信号类的说话人因子向量之间与信道无关的plda得分;
如果得到的最大plda得分大于设定的第三阈值,则将最大plda得分对应的两个语音信号类进行合并;然后重复计算过程;
否则,计算过程结束;
其中,将当前语音信号类的数目作为说话人数目。
有益效果
本发明根据重分割后语音信号类中各分割信号段的语音信号特征计算重分割后各语音信号类的相似度,根据所述相似度计算结果获取说话人数目。由于对语音信号进行重分割,可以消除现有技术中对语音信号进行分割时的步长限制的影响,提高说话人分割的准确性,从而提高后续说话人数目判断的准确性,以提升语音识别效果。
附图说明
图1是本发明提供的的一个实施例的说话人数目判断方法的流程示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
参见图1,是本发明提供的一个实施例的说话人数目判断方法具体流程。该方法包括如下步骤:
s1:接收语音数字信号,并对数字信号进行预处理。
所述预处理主要是对数字信号进行端点检测,在信号中找到有效语音段,去除非语音段。
s2:提取预处理后语音信号特征。
所述语音信号特征,可以是plp特征,当然也可以是mfcc、plc等语音特征。
s3:根据所述语音信号特征,将所述语音信号进行初步分割和初步聚类。
具体的,按照贝叶斯信息准则,对语音段进行说话人变化点检测,实现语音段分割,其中变化点的选取考虑效率问题是有选取范围的,即如某个5s的语音段,在步长为1s的情况下,可能的变化点只有语音的1s,2s,3s,4s的位置。
基于分割后的语音子段的特征数据,按照贝叶斯准则进行聚类,调整聚类门限参数,使得最后聚成3类。
s4:判断说话人数目是否多人,若是转步骤s5,否则转步骤s6;
本案利用ivector因子分析技术判定说话人数目是否为多人,具体实现方法如下所述。
需要说明的是:本案中定义的多人为说话人人数大于等于三。
s5:多人聚类,判断出说话人数目;
同样利用ivector因子分析技术和plda技术判断多人情况下的说话人数目,具体实现方法如下所述。
s6:判断出说话人数目是单人还是双人。
利用ivector因子分析技术和plda技术判断说话人数目是单人还是双人,具体实现方法如下所述。
进一步地,所述步骤s4,判断说话人数目是否多人的步骤,利用ivector因子分析技术判定说话人数目是否为多人,具体实现流程步骤如下:
s401:获取用于说话人因子提取的tv模型参数;
所述参数包括语音段均值超矢量m和离线数据均值超矢量的均值m。
语音段均值超矢量获取方法:首先,利用离线数据训练好的通用背景模型,使用最大后验的自适应方法来得到每段语音的混合高斯模型,从而将对应的混合高斯模型各高斯的均值拼接起来得到均值超矢量。
离线数据均值超矢量的均值:直接根据离线数据训练好的通用背景模型的各高斯均值做平均。
s402:获取说话人因子w;
具体的,基于大量离线数据,采用em算法训练好的tv(totalvariability)模型,提取说话人的因子w,称为ivector(ivector是一个n维的向量,能够表征语音数据的说话人信息和信道信息,在说话人识别领域广泛使用)。模型公式如下:
m=m+tw(1)
其中,m为从当前语音提取的均值超矢量,m为离线数据均值超矢量的均值,t为因子载荷矩阵,w为说话人因子向量。
基于em算法训练tv模型得到t,再根据式一估算出说话人因子w,设这三类语音段的说话人因子分别为i1,i2,i3。
s403:计算说话人相似度,判断是否为多说话人。
计算上述三个因子两两之间的相似度,即它们的cos距离c12,c13,c23。
选取cmax=max{c12,c13,c23}。
若cmax<cthreshold,cthreshold是根据实验开发集合上参数调节的结果,这里可以取cthreshold=0.25,表示三个因子两两之间最大的相似度都相对较小,可以认为这3类的语音代表至少3个类别,而不能够继续聚类得到2类或者1类。所以判断说话人数目是多人;反之,判断说话人数目是单人或双人。
进一步地,所述步骤s5,多人聚类,判断出说话人数目步骤,利用ivector因子分析技术和plda技术判断多人情况下的说话人数目,具体实现方法步骤如下:
s501:对语音段数据进行重新聚类,对语音段类别数初始化;
具体的,设定说话人数目的上限值f,f的取值可根据实际应用情况设定,如我们这里取f=6,然后对所有语音子段的plp特征数据,按照贝叶斯信息准则进行聚类处理,调整聚类的门限参数,使得最后聚类的类别数为f,即语音段类别数t初始化为f。
s502:判断t类说话人是否可以再进行聚类,若是步骤s503,否则转步骤s504;
首先,利用ivector因子分析技术计算t类说话人因子向量i1,i2,i3,...,it,并计算t个类的说话人因子两两之间的相似度,即它们的cos距离,选取cos距离最大的两个类a和b(代表这两个类的语音特征数据最相似)。
再利用ivector因子分析技术和plda技术判断这两个类是否是一个说话人,即这两类语音是单人还是双人,若是单人,则判定t类说话人可以再进行聚类,否则判定t类说话人不可以再进行聚类。利用ivector因子分析技术和plda技术判断是否是一个说话人的具体方法在下面详细描述,此处不再重复说明。
s503:t=t-1,并判断t是否等于三,若是转步骤s505,否则转步骤s502;
s504:判定说话人数目为t,结束;
s505:判定说话人数目为三,结束。
进一步地,所述步骤s6,判断出说话人数目是单人还是双人步骤,利用ivector因子分析技术和plda技术判断说话人数目是单人还是双人,具体实现方法步骤如下:
s601:对语音段的特征数据重新聚类;
将初步聚类后的3类的语音段的特征数据按照贝叶斯信息准则进行再次聚类,得到2类语音段的特征数据。
s602:对聚类后的语音段特征数据进行重分割;
利用2类语音段的特征数据进行gmm模型训练,然后利用训练得到的2个gmm模型,对所有的语音数据进行基于viterbi解码的重分割,得到新的2类语音段的特征数据,然后利用新的2类语音段的特征数据继续重分割操作。进行2~4次重分割,得到最后的2类语音段的特征数据结果。
本次步骤可以消除步骤三中说话人分割的步长限制带来的消极影响,同时减少某些语音段数据的聚类错误带来的消极影响,为后面说话人数目的判断提供优化的2类语音段的特征数据结果。
s603:利用ivector因子分析技术和plda技术判断说话人数目是单人还是双人
首先,对2类语音段的特征数据进行因子分析,提取说话人的因子ivector(ivector是一个n维的向量,能够表征语音数据的说话人信息和信道信息),假设这两个ivector分别为ia,ib
然后,由于说话人因子ivector中同时包含说话人信息和信道的信息,为了消除说话人因子中信道信息的干扰,突出说话人信息的影响,对ivector进一步进行因子分析plda:
d=μ+vy+ε(3)
其中,d为提取的ivector,μ表示所有说话人的ivector的均值,v为说话人因子载荷矩阵,y为plda说话人因子,ε为残渣项(说话人识别研究中常用方法)。采用em算法进行模型训练,得到v和ε,进而估算出plda说话人因子y。
再者,对上述两个ivector因子计算plda得分pab,pab的值越大,2类语音段的特征数据被判决成1类的可能性越高。
pab的计算方法如下:
pab=(ia-μ)tγ(ia-μ)+(ib-μ)tγ(ib-μ)+2(ia-μ)tλ(ib-μ)(4)
其中,
若pab>pthreshold,根据实验开发集合上参数调节的结果,这里取pthreshold=20,表示目前得到的2类语音段的特征数据更像是1类的语音段的特征数据而不是2类的语音段的特征数据,所以判断说话人数目是单人;反之,判断说话人数目是双人。
以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。