基于语音的角色分离方法及装置与流程

文档序号:11924012阅读:664来源:国知局
基于语音的角色分离方法及装置与流程

本申请涉及语音识别领域,具体涉及一种基于语音的角色分离方法。本申请同时涉及一种基于语音的角色分离装置。



背景技术:

语音是人类最自然的交流沟通方式,语音识别技术则是让机器通过识别和理解过程把语音信号转变为相应的文本或命令的技术。语音识别是一门交叉学科,所涉及的领域包括:信号处理、模式识别、概率论和信息论、发声机理和听觉机理、人工智能等等。

在实际应用中,为了能够对语音信号作更为准确的分析,不仅需要进行语音识别,而且要判别出每段语音的说话人,因此很自然地出现了对语音按照角色进行分离的需求。在日常生活、会议以及电话对话等很多场景下,都存在对话语音,而通过对对话语音的角色分离,就可以判定哪部分语音是其中一个人说的,哪部分语音是另外一个人说的。在将对话语音按照角色分离之后,结合说话人识别、语音识别,会产生更为广阔的应用空间,例如,将客服中心的对话语音按照角色分离,然后进行语音识别就可以确定客服说了什么内容,客户说了什么内容,从而可以进行相应的客服质检或者进行客户潜在需求的挖掘。

现有技术中,通常采用GMM(Gaussian Mixture Model—高斯混合模型)和HMM(Hidden Markov Model—隐马尔科夫模型)进行对话语音的角色分离,即:对于每个角色使用GMM建模,对于不同角色之间的跳转采用HMM建模。由于GMM建模技术提出的时间比较早,而且其拟合任意函数的功能取决于混合高斯函数的个数,所以其对角色的刻画能力有一定的局限性,导致角色分离的准确率通常比较低,无法满足应用的需求。



技术实现要素:

本申请实施例提供一种基于语音的角色分离方法和装置,以解决现有的基 于GMM和HMM的角色分离技术准确率比较低的问题。

本申请提供一种基于语音的角色分离方法,包括:

从语音信号中逐帧提取特征矢量,得到特征矢量序列;

为特征矢量分配角色标签;

利用具有角色标签的特征矢量训练深度神经网络DNN模型;

根据所述DNN模型和利用特征矢量训练得到的隐马尔科夫模型HMM,判定特征矢量序列对应的角色序列,并输出角色分离结果;

其中,所述DNN模型用于根据输入的特征矢量输出对应每个角色的概率,HMM用于描述角色间的跳转关系。

可选的,在所述从语音信号中逐帧提取特征矢量的步骤之后、在所述为特征矢量分配角色标签的步骤之前,执行下述操作:通过识别并剔除不包含语音内容的音频帧、将所述语音信号切分为语音段;

所述为特征矢量分配角色标签包括:为各语音段中的特征矢量分配角色标签;所述判定特征矢量序列对应的角色序列包括:判定各语音段所包含的特征矢量序列对应的角色序列。

可选的,所述为各语音段中的特征矢量分配角色标签包括:通过建立高斯混合模型GMM和HMM,为各语音段中的特征矢量分配角色标签;其中所述GMM用于针对每个角色、根据输入的特征矢量输出该特征矢量对应于所述角色的概率;

所述根据所述DNN模型和利用特征矢量训练得到的HMM,判定各语音段所包含的特征矢量序列对应的角色序列包括:根据所述DNN模型和为各语音段中的特征矢量分配角色标签所采用的HMM,判定所述各语音段所包含的特征矢量序列对应的角色序列。

可选的,所述通过建立高斯混合模型GMM和HMM,为各语音段中的特征矢量分配角色标签,包括:

按照预设的初始角色数量选择相应数量的语音段,并为每个语音段分别指定不同角色;

利用指定角色的语音段中的特征矢量,训练针对每个角色的GMM以及HMM;

根据训练得到的GMM和HMM进行解码,获取输出各语音段所包含的特征矢量序列的概率值排序靠前的角色序列;

判断所述角色序列对应的概率值是否大于预设阈值;若是,按照所述角色序列为各语音段中的特征矢量分配角色标签。

可选的,当所述判断所述角色序列对应的概率值是否大于预设阈值的结果为否时,执行下述操作:

根据所述角色序列,为每个语音段指定对应的角色;

根据每个语音段中的特征矢量以及对应的角色,训练针对每个角色的GMM以及HMM;

转到所述根据训练得到的GMM和HMM进行解码的步骤执行。

可选的,所述根据所述角色序列,为每个语音段指定对应的角色,包括:

针对每个语音段,将其中各特征矢量对应的角色的众数指定为所述语音段的角色。

可选的,所述根据每个语音段中的特征矢量以及对应的角色,训练针对每个角色的GMM以及HMM,包括:在上一次训练得到的模型基础上采用增量方式训练所述GMM以及HMM。

可选的,当所述判断所述角色序列对应的概率值是否大于预设阈值的结果为否时,执行下述操作:

判断在当前角色数量下训练GMM和HMM的次数是否小于预设的训练次数上限;

若是,执行所述根据所述角色序列为每个语音段指定对应的角色的步骤;

若否,执行下述操作:

调整角色数量,选择相应数量的语音段并为每个语音段分别指定不同角色;

并转到所述利用指定角色的语音段中的特征矢量,训练针对每个角色的GMM以及HMM的步骤执行。

可选的,当所述判断在当前角色数量下训练GMM和HMM的次数是否小于预设的训练次数上限的结果为否时,执行下述操作:

