一种说话人聚类方法和装置与流程

文档序号:17544436发布日期:2019-04-29 15:10阅读:196来源:国知局
一种说话人聚类方法和装置与流程

本发明涉及人工智能技术领域,尤其涉及一种说话人聚类方法和装置。



背景技术:

说话人聚类,是将说话片段根据说话人进行聚类,可以被总结为“谁在什么时候说了什么话”,被广泛应用于语音识别和说话人识别等领域。

相关技术采用的方法是从短的说话片段中提取i-vector,学习一个plda(probabilisticlineardiscriminantanalysis)得分方程从而决定两个i-vector是否来自于同一个说话人。i-vector的提取需要一个gmm(高斯混合模型),和一个非常大的投影矩阵来做因子分析,导致计算量大。



技术实现要素:

有鉴于此,本发明实施例提供了一种说话人聚类方法和装置,用以解决现有技术中说话人聚类需要高斯混合模型和一个非常大的投影矩阵来做因子分析导致计算量大的问题。

一方面,本发明实施例提供了一种说话人聚类方法,所述方法包括:获取2n个语音片段,所述2n个语音片段来自于n个说话人,并且,每2个语音片段来自于同一个说话人,n为大于或等于2的自然数;根据所述2n个语音片段组合出n个相同说话人对,其中,每一个所述相同说话人对包括2个语音片段,并且,每一个所述相同说话人对包括的2个语音片段来自同一个说话人;根据所述2n个语音片段组合出m个不同说话人对,其中,每一个所述不同说话人对包括2个语音片段,并且,每一个所述不同说话人对包括的2个语音片段来自不同说话人,m为大于或等于2的自然数;将所述n个相同说话人对和所述m个不同说话人对作为训练样本输入神经网络,对所述神经网络进行训练,当目标函数的值满足预设条件时,停止训练所述神经网络;将目标语音进行切分,得到多个语音片段;将所述多个语音片段输入训练完成后的神经网络中;接收所述训练完成后的神经网络输出的多个类别的语音片段,其中,每个类别的语音片段对应同一个说话人。

进一步地,根据公式e=e1+k×e2计算所述目标函数的值,其中,e为所述目标函数,k为常量,x和y为语音片段,pdiff和psame分别为不同说话人对和相同说话人对,pr(x,y)是语音片段x和语音片段y属于同一个说话人的概率。

进一步地,根据公式计算pr(x,y),l(x,y)是语音片段x和语音片段y之间的距离。

进一步地,根据公式l(x,y)=xty-xtsx-ytsy+b计算l(x,y),s为对称矩阵,b为偏移量。

进一步地,k的取值由相同说话人对的数量和不同说话人对的数量之间的比例关系确定。

一方面,本发明实施例提供了一种说话人聚类装置,所述装置包括:获取单元,用于获取2n个语音片段,所述2n个语音片段来自于n个说话人,并且,每2个语音片段来自于同一个说话人,n为大于或等于2的自然数;第一组合单元,用于根据所述2n个语音片段组合出n个相同说话人对,其中,每一个所述相同说话人对包括2个语音片段,并且,每一个所述相同说话人对包括的2个语音片段来自同一个说话人;第二组合单元,用于根据所述2n个语音片段组合出m个不同说话人对,其中,每一个所述不同说话人对包括2个语音片段,并且,每一个所述不同说话人对包括的2个语音片段来自不同说话人,m为大于或等于2的自然数;训练单元,用于将所述n个相同说话人对和所述m个不同说话人对作为训练样本输入神经网络,对所述神经网络进行训练,当目标函数的值满足预设条件时,停止训练所述神经网络;切分单元,用于将目标语音进行切分,得到多个语音片段;输入单元,用于将所述多个语音片段输入训练完成后的神经网络中;接收单元,用于接收所述训练完成后的神经网络输出的多个类别的语音片段,其中,每个类别的语音片段对应同一个说话人。

进一步地,所述训练单元包括:计算子单元,用于根据公式e=e1+k×e2计算所述目标函数的值,其中,e为所述目标函数,k为常量,x和y为语音片段,pdiff和psame分别为不同说话人对和相同说话人对,pr(x,y)是语音片段x和语音片段y属于同一个说话人的概率。

进一步地,所述计算子单元还用于根据公式计算pr(x,y),l(x,y)是语音片段x和语音片段y之间的距离。

进一步地,所述计算子单元还用于根据公式l(x,y)=xty-xtsx-ytsy+b计算l(x,y),s为对称矩阵,b为偏移量。

