基于DNN模型和支持向量机模型的说话人个数估计方法与流程

文档序号:12736582阅读:532来源:国知局
基于DNN模型和支持向量机模型的说话人个数估计方法与流程

本发明属于语音信号处理领域和深度学习领域,具体涉及一种基于DNN模型和支持向量机模型的说话人个数估计方法。



背景技术:

随着语音信号处理技术和语音识别技术的快速发展,说话人标记的应用场景越来越复杂,从简单的如电话记录的两个说话人场景,到今天广泛应用的如会议记录的多个说话人场景。由于说话人标记的效果和说话人个数估计密切相关,提高说话人个数估计的准确率能够改进说话人标记系统,提升标记的准确率。

说话人个数估计首先要对语音数据进行预处理,提取特征。最常用的特征是一种基于人耳听感知理论的梅尔倒谱特征,目前广泛应用于说话人识别、语种识别以及连续语音识别等。梅尔倒谱特征提取首先对语音数据进行预加重和分帧加窗,然后对分帧加窗后的数据进行快速傅里叶变换,得到对应的频谱,并通过梅尔频标三角窗滤波器进行滤波,最后进行离散余弦变换得到梅尔倒谱特征。

现有的说话人数个数估计方法大多采用凝聚层次聚类(Agglomerative Hierarchical Cluster,AHC)方法,该方法首先进行说话人变化点检测,对语音数据进行分割,以达到对说话人进行分割,再对分割后的各段语音数据基于贝叶斯信息准则进行聚类,最终确定说话人数目。现有技术中估计说话人个数的结果的准确性完全依赖于说话人分割和聚类的准确性,而说话人分割受到步长的影响,步长多是根据经验确定,所以难免出现设定的步长不合适的情况,从而影响说话人分割的准确性及后续聚类的准确性;此外,在聚类时贝叶斯距离受语音时长的影响,主要表现为一般情况下语音时长越长其贝叶斯距离越大,因而在对不同时长的语音进行说话人聚类时,难以用统一的阈值进行聚类停止条件的判断,使得说话人数目判断存在较大误差,最终影响说话人标记的效果。

支持向量机(Support Vector Machine,SVM)是一种二类分类模型,需要找到特征空间上的间隔最大的线性分类器,即支持向量机模型的学习策略便是间隔最大化。它的最终模型只由少数支持向量决定,计算复杂度取决于支持向量的个数,而不是所有的样本,有助于抓住关键样本、剔除大量冗余样本,从而使算法更具稳健性,增加或删除一些训练样本对最终模型的影响很小,并可以很好地避免维数灾难和局部极小值问题。由于这些优点,SVM模型在说话人识别领域中广泛应用。

深度神经网络(Deep Neural Network,DNN)是一种模拟人脑神经网络,以实现类人工智能的机器学习技术。近年来,基于深度神经网络DNN模型的说话人识别系统受到越来越多的关注,相比于传统的高斯混合模型(Gaussian Mixture Model,GMM),DNN模型的描述能力更强,能够更好地模拟非常复杂的数据分布,充分逼近复杂的非线性关系,基于DNN模型的说话人识别系统取得显著的性能提升。DNN模型包含输入层、隐含层和输出层。输入层对应语音数据的特征,输入层节点数根据特征的维数而定。输出层对应各个说话人的概率,输出层节点数根据总共需要识别的说话人的个数而定。隐含层层数和节点数根据应用需要及工程经验定义。DNN模型训练时,先进行非监督训练再进行监督训练。非监督训练时把每相邻的两层网络当成一个受限玻尔兹曼机,用CD‐k算法逐层进行训练。进行监督训练时,使用非监督训练得到的DNN模型参数作为初值,再用后向传播算法对DNN模型参数进行精确调整。



技术实现要素:

本发明的目的是为克服已有技术的不足之处,提供一种基于DNN模型和支持向量机模型的说话人个数估计方法。该方法解决多说话人场景中说话人个数计算不准确的问题,提高语音数据中说话人个数估计的准确率。