判断当前角色数量是否符合预设要求;若是,转到所述按照所述角色序列为各语音段中的特征矢量分配角色标签的步骤执行,若否,则执行所述调整角 色数量的步骤。

可选的,所述预设的初始角色数量为2,所述调整角色数量包括:为当前角色数量加1。

可选的,所述从语音信号中逐帧提取特征矢量,得到特征矢量序列包括:

按照预先设定的帧长度对语音信号进行分帧处理,得到多个音频帧;

提取各音频帧的特征矢量,得到所述特征矢量序列。

可选的,所述提取各音频帧的特征矢量包括:提取MFCC特征、PLP特征、或者LPC特征。

可选的,所述识别并剔除不包含语音内容的音频帧包括:采用VAD技术识别所述不包含语音内容的音频帧、并执行相应的剔除操作。

可选的,在采用VAD技术执行所述识别及剔除操作、并将所述语音信号切分为语音段之后,执行下述VAD平滑操作:

将时长小于预设阈值的语音段与相邻语音段合并。

可选的,所述利用具有角色标签的特征矢量训练深度神经网络DNN模型包括:采用反向传播算法训练所述DNN模型。

可选的,所述根据所述DNN模型和利用特征矢量训练得到的隐马尔科夫模型HMM,判定特征矢量序列对应的角色序列,包括:根据所述DNN模型和HMM执行解码操作,获取输出所述特征矢量序列的概率值排序靠前的角色序列,并将所述角色序列作为与所述特征矢量序列对应的角色序列。

可选的,所述输出角色分离结果包括:根据特征矢量序列对应的角色序列,针对每个角色输出与其对应的特征矢量所属音频帧的起止时间信息。

可选的,所述选择相应数量的语音段,包括:选择时长满足预设要求的、所述数量的语音段。

相应的,本申请还提供一种基于语音的角色分离装置,包括:

特征提取单元,用于从语音信号中逐帧提取特征矢量,得到特征矢量序列;

标签分配单元,用于为特征矢量分配角色标签;

DNN模型训练单元,用于利用具有角色标签的特征矢量训练DNN模型,其中所述DNN模型用于根据输入的特征矢量输出对应每个角色的概率;

角色判定单元,用于根据所述DNN模型和利用特征矢量训练得到的HMM, 判定特征矢量序列对应的角色序列并输出角色分离结果,其中所述HMM用于描述角色间的跳转关系。

可选的,所述装置还包括:

语音段切分单元,用于在所述特征提取单元提取特征矢量后、在触发所述标签分配单元工作之前,通过识别并剔除不包含语音内容的音频帧、将所述语音信号切分为语音段;

所述标签分配单元具体用于,为各语音段中的特征矢量分配角色标签;

所述角色判定单元具体用于,根据所述DNN模型和利用特征矢量训练得到的HMM,判定各语音段所包含的特征矢量序列对应的角色序列并输出角色分离结果。

可选的,所述标签分配单元具体用于,通过建立GMM和HMM,为各语音段中的特征矢量分配角色标签,其中所述GMM用于针对每个角色、根据输入的特征矢量输出该特征矢量对应于所述角色的概率;

所述角色判定单元具体用于,根据所述DNN模型和为各语音段中的特征矢量分配角色标签所采用的HMM,判定所述各语音段所包含的特征矢量序列对应的角色序列。

可选的,所述标签分配单元包括:

初始角色指定子单元,用于按照预设的初始角色数量选择相应数量的语音段,并为每个语音段分别指定不同角色;

初始模型训练子单元,用于利用指定角色的语音段中的特征矢量,训练针对每个角色的GMM以及HMM;

解码子单元,用于根据训练得到的GMM和HMM进行解码,获取输出各语音段所包含的特征矢量序列的概率值排序靠前的角色序列;

概率判断子单元,用于判断所述角色序列对应的概率值是否大于预设阈值;

标签分配子单元,用于当所述概率判断子单元的输出为是时,按照所述角色序列为各语音段中的特征矢量分配角色标签。

可选的,所述标签分配单元还包括:

逐语音段角色指定子单元,用于当所述概率判断子单元的输出为否时,根据所述角色序列,为每个语音段指定对应的角色;

模型更新训练子单元,用于根据每个语音段中的特征矢量以及对应的角色,训练针对每个角色的GMM以及HMM,并触发所述解码子单元工作。

可选的,所述逐语音段角色指定子单元具体用于,针对每个语音段,将其中各特征矢量对应的角色的众数指定为所述语音段的角色。

可选的,所述模型更新训练子单元具体用于,在上一次训练得到的模型基础上采用增量方式训练所述GMM以及HMM。

可选的,所述标签分配单元还包括:

训练次数判断子单元,用于当所述概率判断子单元的输出为否时,判断在当前角色数量下训练GMM和HMM的次数是否小于预设的训练次数上限,并在判断结果为是时,触发所述逐语音段角色指定子单元工作。

角色数量调整子单元,用于当所述训练次数判断子单元的输出为否时,调整角色数量,选择相应数量的语音段并为每个语音段分别指定不同角色,并触发所述初始模型训练子单元工作。

可选的,所述标签分配单元还包括:

角色数量判断子单元,用于当所述训练次数判断子单元的输出为否时,判断当前角色数量是否符合预设要求,若符合则触发所述标签分配子单元工作,否则触发所述角色数量调整子单元工作。

可选的,所述特征提取单元包括:

分帧子单元,用于按照预先设定的帧长度对语音信号进行分帧处理,得到多个音频帧;