进一步地,k的取值由相同说话人对的数量和不同说话人对的数量之间的比例关系确定。

一方面,本发明实施例提供了一种存储介质,所述存储介质包括存储的程序,其中,在所述程序运行时控制所述存储介质所在设备执行上述的说话人聚类方法。

一方面,本发明实施例提供了一种计算机设备,包括存储器和处理器,所述存储器用于存储包括程序指令的信息,所述处理器用于控制程序指令的执行,所述程序指令被处理器加载并执行时实现上述的说话人聚类方法的步骤。

在本发明实施例中,将n个相同说话人对和m个不同说话人对作为训练样本输入神经网络,对神经网络进行训练,直至目标函数的值满足预设条件,停止训练神经网络;将目标语音进行切分,得到多个语音片段;将多个语音片段输入训练完成后的神经网络中,得到多个类别的语音片段,其中,每个类别的语音片段对应一个说话人,不需要提取i-vector,避免了现有技术中说话人聚类需要高斯混合模型和一个非常大的投影矩阵来做因子分析导致计算量大的问题,减少了说话人聚类的计算量。

【附图说明】

为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其它的附图。

图1是本发明实施例提供的一种可选的说话人聚类方法的流程图;

图2是本发明实施例提供的一种可选的神经网络的结构的示意图;

图3是本发明实施例提供的一种可选的说话人聚类装置的示意图;

图4是本发明实施例提供的一种可选的计算机设备的示意图。

【具体实施方式】

为了更好的理解本发明的技术方案,下面结合附图对本发明实施例进行详细描述。

应当明确,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。

在本发明实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本发明。在本发明实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。

应当理解,本文中使用的术语“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。

图1是本发明实施例提供的一种可选的说话人聚类方法的流程图,如图1所示,该方法包括:步骤s102至步骤s114。

步骤s102,获取2n个语音片段,2n个语音片段来自于n个说话人,并且,每2个语音片段来自于同一个说话人,n为大于或等于2的自然数。

步骤s104,根据2n个语音片段组合出n个相同说话人对,其中,每一个相同说话人对包括2个语音片段,并且,每一个相同说话人对包括的2个语音片段来自同一个说话人。

步骤s106,根据2n个语音片段组合出m个不同说话人对,其中,每一个不同说话人对包括2个语音片段,并且,每一个不同说话人对包括的2个语音片段来自不同说话人,m为大于或等于2的自然数。

m可以有多种取值,例如可以令m=n、m=2n、m=3n等,m可以取的最大值是

下面举例对如何根据2n个语音片段组合出n个相同说话人对和m个不同说话人对的过程进行详细说明。其中,n的取值为3000,m取值是17994000

获取6000个语音片段,这6000个语音片段来自于3000个说话人,每一个说话人对应2个语音片段,假设这3000个说话人分别为说话人r1、说话人r2、说话人r3、……、说话人r2999、说话人r3000。假设说话人ri对应的2个语音片段是语音片段si-1和语音片段si-2,其中,i取1至3000之间的任意自然数。即,说话人r1对应的2个语音片段是语音片段s1-1和语音片段s1-2;说话人r2对应的2个语音片段是语音片段s2-1和语音片段s2-2;说话人r3对应的2个语音片段是语音片段s3-1和语音片段s3-2;……;说话人r2999对应的2个语音片段是语音片段s2999-1和语音片段s2999-2;说话人r3000对应的2个语音片段是语音片段s3000-1和语音片段s3000-2。

根据这6000个语音片段组合出3000个相同说话人对,这3000个相同说话人对分别为相同说话人对dp1、相同说话人对dp2、相同说话人对dp3、……、相同说话人对dp2999、相同说话人对dp3000。

相同说话人对dp1包括2个语音片段:语音片段s1-1和语音片段s1-2;

相同说话人对dp2包括2个语音片段:语音片段s2-1和语音片段s2-2;

相同说话人对dp3包括2个语音片段:语音片段s3-1和语音片段s3-2;

……;

相同说话人对dp2999包括2个语音片段:语音片段s2999-1和语音片段s2999-2;

相同说话人对dp3000包括2个语音片段:语音片段s3000-1和语音片段s3000-2。

根据这6000个语音片段组合出17994000个不同说话人对,这17994000个不同说话人对分别为不同说话人对dq1、不同说话人对dq2、不同说话人对dq3、……、不同说话人对dq17993999、不同说话人对dq17994000。

不同说话人对dq1包括2个语音片段:语音片段s1-1和语音片段s2-1;