本发明提出的一种基于DNN模型和支持向量机模型的说话人个数估计方法,分为模型训练阶段和说话人个数估计阶段两个阶段,包括以下步骤:

1)模型训练阶段;模型训练阶段分为DNN模型训练阶段和支持向量机SVM模型训练阶段两个阶段;具体包括以下步骤:

1‐1)DNN模型训练阶段:获取N个说话人的训练语音数据,提取每条训练语音数据的特征,设置DNN模型的层数和节点数,对DNN模型进行训练,得到DNN模型参数;

1‐2)支持向量机SVM模型训练阶段:获取M个说话人的训练语音数据,提取M个说话人的训练语音数据的特征,输入到步骤1‐1)得到的DNN模型中,产生M组说话人各自对应的N维特征,得到M个说话人的各自对应的SVM模型;

2)说话人个数估计阶段,具体包括以下步骤:

2‐1)获取待测语音数据,对待测语音数据进行预处理,得到待测语音数据对应的梅尔倒谱特征及其一阶、二阶导数,共60维;

2‐2)将步骤2‐1)得到的每条待测语音数据的梅尔倒谱特征输入到步骤1‐1)得到的DNN模型中,每条待测语音数据的60维梅尔倒谱特征对应得到DNN模型的输出层输出的该条待测语音数据的N个输出概率,将得到的每条待测语音数据的N个输出概率组成该条待测语音数据的N维特征;

2‐3)将步骤2‐2)得到的任意一条待测语音数据的N维特征依次输入到步骤1‐2)得到的M个说话人各自对应的对应的SVM模型中,每个SVM模型对该条待测语音数据进行评分,根据每个SVM模型评分结果判断该条待测语音数据对应的说话人和SVM模型所对应的M个说话人的相近程度,得分最高的SVM模型即为该条待测语音数据所对应的类别,该SVM模型所对应的说话人即为该条待测语音数据的近似说话人;

2‐4)重复步骤2‐3),将所有待测语音数据的N维特征分别输入M个SVM模型中,对所有待测语音数据进行分类,得到的类别总个数Q即为估计得到的待测语音数据的说话人个数,Q≤M。

所述步骤1-2)DNN模型训练阶段,具体包括以下步骤:

1‐1‐1)获取N个说话人的训练语音数据;对训练语音数据进行预处理,提取每条训练语音数据的梅尔倒谱特征及其一阶、二阶导数,总共60维;

1‐1‐2)设置DNN模型的层数和节点数;

DNN模型分为输入层、隐含层和输出层三个层次;其中,输入层对应步骤1‐1‐1)得到的每条训练语音数据的梅尔倒谱特征及其一阶、二阶导数,共60维,则输入层节点数设置为60个;输出层的节点数等于所需识别的说话人个数N,每个节点的输出分别对应每个说话人的概率;隐含层用于自动提取不同层次的特征,每层隐含层的节点数代表该层隐含层所提取的特征的维度;

1‐1‐3)对DNN模型进行训练,得到DNN模型参数;

根据步骤1‐1‐1)得到的N个说话人的训练语音数据的梅尔倒谱特征及一阶、二阶导数,对DNN模型进行训练,得到DNN模型参数;DNN模型参数包括相邻两层的连接权重和每个节点的偏置;

相邻两层的连接权重,表达式如式(1)所示:

式中,Wi,i+1为有Pi行、Pi+1列的矩阵,其中表示DNN模型第i层的第m个节点和第i+1层的第n个节点的连接权重;

每个节点的偏置,表达式如式(2)所示:

式中,表示DNN模型第j层中第k个节点的偏置;

对DNN模型先进行非监督训练:把DNN模型中每相邻的两层组成一个受限玻尔兹曼机,利用对比散度CD算法对每个受限玻尔兹曼机分别进行训练;依次训练所有的受限玻尔兹曼机,得到DNN模型参数的初始值;再进行监督训练:使用非监督训练得到的DNN模型参数初始值,利用后向传播算法对DNN模型参数进行精确调整,得到DNN模型参数的最终值。