特征提取执行子单元,用于提取各音频帧的特征矢量,得到所述特征矢量序列。

可选的,所述特征提取执行子单元具体用于,提取各音频帧的MFCC特征、PLP特征、或者LPC特征,得到所述特征矢量序列。

可选的,所述语音段切分单元具体用于,通过采用VAD技术识别并剔除所述不包含语音内容的音频帧、将所述语音信号切分为语音段。

可选的,所述装置还包括:

VAD平滑单元,用于在所述语音段切分单元采用VAD技术切分语音段后,将时长小于预设阈值的语音段与相邻语音段合并。

可选的,所述DNN模型训练单元具体用于,采用反向传播算法训练所述DNN模型。

可选的,所述角色判定单元具体用于,根据所述DNN模型和HMM执行解码操作,获取输出所述特征矢量序列的概率值排序靠前的角色序列,并将所述角色序列作为与所述特征矢量序列对应的角色序列。

可选的,所述角色判定单元采用如下方式输出角色分离结果:根据特征矢量序列对应的角色序列,针对每个角色输出与其对应的特征矢量所属音频帧的起止时间信息。

可选的,所述初始角色指定子单元或所述角色数量调整子单元具体通过如下方式选择相应数量的语音段:选择时长满足预设要求的、所述数量的语音段。

与现有技术相比,本申请具有以下优点:

本申请提供的基于语音的角色分离方法,首先从语音信号中逐帧提取特征矢量序列,然后在为特征矢量分配角色标签的基础上训练DNN模型,并根据所述DNN模型以及利用特征矢量训练得到的HMM,判定特征矢量序列对应的角色序列,从而得到角色分离结果。本申请提供的上述方法,由于采用了具有强大特征提取能力的DNN模型对说话人角色进行建模,比传统的GMM具有更为强大的刻画能力,对角色的刻画更加精细、准确,因此能够获得更为准确的角色分离结果。

附图说明

图1是本申请的一种基于语音的角色分离方法的实施例的流程图;

图2是本申请实施例提供的从语音信号中提取特征矢量序列的处理流程图;

图3是本申请实施例提供的利用GMM和HMM为各语音段中的特征矢量分配角色标签的处理流程图;

图4是本申请实施例提供的语音段划分的示意图;

图5是本申请实施例提供的DNN网络的拓扑结构示意图;

图6是本申请的一种基于语音的角色分离装置的实施例的示意图。

具体实施方式

在下面的描述中阐述了很多具体细节以便于充分理解本申请。但是,本申请能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本申请内涵的情况下做类似推广,因此,本申请不受下面公开的具体实施的限制。

在本申请中,分别提供了一种基于语音的角色分离方法,以及一种基于语音的角色分离装置,在下面的实施例中逐一进行详细说明。为了便于理解,在对实施例进行描述之前,先对本申请的技术背景、技术方案、以及实施例的撰写方式作简要说明。

现有的应用于语音领域的角色分离技术通常采用GMM(Gaussian mixture model—高斯混合模型)对角色进行建模、采用HMM(Hidden Markov Model—隐马尔可夫模型)对角色之间的跳转进行建模。

所述HMM是统计模型,用来描述一个含有隐含未知参数的马尔可夫过程。隐马尔可夫模型是马尔可夫链的一种,它的状态(称为隐藏状态)不能直接观察到,但是与可观察到的观测向量是概率相关的,因此,HMM是一个双重随机过程,包括两个部分:具有状态转移概率的马尔科夫链(通常用转移矩阵A描述),以及描述隐藏状态与观测向量之间的输出关系的随机过程(通常用混淆矩阵B描述,其中的每个元素为隐藏状态对应于观测向量的输出概率,也称为发射概率)。一个具有N个状态的HMM可以用三元组参数λ={π,A,B}表示,其中为各状态的初始概率。

所述GMM可以简单理解为多个高斯密度函数的叠加,其核心思想是用多个高斯分布的概率密度函数的组合来描述特征矢量在概率空间的分布状况,采用该模型可以平滑地近似任意形状的密度分布。其参数包括:各高斯分布的混合权重(mixing weight)、均值向量(mean vector)、协方差矩阵(covariance matrix)。

在现有的基于语音的角色分离应用中,通常对每个角色采用GMM建模,HMM中的状态就是各个角色,观测向量是从语音信号中逐帧提取的特征矢量,各个状态输出特征矢量的发射概率由GMM决定(根据GMM可以获知混淆矩阵),而角色分离过程就是利用GMM和HMM确定与特征矢量序列对应的角色序列的过程。

由于GMM的函数拟合功能受限于所采用的高斯密度函数的个数,其本身 的表达能力存在一定的局限性,导致现有的采用GMM和HMM进行角色分离的准确率比较低。针对这一问题,本申请的技术方案在为各语音帧的特征矢量预先分配角色标签的基础上,利用深度神经网络(DNN)决定HMM各状态的发射概率,并根据DNN和HMM判定与特征矢量序列对应的角色序列,由于DNN具有组合低层特征形成更加抽象的高层特征的强大能力,可以实现更为精准的角色刻画,因此能够获取更为准确的角色分离结果。

本申请的技术方案,首先为从语音信号中提取的特征矢量分配角色标签,此时分配的角色标签通常并不是很准确,但是可以为后续执行有监督的学习过程提供参考,在此基础上训练得到的DNN模型能够更为准确地刻画角色,从而使角色分离结果更为准确。在具体实施本申请的技术方案时可以采用基于统计的算法或者采用分类器等方式,实现所述分配角色标签的功能,在本申请提供的下述实施例中采用了根据GMM和HMM为特征矢量分配角色标签的实施方式。