不同说话人对dq2包括2个语音片段:语音片段s1-1和语音片段s2-2;

不同说话人对dq3包括2个语音片段:语音片段s1-1和语音片段s3-1;

不同说话人对dq4包括2个语音片段:语音片段s1-1和语音片段s3-2;

……;

不同说话人对dq5995包括2个语音片段:语音片段s1-1和语音片段s2999-1;

不同说话人对dq5996包括2个语音片段:语音片段s1-1和语音片段s2999-2;

不同说话人对dq5997包括2个语音片段:语音片段s1-1和语音片段s3000-1;

不同说话人对dq5998包括2个语音片段:语音片段s1-1和语音片段s3000-2;

不同说话人对dq5999包括2个语音片段:语音片段s1-2和语音片段s2-1;

不同说话人对dq6000包括2个语音片段:语音片段s1-2和语音片段s2-2;

不同说话人对dq6001包括2个语音片段:语音片段s1-2和语音片段s3-1;

不同说话人对dq6002包括2个语音片段:语音片段s1-2和语音片段s3-2;

……;

不同说话人对dq11993包括2个语音片段:语音片段s1-2和语音片段s2999-1;

不同说话人对dq11994包括2个语音片段:语音片段s1-2和语音片段s2999-2;

不同说话人对dq11995包括2个语音片段:语音片段s1-2和语音片段s3000-1;

不同说话人对dq11996包括2个语音片段:语音片段s1-2和语音片段s3000-2;

……。

步骤s108,将n个相同说话人对和m个不同说话人对作为训练样本输入神经网络,对神经网络进行训练,当目标函数的值满足预设条件时,停止训练神经网络。

根据公式e=e1+k×e2计算目标函数的值,其中,e为目标函数,k为常量,x和y为语音片段,pdiff和psame分别为不同说话人对和相同说话人对,pr(x,y)是语音片段x和语音片段y属于同一个说话人的概率。k的取值由相同说话人对的数量和不同说话人对的数量之间的比例关系确定。根据公式计算pr(x,y),l(x,y)是语音片段x和语音片段y之间的距离。根据公式l(x,y)=xty-xtsx-xtsy+b计算l(x,y),s为对称矩阵,b为偏移量。

步骤s110,将目标语音进行切分,得到多个语音片段。

步骤s112,将多个语音片段输入训练完成后的神经网络中。

步骤s114,接收训练完成后的神经网络输出的多个类别的语音片段,其中,每个类别的语音片段对应同一个说话人。

在多个说话人说话的场景下,录制多个说话人说话的语音,得到目标语音。目标语音的长度可以为20分钟、1个小时、2个小时等。例如录制甲乙丙在一个会议上说话的语音,得到目标语音,目标语音的时长为1个小时。将目标语音切分为定长(例如2s)的语音片段,并且,每一语音片段与它的前一语音片段和后一语音片段均有重合,例如,每一语音片段的前500ms和前面一个语音片段重合,后500ms和后面一个语音片段重合。将切分得到的语音片段输入训练完成后的神经网络中,接收训练完成后的神经网络输出的3个类别的语音片段,这3个类别的语音片段分别对应说话人甲、说话人乙、说话人丙。

如图2所示,神经网络依次包括5个隐含层,一个时序池化层,一个线性输出层。用time-delay结构的方法在前四层中加入短时的时序信息,假设t是一个片段中的所有的帧的个数,t(0≤t≤)是一些帧的索引。输入层将[t-1,t+1]的特征拼接起来。在第二三四层,将激活函数在[t-2,t+1],{t-3,t,t+3}和{t-3,t,t+3}输出拼接起来,所以在第四层的时候就是[t-9,t+8]。针对于输入的总长度,时序池化层将第四层的输出集合起来,算均值,然后将它传递给第五层。最后,传给线性层,这一层输出embeddingx(400维)。对称矩阵s和偏移量b是网络的输出,这两个输出是和embeddings(语音片段)一起学习的。

传统用ivector做plda的时候要根据得分公式计算一个得分,得分公式是计算两个假设(假设1:两个ivector来自于同一个说话者;假设2:两个ivector来自不同的说话者)的对数似然比,这个公式里面会有s和b的参数,传统方法中s和b都是推导出来的,在本发明实施例中这两个参数都是训练得到的。训练的具体过程为:将n个相同说话人对和m个不同说话人对作为训练样本输入神经网络,对神经网络进行训练,直至目标函数的值达到最大值,停止训练神经网络,输出对称矩阵s和偏移量b的值。