所述步骤1-3)支持向量机SVM模型训练阶段,具体包括以下步骤:

1‐2‐1)获取M个说话人的训练语音数据,对M个说话人的训练语音数据进行预处理,得到M个说话人的训练语音数据对应的梅尔倒谱特征及一阶、二阶导数,共60维;

1‐2‐2)将步骤1‐2‐1)得到的M个说话人的训练语音数据对应的60维梅尔倒谱特征分别输入到步骤1‐1)得到的DNN模型中,每个说话人的训练语音数据的60维梅尔倒谱特征对应得到DNN模型的输出层输出的的该说话人的N个输出概率,将得到的每个说话人的N个输出概率组成该说话人的N维特征,共产生M组说话人各自对应的N维特征;

1‐2‐3)将M个说话人中第i个说话人的训练语音数据作为一类,i∈1~M,类别标签定为1;其余M‐1个说话人作为另一类,类别标签定为‐1,得到二分类SVM模型;根据步骤1‐2‐2)得到的M组说话人各自对应的N维特征及类别标签,对二分类SVM模型进行训练,得到第i个说话人的SVM模型;

1‐2‐4)重复步骤1‐2‐3),让i的取值分别从1到M,最终得到M个说话人的各自对应的SVM模型,共M个。

本发明的特点及有益效果在于:

本发明提出的一种基于DNN模型和支持向量机模型的说话人个数估计方法,与现有的凝聚层次聚类方法相比,该方法不需用到分割聚类算法,因而不用担心语音分割步长对说话人个数估计的影响,也不会因为聚类语音时长的不同而难以选择合适的阈值,更有稳健型;该方法充分结合了深度神经网络DNN模型和支持向量机模型两者的优点,能够计算出待测语音数据中总的说话人个数;该方法还可以对待测语音数据中的说话人个数进行在线估计;可以完成待测语音数据的说话人变换点检测。

附图说明

图1为本发明方法的流程框图。

图2为本发明实施列中DNN模型结构示意图。

具体实施方式

本发明提出的一种基于DNN模型和支持向量机模型的说话人个数估计方法,下面结合附图及具体实施例对本发明进一步详细说明如下。以下实施例是示例性的,仅用于解释本发明,而不能解释为对本发明的限制。

本发明提出的一种基于DNN模型和支持向量机模型的说话人个数估计方法,流程框图如图1所示,分为模型训练阶段和说话人个数估计阶段两个阶段,

包括以下步骤:

1)模型训练阶段;模型训练阶段分为DNN模型训练阶段和支持向量机SVM模型训练阶段两个阶段;具体包括以下步骤:

1‐1)DNN模型训练阶段;获取N个说话人的训练语音数据,提取每条训练语音数据的特征,设置DNN模型的层数和节点数,对DNN模型进行训练,得到DNN模型参数;具体包括以下步骤:

1‐1‐1)获取N个说话人的的训练语音数据,N的取值范围为为300至600;所述训练语音数据来源于NIST SRE 2012,可以通过网络下载或购买得到;对训练语音数据进行预处理,提取每条训练语音数据的梅尔倒谱特征及其一阶、二阶导数,总共60维。

1‐1‐2)设置DNN模型的层数和节点数;

DNN模型分为输入层、隐含层和输出层三个层次;其中,输入层对应步骤1‐1‐1)得到的每条训练语音数据的梅尔倒谱特征及其一阶、二阶导数,共60维,则输入层节点数设置为60个;输出层的节点数等于所需识别的说话人个数N,每个节点的输出分别对应每个说话人的概率;隐含层用于自动提取不同层次的特征,每层隐含层的节点数代表该层隐含层所提取的特征的维度,中间位置的隐含层的节点数一般设置为100‐300个,其余隐含层的节点数一般设置为500‐1000个。

1‐1‐3)训练DNN模型参数;