下面,对本申请的实施例进行详细说明。请参考图1,其为本申请的一种基于语音的角色分离方法的实施例的流程图。所述方法包括如下步骤:

步骤101、从语音信号中逐帧提取特征矢量,得到特征矢量序列。

待进行角色分离的语音信号通常是时域信号,本步骤通过分帧和提取特征矢量两个处理过程,获取能够表征所述语音信号的特征矢量序列,下面结合附图2做进一步说明。

步骤101-1、按照预先设定的帧长度对语音信号进行分帧处理,得到多个音频帧。

在具体实施时,可以根据需求预先设定帧长度,例如可以设置为10ms、或者15ms等,然后根据所述帧长度对时域的语音信号进行逐帧切分,从而将语音信号切分为多个音频帧。根据所采用的切分策略的不同,相邻音频帧可以不存在交叠、也可以是有交叠的。

步骤101-2、提取各音频帧的特征矢量,得到所述特征矢量序列。

将时域的语音信号切分为多个音频帧后,可以逐帧提取能够表征语音信号的特征矢量。由于语音信号在时域上的描述能力相对较弱,通常可以针对每个音频帧进行傅里叶变换,然后提取频域特征作为音频帧的特征矢量,例如,可以提取MFCC(Mel Frequency Cepstrum Coefficient—梅尔频率倒谱系数)特征、 PLP(Perceptual Linear Predictive—感知线性预测)特征、或者LPC(Linear Predictive Coding—线性预测编码)特征等。

下面以提取某一音频帧的MFCC特征为例,对特征矢量的提取过程作进一步描述。首先将音频帧的时域信号通过FFT(Fast Fourier Transformation—快速傅氏变换)得到对应的频谱信息,将所述频谱信息通过Mel滤波器组得到Mel频谱,在Mel频谱上进行倒谱分析,其核心一般是采用DCT(Discrete Cosine Transform—离散余弦变换)进行逆变换,然后取预设的N个系数(例如N=12或者38),则得到了所述音频帧的特征矢量:MFCC特征。对每个音频帧都采用上述方式进行处理,可以得到表征所述语音信号的一系列特征矢量,即本申请所述的特征矢量序列。

步骤102、为特征矢量分配角色标签。

本实施例通过建立GMM和HMM为特征矢量序列中的特征矢量分配角色标签。考虑到在一段语音信号中除了包含对应于各角色的语音信号外,可能还包含没有语音内容的部分,例如:由于倾听、思考等原因造成的静音部分。由于这些部分不包含角色的信息,为了提高角色分离的准确性,可以预先从语音信号中识别并剔除这样的音频帧。

基于上述考虑,本实施例在为特征矢量分配角色标签之前先剔除不包含语音内容的音频帧、并进行语音段的划分,然后在此基础上为各语音段中的特征矢量分配角色标签,所述分配角色标签包括:进行角色的初始划分,在初始划分的基础上迭代训练GMM和HMM,如果训练得到的模型不满足预设要求,则调整角色数量然后重新训练GMM和HMM,直至训练得到的模型满足预设要求,则根据该模型为各语音段中的特征矢量分配角色标签。下面结合附图3对上述处理过程进行详细说明。

步骤102-1、通过识别并剔除不包含语音内容的音频帧、将所述语音信号切分为语音段。

现有技术通常采用声学切分方式,即:根据已有的模型从语音信号中分离出比如“音乐段”、“语音段”、“静音段”等。这种方式需要提前训练好各种音频段对应的声学模型,比如“音乐段”对应的声学模型,基于该声学模型,能够从语音信号中分离出该声学模型对应的音频段。

优选地,本申请的技术方案可以采用VAD(Voice Activity Detection—语音 活动检测)技术识别不包含语音内容的部分,这样,相对于采用声学切分方式的技术,可以不需要提前训练不同音频段对应的声学模型,适应性更强。例如,可以通过计算音频帧的能量特征、过零率等识别音频帧是否为静音帧,对于存在环境噪声且比较强的情况下,可以综合采用上述多种手段、或者通过建立噪声模型进行识别。

识别出不包含语音内容的音频帧后,一方面可以将这部分音频帧从语音信号中剔除,以提高角色分离的准确性;另一方面通过对不包含语音内容的音频帧的识别,相当于识别出了每段有效语音(包含语音内容)的起点和终点,因此可以在此基础上进行语音段的划分。

请参见附图4,其为本实施例提供的语音段划分的示意图,在该图中通过VAD技术检测出在时间t2与t3之间、以及t4与t5之间的各音频帧为静音帧,本步骤可以从语音信号中剔除这部分静音帧,并相应划分出3个语音段:位于t1与t2之间的语音段1(seg1)、位于t3和t4之间的语音段2(seg2)、以及位于t5和t6之间的语音段3(seg3),每个语音段都包含若干个音频帧,每个音频帧都有对应的特征矢量。在划分语音段的基础上,可以粗略地进行角色分配,便于为后续的训练提供一个合理的起点。

优选的,在采用VAD技术进行上述处理后,还可以执行VAD平滑操作。这主要是考虑到人类实际发声的情况,真实的语音段的持续时间不会太短,如果执行上述VAD操作后,得到的某些语音段的持续时间小于预先设置的阈值(例如,语音段长度为30ms,而预先设置的阈值为100ms),则可以将这样的语音段与相邻语音段合并,形成较长的语音段。进行VAD平滑处理后得到的语音段划分更接近于真实的情况,有助于提高角色分离的准确性。