隐含层的激活是一种network-in-network(nin)nonlinearity。这个非线性是一个从di维的输入到do维的输出的映射。n个微型神经网络将输入投影到dh维的空间。一个微型神经网络包括3个relu。用的nin的配置参数为{n=50,di=150,dh=1000,do=500},所以整个模型一共有460k个参数。

在本发明实施例中,将n个相同说话人对和m个不同说话人对作为训练样本输入神经网络,对神经网络进行训练,直至目标函数的值满足预设条件,停止训练神经网络;将目标语音进行切分,得到多个语音片段;将多个语音片段输入训练完成后的神经网络中,得到多个类别的语音片段,其中,每个类别的语音片段对应一个说话人,不需要提取i-vector,避免了现有技术中说话人聚类需要高斯混合模型和一个非常大的投影矩阵来做因子分析导致计算量大的问题,减少了说话人聚类的计算量。

本发明实施例还提供了一种说话人聚类装置,该装置用于执行上述说话人聚类方法,如图3所示,该装置包括:获取单元10、第一组合单元20、第二组合单元30、训练单元40、切分单元50、输入单元60、接收单元70。

获取单元10,用于获取2n个语音片段,2n个语音片段来自于n个说话人,并且,每2个语音片段来自于同一个说话人,n为大于或等于2的自然数。

第一组合单元20,用于根据2n个语音片段组合出n个相同说话人对,其中,每一个相同说话人对包括2个语音片段,并且,每一个相同说话人对包括的2个语音片段来自同一个说话人。

第二组合单元30,用于根据2n个语音片段组合出m个不同说话人对,其中,每一个不同说话人对包括2个语音片段,并且,每一个不同说话人对包括的2个语音片段来自不同说话人,m为大于或等于2的自然数。

训练单元40,用于将n个相同说话人对和m个不同说话人对作为训练样本输入神经网络,对神经网络进行训练,当目标函数的值满足预设条件时,停止训练神经网络。

切分单元50,用于将目标语音进行切分,得到多个语音片段。

输入单元60,用于将多个语音片段输入训练完成后的神经网络中。

接收单元70,用于接收训练完成后的神经网络输出的多个类别的语音片段,其中,每个类别的语音片段对应同一个说话人。

在本发明实施例中,将n个相同说话人对和m个不同说话人对作为训练样本输入神经网络,对神经网络进行训练,直至目标函数的值满足预设条件,停止训练神经网络;将目标语音进行切分,得到多个语音片段;将多个语音片段输入训练完成后的神经网络中,得到多个类别的语音片段,其中,每个类别的语音片段对应一个说话人,不需要提取i-vector,避免了现有技术中说话人聚类需要高斯混合模型和一个非常大的投影矩阵来做因子分析导致计算量大的问题,减少了说话人聚类的计算量。

可选地,训练单元40包括:计算子单元。计算子单元,用于根据公式e=e1+k×e2计算目标函数的值,其中,e为目标函数,k为常量,x和y为语音片段,pdiff和psame分别为不同说话人对和相同说话人对,pr(x,y)是语音片段x和语音片段y属于同一个说话人的概率。

可选地,计算子单元还用于根据公式计算pr(x,y),l(x,y)是语音片段x和语音片段y之间的距离。

可选地,计算子单元还用于根据公式l(x,y)=xty-xtsx-ytsy+b计算l(x,y),s为对称矩阵,b为偏移量。

可选地,k的取值由相同说话人对的数量和不同说话人对的数量之间的比例关系确定。

本发明实施例提供了一种存储介质,存储介质包括存储的程序,其中,在程序运行时控制存储介质所在设备执行以下步骤:获取2n个语音片段,2n个语音片段来自于n个说话人,并且,每2个语音片段来自于同一个说话人,n为大于或等于2的自然数;根据2n个语音片段组合出n个相同说话人对,其中,每一个相同说话人对包括2个语音片段,并且,每一个相同说话人对包括的2个语音片段来自同一个说话人;根据2n个语音片段组合出m个不同说话人对,其中,每一个不同说话人对包括2个语音片段,并且,每一个不同说话人对包括的2个语音片段来自不同说话人,m为大于或等于2的自然数;将n个相同说话人对和m个不同说话人对作为训练样本输入神经网络,对神经网络进行训练,当目标函数的值满足预设条件时,停止训练神经网络;将目标语音进行切分,得到多个语音片段;将多个语音片段输入训练完成后的神经网络中;接收训练完成后的神经网络输出的多个类别的语音片段,其中,每个类别的语音片段对应同一个说话人。