根据步骤1‐1‐1)得到的N个说话人的训练语音数据的梅尔倒谱特征及一阶、二阶导数,对DNN模型进行训练,得到DNN模型参数;DNN模型参数包括相邻两层的连接权重和每个节点的偏置;

相邻两层的连接权重,表达式如式(1)所示:

式中,Wi,i+1为有Pi行、Pi+1列的矩阵,其中表示DNN模型第i层的第m个节点和第i+1层的第n个节点的连接权重。

每个节点的偏置,表达式如式(2)所示:

式中,表示DNN模型第j层中第k个节点的偏置。

对DNN模型先进行非监督训练:把DNN模型中每相邻的两层组成一个受限玻尔兹曼机,利用对比散度(CD)算法对每个受限玻尔兹曼机分别进行训练;依次训练所有的受限玻尔兹曼机,得到DNN模型参数的初始值;再进行监督训练:使用非监督训练得到的DNN模型参数初始值,利用后向传播算法对DNN模型参数进行精确调整,得到DNN模型参数的最终值。

1‐2)支持向量机SVM模型训练阶段:获取M个说话人的训练语音数据,提取M个说话人的训练语音数据的特征,输入到步骤1‐1)得到的DNN模型中,产生M组说话人各自对应的N维特征,得到M个说话人的各自对应的SVM模型;具体包括以下步骤:

1‐2‐1)获取M个说话人(M一般取值为待测语音数据中最多可能存在的说话人个数)的训练语音数据,训练语音数据来源于NIST SRE 2012数据库,可以由网上下载或购买得到,所述M个说话人可以和步骤1‐1)的DNN模型训练阶段所选取的N个说话人不同。对M个说话人的训练语音数据进行预处理,得到M个说话人的训练语音数据对应的梅尔倒谱特征及一阶、二阶导数,共60维。

1‐2‐2)将步骤1‐2‐1)得到的M个说话人的训练语音数据对应的60维梅尔倒谱特征分别输入到步骤1‐1)得到的DNN模型中,每个说话人的训练语音数据的60维梅尔倒谱特征对应得到DNN模型的输出层输出的的该说话人的N个输出概率,将得到的每个说话人的N个输出概率组成该说话人的N维特征,共产生M组说话人各自对应的N维特征。

1‐2‐3)将M个说话人中第i个说话人的训练语音数据作为一类,i∈1~M,类别标签定为1;其余M‐1个说话人作为另一类,类别标签定为‐1,得到二分类SVM模型;根据步骤1‐2‐2)得到的M组说话人各自对应的N维特征及类别标签,对二分类SVM模型进行训练,得到第i个说话人的SVM模型;

1‐2‐4)重复步骤1‐2‐3),让i的取值分别从1到M,最终得到M个说话人的各自对应的SVM模型,共M个。

1)说话人个数估计阶段,具体包括以下步骤:

2‐1)获取待测语音数据,待测语音数据的说话人可以和DNN模型训练阶段的N个说话人以及支持向量机SVM模型训练阶段的M个说话人都不相同。对待测语音数据进行预处理,得到待测语音数据对应的梅尔倒谱特征及其一阶、二阶导数,共60维;

2‐2)将步骤2‐1)得到的每条待测语音数据的梅尔倒谱特征输入到步骤1‐1)得到的DNN模型中,每条待测语音数据的60维梅尔倒谱特征对应得到DNN模型的输出层输出的该条待测语音数据的N个输出概率,将得到的每条待测语音数据的N个输出概率组成该条待测语音数据的N维特征。

2‐3)将步骤2‐2)得到的任意一条待测语音数据的N维特征依次输入到步骤1‐2)得到的M个说话人各自对应的对应的SVM模型中,每个SVM模型对该条待测语音数据进行评分,根据每个SVM模型评分结果判断该条待测语音数据对应的说话人和SVM模型所对应的M个说话人的相近程度,得分最高的SVM模型即为该条待测语音数据所对应的类别,该SVM模型所对应的说话人即为该条待测语音数据的近似说话人。