本步骤通过VAD技术将语音信号划分成若干个语音段,后续步骤102-2至102-11的任务则是利用GMM和HMM为各语音段中的特征矢量分配角色标签。

步骤102-2、按照预设的初始角色数量选择相应数量的语音段,并为每个语音段分别指定不同角色。

本步骤可以随机地从已经划分好的语音段中选择与初始角色数量相同的语音段,考虑到所选语音段要用于进行GMM和HMM的初始训练,如果时长比较短则可用于训练的数据较少,时长太长则包含一个以上角色的可能性就会增加,这两种情况都不利于进行初始训练,因此本实施例提供一种优选实施方式, 即:根据初始角色数量选择时长满足预设要求的语音段、并为每个语音段分别指定不同的角色。

本实施例中预设的初始角色数量为2,预设的选择语音段的要求为:时长在2s至4s之间,因此本步骤从已经划分好的语音段中选择满足上述要求的2个语音段,并为每个语音段分别指定不同的角色。仍以图4所示的语音段划分为例,seg1和seg2各自满足上述的时长要求,因此可以选择seg1和seg2这两个语音段,并为seg1指定角色1(s1),为seg2指定角色2(s2)。

步骤102-3、利用指定角色的语音段中的特征矢量,训练针对每个角色的GMM以及HMM。

本步骤根据指定角色的语音段包含的特征矢量,训练针对每个角色的GMM、以及描述角色间的跳转关系的HMM,本步骤是在特定角色数量下进行的初始训练。仍以图4所示的语音段划分为例,在初始角色数量下,seg1中包含的特征矢量用于训练角色1的GMM(gmm1),seg2中包含的特征矢量用于训练角色2的GMM(gmm2),如果在该角色数量下训练得到的GMM和HMM不满足要求,则可以调整角色数量并重复转到本步骤,根据调整后的角色数量执行相应的初始训练。

针对每个角色训练GMM以及HMM的过程,也就是在给定观测序列(即:各语音段包含的特征矢量序列,也即训练样本)的基础上学习与HMM相关的各个参数的过程,所述各个参数包括:HMM的转移矩阵A、每个角色对应的GMM的均值向量、协方差矩阵等参数。在具体实施时可以采用Baum-Welch算法进行训练,先根据训练样本估计各参数的初始值,根据训练样本和各参数的初始值,估计在时刻t处于某一状态sj的后验概率γt(sj),然后根据计算得到的后验概率更新HMM的各个参数,再根据训练样本和更新后的各参数再次估计后验概率γt(sj)......,反复迭代执行上述过程,直到找到一组HMM参数使得输出观测序列的概率最大化。得到满足上述要求的参数后,则在特定角色数量下的GMM和HMM初始训练完毕。

步骤102-4、根据训练得到的GMM和HMM进行解码,获取输出各语音段所包含的特征矢量序列的概率值排序靠前的角色序列。

在步骤102-1中已经将语音信号划分为若干个语音段,每个语音段中的每个音频帧都有对应的特征矢量,共同组成本步骤所述的特征矢量序列。本步骤在 给定所述特征矢量序列、以及已训练好的GMM和HMM的基础上,找到所述特征矢量序列可能从属的HMM状态序列,即:角色序列。

本步骤完成的功能是通常所述的HMM解码过程,根据所述特征矢量序列,搜索输出该特征矢量序列的概率值排序靠前的角色序列,作为优选实施方式,通常可以选择最大概率值对应的角色序列,即最可能输出所述特征矢量序列的角色序列,也称为最优的隐状态序列。

在具体实施时,可以采用穷举搜索的方法,计算每个可能的角色序列输出所述特征矢量序列的概率值,并从中选择最大值。为了提高计算效率,作为优选实施方式,可以采用维特比(Viterbi)算法,利用HMM的转移概率在时间上的不变性来降低计算的复杂度,并在搜索得到输出所述特征矢量序列的最大概率值后,根据搜索过程记录的信息进行回溯,获取对应的角色序列。

步骤102-5、判断所述角色序列对应的概率值是否大于预设阈值,若是,执行步骤102-6,否则转到步骤102-7执行。

如果步骤102-4通过解码过程获取的角色序列对应的概率值大于预先设定的阈值,例如:0.5,通常可以认为目前的GMM和HMM已经稳定,可以执行步骤102-6为各语音段中的特征矢量分配角色标签(后续步骤104可以利用所述已稳定的HMM判定特征矢量序列对应的角色序列),否则转到步骤102-7判断是否继续进行迭代训练。

步骤102-6、按照所述角色序列为各语音段中的特征矢量分配角色标签。

由于目前的GMM和HMM已经稳定,因此可以按照步骤102-4通过解码获取的角色序列为各语音段中的特征矢量分配角色标签。在具体实施时,由于所述角色序列中的每个角色与各语音段中的每个特征矢量是一一对应的,因此可以根据该一一对应关系为每个特征矢量分配角色标签。至此,各语音段中的特征矢量都有了各自的角色标签,步骤102执行完毕,可以继续执行步骤103。

步骤102-7、判断在当前角色数量下训练GMM和HMM的次数是否小于预设的训练次数上限;若是,则执行步骤102-8,否则转到步骤102-10执行。