可选地,在程序运行时控制存储介质所在设备还执行以下步骤:根据公式e=e1+k×e2计算目标函数的值,其中,e为目标函数,k为常量,x和y为语音片段,pdiff和psame分别为不同说话人对和相同说话人对,pr(x,y)是语音片段x和语音片段y属于同一个说话人的概率。

可选地,在程序运行时控制存储介质所在设备还执行以下步骤:根据公式计算pr(x,y),l(x,y)是语音片段x和语音片段y之间的距离。

可选地,在程序运行时控制存储介质所在设备还执行以下步骤:根据公式l(x,y)=xty-xtsx-ytsy+b计算l(x,y),s为对称矩阵,b为偏移量。

本发明实施例提供了一种计算机设备,包括存储器和处理器,存储器用于存储包括程序指令的信息,处理器用于控制程序指令的执行,程序指令被处理器加载并执行时实现以下步骤:获取2n个语音片段,2n个语音片段来自于n个说话人,并且,每2个语音片段来自于同一个说话人,n为大于或等于2的自然数;根据2n个语音片段组合出n个相同说话人对,其中,每一个相同说话人对包括2个语音片段,并且,每一个相同说话人对包括的2个语音片段来自同一个说话人;根据2n个语音片段组合出m个不同说话人对,其中,每一个不同说话人对包括2个语音片段,并且,每一个不同说话人对包括的2个语音片段来自不同说话人,m为大于或等于2的自然数;将n个相同说话人对和m个不同说话人对作为训练样本输入神经网络,对神经网络进行训练,当目标函数的值满足预设条件时,停止训练神经网络;将目标语音进行切分,得到多个语音片段;将多个语音片段输入训练完成后的神经网络中;接收训练完成后的神经网络输出的多个类别的语音片段,其中,每个类别的语音片段对应同一个说话人。

可选地,程序指令被处理器加载并执行时还实现以下步骤:根据公式e=e1+k×e2计算目标函数的值,其中,e为目标函数,k为常量,x和y为语音片段,pdiff和psame分别为不同说话人对和相同说话人对,pr(x,y)是语音片段x和语音片段y属于同一个说话人的概率。

可选地,程序指令被处理器加载并执行时还实现以下步骤:根据公式计算pr(x,y),l(x,y)是语音片段x和语音片段y之间的距离。

可选地,程序指令被处理器加载并执行时还实现以下步骤:根据公式l(x,y)=xty-xtsx-ytsy+b计算l(x,y),s为对称矩阵,b为偏移量。

图4是本发明实施例提供的一种计算机设备的示意图。如图4所示,该实施例的计算机设备50包括:处理器51、存储器52以及存储在存储器52中并可在处理器51上运行的计算机程序53,该计算机程序53被处理器51执行时实现实施例中的说话人聚类方法,为避免重复,此处不一一赘述。或者,该计算机程序被处理器51执行时实现实施例中说话人聚类装置中各模型/单元的功能,为避免重复,此处不一一赘述。

计算机设备50可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。计算机设备可包括,但不仅限于,处理器51、存储器52。本领域技术人员可以理解,图4仅仅是计算机设备50的示例,并不构成对计算机设备50的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如计算机设备还可以包括输入输出设备、网络接入设备、总线等。

所称处理器51可以是中央处理单元(centralprocessingunit,cpu),还可以是其他通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现场可编程门阵列(field-programmablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。

存储器52可以是计算机设备50的内部存储单元,例如计算机设备50的硬盘或内存。存储器52也可以是计算机设备50的外部存储设备,例如计算机设备50上配备的插接式硬盘,智能存储卡(smartmediacard,smc),安全数字(securedigital,sd)卡,闪存卡(flashcard)等。进一步地,存储器52还可以既包括计算机设备50的内部存储单元也包括外部存储设备。存储器52用于存储计算机程序以及计算机设备所需的其他程序和数据。存储器52还可以用于暂时地存储已经输出或者将要输出的数据。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本发明所提供的几个实施例中,应该理解到,所揭露的系统,装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。

上述以软件功能单元的形式实现的集成的单元,可以存储在一个计算机可读取存储介质中。上述软件功能单元存储在一个存储介质中,包括若干指令用以使得一台计算机装置(可以是个人计算机,服务器,或者网络装置等)或处理器(processor)执行本发明各个实施例所述方法的部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-onlymemory,rom)、随机存取存储器(randomaccessmemory,ram)、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1