2‐4)重复步骤2‐3),将所有待测语音数据的N维特征分别输入M个SVM模型中,对所有待测语音数据进行分类,得到的类别总个数Q即为估计得到的待测语音数据的说话人个数,Q≤M。

本发明提出的一种基于DNN模型和支持向量机模型的说话人个数估计方法,下面结合一个具体实施例对本发明进一步说明如下。

本发明提出的一种基于DNN模型和支持向量机模型的说话人个数估计方法,分为模型训练阶段和说话人个数估计阶段两个阶段,其中,模型训练阶段分为DNN模型训练阶段和支持向量机SVM模型训练阶段两个阶段;包括以下步骤:

1)模型训练阶段:获取N个说话人的训练语音数据,提取每条训练语音数据的特征,设置DNN模型的层数和节点数,对DNN模型进行训练,得到DNN模型参数;具体包括以下步骤:

1‐1)DNN模型训练阶段;具体包括以下步骤:

1‐1‐1)获取N个说话人的的训练语音数据,本实施例中N取值为400;所述训练语音数据来源于NIST SRE 2012,可以通过网络下载或购买得到;对训练语音数据进行预处理,提取每条训练语音数据的梅尔倒谱特征及其一阶、二阶导数,总共60维。

1‐1‐2)设置DNN模型的层数和节点数;

本实施例中DNN模型结构如图2所示,分为输入层、隐含层和输出层三个层次;本实施例中,DNN模型总共有5层,第1层为输入层,第2‐4层为隐含层,共有3层隐含层,第5层为输出层。DNN模型的输入层对应语音数据的特征,本发明为步骤1‐1‐1)得到的每帧训练语音数据的梅尔倒谱特征及其一阶、二阶导数,共60维,则输入层节点数P1设置为60个;输出层的节点数P5等于所需识别的说话人个数,本实施例为400个,每个节点的输出分别对应每个说话人的概率;隐含层用于自动提取不同层次的特征,本实施例隐含层层数设置为3层,隐含层所提的特征从第2层的低级抽象逐渐向第4层的高级抽象过渡;每层隐含层的节点数代表该层隐含层所提取的特征的维度,本实施例中中间位置的隐含层(即第3层)的节点数设置为P3=100个(一般设置为100‐300个),其余隐含层的节点数P2和P4分别设置为800个(一般设置为500‐1000个)。

1‐1‐3)训练DNN模型参数;

根据步骤1‐1‐1)得到的400个人的训练语音数据的梅尔倒谱特征及一阶、二阶导数,对DNN模型进行训练,得到DNN模型参数;DNN模型参数包括相邻两层的连接权重和每个节点的偏置;

相邻两层的连接权重,表达式如式(1)所示:

式中,Wii+1为有Pi行、Pi+1列的矩阵,其中表示DNN模型第i层的第m个节点和第i+1层的第n个节点的连接权重。

每个节点的偏置,表达式如式(2)所示:

式中,表示DNN模型第j层中第k个节点的偏置。

对DNN模型先进行非监督训练:把DNN模型中每相邻的两层组成一个受限玻尔兹曼机,本实施例中即图2中的第1层和第2层、第2层和第3层、……、第4层和第5层,当成一个受限玻尔兹曼机,共有4个受限玻尔兹曼机;用对比散度(CD)算法对每个受限玻尔兹曼机分别进行训练,即先训练第1层和第2层组成的受限玻尔兹曼机,得到DNN模型参数中的B1、B2、W12;接着训练第2层和第3层组成的受限玻尔兹曼机,得到DNN模型参数中的B3、W23;依次训练所有的受限玻尔兹曼机,得到DNN模型参数的初始值。再进行监督训练:使用非监督训练得到的DNN模型参数初始值,利用后向传播算法对DNN模型参数进行精确调整,得到DNN模型参数的最终值。

1‐2)支持向量机SVM模型训练阶段:获取M个说话人的训练语音数据,提取M个说话人的训练语音数据的特征,输入到步骤1‐1)得到的DNN模型中,产生M组说话人各自对应的N维特征,得到M个说话人的各自对应的SVM模型;具体包括以下步骤:

1‐2‐1)获取M个说话人(M一般取值为待测语音数据中最多可能存在的说话人个数)的训练语音数据,本实施例中M取值为5个,训练语音数据来源于NIST SRE 2012数据库,可以由网上下载或购买得到,这5个说话人可以和步骤1‐1)的DNN模型训练阶段所选取的400个说话人不同。对M个说话人的训练语音数据进行预处理,得到M个说话人的训练语音数据对应的梅尔倒谱特征及一阶、二阶导数,共60维。

1‐2‐2)将步骤1‐2‐1)得到的M个说话人的训练语音数据对应的60维梅尔倒谱特征分别输入到步骤1‐1)得到的DNN模型中,每个说话人的训练语音数据的60维梅尔倒谱特征对应得到DNN模型的输出层输出的的该说话人的400个输出概率,将得到的每个说话人的400个输出概率组成该说话人的400维特征,共产生5组说话人各自对应的400维特征。

1‐2‐3)将5个说话人中第i个说话人的训练语音数据作为一类,i∈1~5,类别标签定为1;其余4个说话人作为另一类,类别标签定为‐1,得到二分类SVM模型;根据步骤1‐2‐2)得到的5组说话人各自对应的400维特征及类别标签,对二分类SVM模型进行训练,得到第i个说话人的SVM模型;

1‐2‐4)重复步骤1‐2‐3),让i的取值分别从1到5,最终得到5个说话人的各自对应的SVM模型,共5个。

2)说话人个数估计阶段,具体包括以下步骤:

2‐1)获取待测语音数据,本实施例中待测语音数据来自录音得到的会议记录。该待测语音数据的说话人可以和DNN模型训练阶段的400个说话人以及支持向量机SVM模型训练阶段的5个说话人都不同。对待测语音数据进行预处理,得到待测语音数据对应的梅尔倒谱特征及其一阶、二阶导数,共60维;

2‐2)将步骤2‐1)得到的每条待测语音数据的梅尔倒谱特征输入到步骤1)得到的DNN模型中,每条待测语音数据的60维梅尔倒谱特征对应得到DNN模型的输出层输出的该条待测语音数据的400个输出概率,将得到的每条待测语音数据的400个输出概率组成该条待测语音数据的400维特征。

2‐3)将步骤2‐2)得到的任意一条待测语音数据的400维特征依次输入到步骤1‐2)得到的5个说话人各自对应的对应的SVM模型中,每个SVM模型对该条待测语音数据进行评分,根据每个SVM模型评分结果判断该条待测语音数据对应的说话人和SVM模型所对应的5个说话人的相近程度,得分最高的SVM模型即为该条待测语音数据所对应的类别,该SVM模型所对应的说话人即为该条待测语音数据的近似说话人。

2‐4)重复步骤2‐3),将所有待测语音数据的400维特征分别输入5个SVM模型中,对所有待测语音数据进行分类,得到的类别总个数Q即为估计得到的待测语音数据的说话人个数,Q≤M,本实施例中类别总个数Q小于等于SVM模型个数5。

至此,完成说话人个数估计。

本发明关于说话人个数估计方法,是通过待测语音数据按帧进行输入,并识别该测试语音数据每条帧所对应的说话人,这使得该方法具有有效的实时性。基于该方法实时性的特点,能够对待测语音数据中的说话人个数进行在线估计;该方法是对待测语音数据按帧识别对应的说话人的类别,由此可以得出待测语音数据的每帧说话人类别,如果相邻的两帧对应的说话人不同,则该点即为说话人变换点,完成待测语音数据的说话人变换点检测。

值得注意的是,本实施例在以本发明技术方案为前提进行实施,但本发明的保护范围不仅限于该实施例。凡是在本发明的实质精神范围之内,对以上实施例所作的适当改变和变化,都落在本发明要求保护的范围之内。

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