执行到本步骤,说明目前训练得到的GMM和HMM还没有稳定,需要继续进行迭代训练。考虑到在训练过程所采用的当前角色数量与实际角色数量(所述语音信号涉及的真实角色数量)不一致的情况下,GMM和HMM即使经过多次迭代训练也可能无法满足要求(解码操作所获取的角色序列对应的概率值始 终不满足大于预设阈值的条件),为了避免出现无意义的循环迭代过程,可以预先设置在每种角色数量下训练GMM和HMM的训练次数上限。如果本步骤判断出在当前角色数量下的训练次数小于所述上限,则继续执行步骤102-8为各语音段指定角色以便继续进行迭代训练,否则说明目前采用的角色数量可能与实际情况不一致,因此可以转到步骤102-10判断是否需要调整角色数量。

步骤102-8、根据所述角色序列为每个语音段指定对应的角色。

在步骤102-4中已经通过解码获取了角色序列,由于角色序列中的每个角色与各语音段中的特征矢量是一一对应的,因此可以获知各语音段中每个特征矢量对应的角色。本步骤针对语音信号中的每个语音段,通过计算其中各特征矢量对应的角色的众数,为所述语音段指定角色。例如:某语音段包含10个音频帧,也即包含10个特征矢量,其中8个特征矢量对应角色1(s1),2个特征矢量对应于角色2(s2),那么所述语音段中各特征矢量对应的角色的众数为角色1(s1),因此将角色1(s1)指定为所述语音段的角色。

步骤102-9、根据每个语音段中的特征矢量以及对应的角色,训练针对每个角色的GMM以及HMM,并转到步骤102-4继续执行。

在步骤102-8为每个语音段指定角色的基础上,可以训练针对每个角色的GMM以及HMM。仍以图4所示的语音段划分为例,如果步骤102-8将seg1和seg3指定为角色1(s1),seg2指定为角色2(s2),那么seg1和seg3包含的特征矢量可以用于训练角色1的GMM(gmm1),seg2中包含的特征矢量用于训练角色2的GMM(gmm2)。GMM和HMM的训练方法请参见步骤102-3的相关文字,此处不再赘述。

在具体实施中,本技术方案通常为迭代训练过程,为了提高训练效率,本步骤可以在上一次训练得到的GMM和HMM的基础上采用增量方式训练新的GMM和HMM,即在上一次训练得到的参数基础上,利用目前的样本数据,继续调整各个参数,从而可以提高训练速度。

完成上述训练过程,得到新的GMM和HMM后,可以转到步骤102-4执行,根据新的模型进行解码以及执行后续的操作。

步骤102-10、判断当前角色数量是否符合预设要求;若是,转到步骤102-6执行,否则继续执行步骤102-11。

执行到本步骤,通常说明在当前角色数量下训练得到的GMM和HMM并 未稳定、而且训练次数已经等于或者超过了预设的训练次数上限,在这种情况下可以判断当前角色数量是否符合预设要求,若符合,则说明可以停止角色分离过程,转到步骤102-6进行角色标签的分配,否则继续执行步骤102-11进行角色数量的调整。

步骤102-11、调整角色数量,选择相应数量的语音段并为每个语音段分别指定不同角色;并转到步骤102-3继续执行。

例如,当前角色数量为2,对角色数量的预设要求为“角色数量等于4”,步骤102-10判定当前角色数量尚未符合预设要求,这种情况下,可以执行本步骤进行角色数量的调整,例如:为当前角色数量加1,即将当前角色数量更新为3。

根据调整后的角色数量,从语音信号包含的各个语音段中选择相应数量的语音段,并为所选每个语音段分别指定不同的角色。其中对所选语音段的时长要求,可以参见步骤102-2中的相关文字,此处不再赘述。

仍以图4所示的语音段划分为例,如果当前角色数量从2增加为3,并且seg1、seg2和seg3都满足选择语音段的时长要求,那么本步骤可以选择这3个语音段,并为seg1指定角色1(s1),为seg2指定角色2(s2),为seg3指定角色3(s3)。

完成上述调整角色数量以及选择语音段的操作后,可以转到步骤102-3针对调整后的角色数量初始训练GMM和HMM。

步骤103、利用具有角色标签的特征矢量训练DNN模型。

此时,已经为各语音段中的特征矢量分配了角色标签,在此基础上,本步骤以具有角色标签的特征矢量为样本训练DNN模型,所述DNN模型用于根据输入的特征矢量输出对应每个角色的概率。为了便于理解,先对DNN作简要说明。

DNN(Deep Neural Networks—深度神经网络)通常指包括1个输入层、3个以上隐含层(也可以包含7个、9个、甚至更多的隐含层)、以及1个输出层的神经网络。每个隐含层都能够提取一定的特征,并将本层的输出作为下一层的输入,通过逐层提取特征,将低层特征形成更加抽象的高层特征,从而能够实现对物体或者种类的识别。

请参见图5,其为DNN网络的拓扑结构示意图,图中的DNN网络总共有n 层,每层有多个神经元,不同层之间全连接;每层都有自己的激励函数f(例如Sigmoid函数)。输入为特征矢量v,第i层到第i+1层的转移矩阵为wi(i+1),第i+1层的偏置矢量为b(i+1),第i层的输出为outi,第i+1的输入为ini+1,计算过程为:

ini+1=outi*wi(i+1)+b(i+1)

outi+1=f(ini+1)

由此可见DNN模型的参数包括层间的转移矩阵w和每一层的偏置矢量b等,训练DNN模型的主要任务就是确定上述参数。在实际应用中通常采用BP(Back-propagation—反向传播)算法进行训练,训练过程是一个有监督的学习过程:输入信号为带有标签的特征矢量,分层向前传播,到达输出层后再逐层反向传播,通过梯度下降法调整各层的参数以使网络的实际输出不断接近期望输出。对于每层有上千神经元的DNN网络来说,其参数的数量可能是百万级的甚至更多,完成上述训练过程获取的DNN模型,通常具有非常强大的特征提取能力以及识别能力。

在本实施例中,DNN模型用于根据输入的特征矢量输出对应每个角色的概率,因此DNN模型的输出层可以采用分类器(例如Softmax)作为激活函数,在步骤102完成预先分配角色标签的处理后,如果角色标签涉及的角色数量为n,那么DNN模型的输出层可以包括n个节点,分别对应于n个角色,针对输入的特征矢量每个节点输出该特征矢量对应所属角色的概率值。

本步骤以带有角色标签的特征矢量作为样本,对构建的上述DNN模型进行有监督训练。在具体实施时,可以直接采用上述BP算法进行训练,考虑到单纯采用BP算法训练有可能出现陷入局部极小值的情况、导致最终得到的模型无法满足应用的需求,因此本实施例采用预训练(pre-training)与BP算法相结合的方式进行DNN模型的训练。

预训练通常采用非监督贪心逐层训练算法,先采用非监督方式训练含有一个隐层的网络,然后保留训练好的参数,使网络层数加1,接着训练含两个隐层的网络......以此类推,直到含有最大隐层的网络。这样逐层训练完之后,以该无监督训练过程学习到的参数值作为初始值,再采用传统BP算法进行有监督的训练,最终得到DNN模型。

由于经过pre-training得到的初始分布比纯BP算法采用的随机初始参数更接 近于最终的收敛值,相当于使后续的有监督训练过程有一个好的起点,因此训练得到的DNN模型通常不会陷入局部极小值,能够获得较高的识别率。

步骤104、根据所述DNN模型和利用特征矢量训练得到的HMM,判定特征矢量序列对应的角色序列,并输出角色分离结果。

由于所述DNN模型用于根据输入的特征矢量输出对应每个角色的概率,同时根据特征矢量序列的角色标签的分布情况可以获知对应每个角色的先验概率,而每个特征矢量的先验概率通常也是固定的,因此依据贝叶斯定理,根据DNN模型的输出以及上述先验概率可以获知每个角色输出相应特征矢量的概率,也即可以采用步骤103训练好的DNN模型决定HMM各状态的发射概率。

所述HMM可以是在采用上述DNN模型决定HMM发射概率的基础上,用特征矢量序列训练得到的。考虑到在步骤102为特征矢量分配角色标签时所采用的HMM对各角色之间的跳转关系的描述已基本稳定,可以不再进行额外的训练,因此本实施例直接采用该HMM,并用训练得到的DNN模型替换GMM,即:由DNN模型决定HMM各状态的发射概率。

在本实施例中,步骤102-1进行了语音段的切分,本步骤根据所述DNN模型和预先分配角色标签时所采用的HMM,判定各语音段所包含的特征矢量序列对应的角色序列。

根据特征矢量序列确定角色序列的过程是通常所述的解码问题,可以根据所述DNN模型和HMM执行解码操作,获取输出所述特征矢量序列的概率值排序靠前(例如概率值最大)的角色序列,并将所述角色序列作为与所述特征矢量序列对应的角色序列。具体说明请参见步骤102-4中的相关文字,此处不再赘述。

通过解码过程得到与各语音段所包含的特征矢量序列对应的角色序列后,则可以输出相应的角色分离结果。由于角色序列中的每个角色与特征矢量是一一对应的,而每个特征矢量对应的音频帧都有各自的时间起止点,因此本步骤可以针对每个角色输出与其对应的特征矢量所属音频帧的起止时间信息。

至此,通过步骤101至步骤104,对本申请提供的基于语音的角色分离方法的具体实施方式进行了详细的说明。需要说明的是,本实施例在步骤102为特征矢量预先分配角色标签的过程中采用了自顶向下、逐渐增加角色数量的方式。在其他实施方式中,也可以采用自底向上、逐渐减少角色数量的方式:最初可 以将切分得到的每个语音段分别指定给不同的角色,然后训练针对每个角色的GMM和HMM,如果通过迭代训练得到的GMM和HMM在执行解码操作后得到的概率值始终不大于预设阈值,那么在调整角色数量时,可以通过评估每个角色的GMM彼此之间的相似度(例如计算KL散度),将相似度满足预设要求的GMM对应的语音段进行合并,并相应减少角色数量,重复迭代执行上述过程,直到HMM通过解码得到的概率值大于预设阈值或者角色数量符合预设要求,则停止迭代过程,并根据解码得到的角色序列为各语音段中的特征矢量分配角色标签。

综上所述,本申请提供的基于语音的角色分离方法,由于采用具有强大特征提取能力的DNN模型对角色进行建模,比传统的GMM具有更为强大的刻画能力,对角色的刻画更加精细、准确,因此能够获得更为准确的角色分离结果。本申请的技术方案不仅可以应用于对客服中心、会议语音等对话语音进行角色分离的场景中,还可以应用于其它需要对语音信号中的角色进行分离的场景中,只要所述语音信号中包含两个或者两个以上角色,就都可以采用本申请的技术方案,并取得相应的有益效果。

在上述的实施例中,提供了一种基于语音的角色分离方法,与之相对应的,本申请还提供一种基于语音的角色分离装置。请参看图6,其为本申请的一种基于语音的角色分离装置的实施例示意图。由于装置实施例基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。下述描述的装置实施例仅仅是示意性的。

本实施例的一种基于语音的角色分离装置,包括:特征提取单元601,用于从语音信号中逐帧提取特征矢量,得到特征矢量序列;标签分配单元602,用于为特征矢量分配角色标签;DNN模型训练单元603,用于利用具有角色标签的特征矢量训练DNN模型,其中所述DNN模型用于根据输入的特征矢量输出对应每个角色的概率;角色判定单元604,用于根据所述DNN模型和利用特征矢量训练得到的HMM,判定特征矢量序列对应的角色序列并输出角色分离结果,其中所述HMM用于描述角色间的跳转关系。

可选的,所述装置还包括:

语音段切分单元,用于在所述特征提取单元提取特征矢量后、在触发所述 标签分配单元工作之前,通过识别并剔除不包含语音内容的音频帧、将所述语音信号切分为语音段;

所述标签分配单元具体用于,为各语音段中的特征矢量分配角色标签;

所述角色判定单元具体用于,根据所述DNN模型和利用特征矢量训练得到的HMM,判定各语音段所包含的特征矢量序列对应的角色序列并输出角色分离结果。

可选的,所述标签分配单元具体用于,通过建立GMM和HMM,为各语音段中的特征矢量预先分配角色标签,其中所述GMM用于针对每个角色、根据输入的特征矢量输出该特征矢量对应于所述角色的概率;

所述角色判定单元具体用于,根据所述DNN模型和为各语音段中的特征矢量分配角色标签所采用的HMM,判定所述各语音段所包含的特征矢量序列对应的角色序列。

可选的,所述标签分配单元包括:

初始角色指定子单元,用于按照预设的初始角色数量选择相应数量的语音段,并为每个语音段分别指定不同角色;

初始模型训练子单元,用于利用指定角色的语音段中的特征矢量,训练针对每个角色的GMM以及HMM;

解码子单元,用于根据训练得到的GMM和HMM进行解码,获取输出各语音段所包含的特征矢量序列的概率值排序靠前的角色序列;

概率判断子单元,用于判断所述角色序列对应的概率值是否大于预设阈值;

标签分配子单元,用于当所述概率判断子单元的输出为是时,按照所述角色序列为各语音段中的特征矢量分配角色标签。

可选的,所述标签分配单元还包括:

逐语音段角色指定子单元,用于当所述概率判断子单元的输出为否时,根据所述角色序列,为每个语音段指定对应的角色;

模型更新训练子单元,用于根据每个语音段中的特征矢量以及对应的角色,训练针对每个角色的GMM以及HMM,并触发所述解码子单元工作。

可选的,所述逐语音段角色指定子单元具体用于,针对每个语音段,将其中各特征矢量对应的角色的众数指定为所述语音段的角色。

可选的,所述模型更新训练子单元具体用于,在上一次训练得到的模型基础上采用增量方式训练所述GMM以及HMM。

可选的,所述标签分配单元还包括:

训练次数判断子单元,用于当所述概率判断子单元的输出为否时,判断在当前角色数量下训练GMM和HMM的次数是否小于预设的训练次数上限,并在判断结果为是时,触发所述逐语音段角色指定子单元工作。

角色数量调整子单元,用于当所述训练次数判断子单元的输出为否时,调整角色数量,选择相应数量的语音段并为每个语音段分别指定不同角色,并触发所述初始模型训练子单元工作。

可选的,所述标签分配单元还包括:

角色数量判断子单元,用于当所述训练次数判断子单元的输出为否时,判断当前角色数量是否符合预设要求,若符合则触发所述标签分配子单元工作,否则触发所述角色数量调整子单元工作。

可选的,所述特征提取单元包括:

分帧子单元,用于按照预先设定的帧长度对语音信号进行分帧处理,得到多个音频帧;

特征提取执行子单元,用于提取各音频帧的特征矢量,得到所述特征矢量序列。

可选的,所述特征提取执行子单元具体用于,提取各音频帧的MFCC特征、PLP特征、或者LPC特征,得到所述特征矢量序列。

可选的,所述语音段切分单元具体用于,通过采用VAD技术识别并剔除所述不包含语音内容的音频帧、将所述语音信号切分为语音段。

可选的,所述装置还包括:

VAD平滑单元,用于在所述语音段切分单元采用VAD技术切分语音段后,将时长小于预设阈值的语音段与相邻语音段合并。

可选的,所述DNN模型训练单元具体用于,采用反向传播算法训练所述DNN模型。

可选的,所述角色判定单元具体用于,根据所述DNN模型和HMM执行解码操作,获取输出所述特征矢量序列的概率值排序靠前的角色序列,并将所述 角色序列作为与所述特征矢量序列对应的角色序列。

可选的,所述角色判定单元采用如下方式输出角色分离结果:根据特征矢量序列对应的角色序列,针对每个角色输出与其对应的特征矢量所属音频帧的起止时间信息。

可选的,所述初始角色指定子单元或所述角色数量调整子单元具体通过如下方式选择相应数量的语音段:选择时长满足预设要求的、所述数量的语音段。

本申请虽然以较佳实施例公开如上,但其并不是用来限定本申请,任何本领域技术人员在不脱离本申请的精神和范围内,都可以做出可能的变动和修改,因此本申请的保护范围应当以本申请权利要求所界定的范围为准。

在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。

内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。

1、计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitory media),如调制的数据信号和载波。

2、本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。

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