首页> 中国专利> 基于说话人分割与聚类的多说话人语速估计方法

基于说话人分割与聚类的多说话人语速估计方法

摘要

基于说话人分割与聚类的多说话人语速估计方法,它涉及一种估计多说话人语速的方法。本发明的估计多说话人语速的方法:首先读入语音流;接着检测上述语音流中的说话人改变点,根据这些改变点将语音流分割成多个语音段;再对上述语音段进行说话人聚类,把相同说话人的语音段按顺序拼接在一起,得到说话人个数以及各个说话人的语音;最后分别估算各个说话人语音的时长及其所包含的字数,估计出各个说话人的语速。与目前基于语音识别的单说话人语速估计方法相比,本方法不但可以估计多说话人的语速,而且速度更快。

著录项

  • 公开/公告号CN102543063A

    专利类型发明专利

  • 公开/公告日2012-07-04

    原文格式PDF

  • 申请/专利权人 华南理工大学;

    申请/专利号CN201110403577.3

  • 发明设计人 李艳雄;徐鑫;贺前华;

    申请日2011-12-07

  • 分类号G10L11/00(20060101);

  • 代理机构44102 广州粤高专利商标代理有限公司;

  • 代理人何淑珍

  • 地址 510640 广东省广州市天河区五山路381号

  • 入库时间 2023-12-18 05:55:46

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2019-11-22

    未缴年费专利权终止 IPC(主分类):G10L25/78 授权公告日:20130724 终止日期:20181207 申请日:20111207

    专利权的终止

  • 2013-07-24

    授权

    授权

  • 2012-09-05

    实质审查的生效 IPC(主分类):G10L11/00 申请日:20111207

    实质审查的生效

  • 2012-07-04

    公开

    公开

说明书

技术领域

本发明涉及语音信号处理和模式识别技术,尤其涉及一种基于说话人分割与聚类的多说话人语速估计方法。

背景技术

随着语音处理技术的发展,目前语音处理的对象正逐步由单说话人语音转向多说话人语音(例如会议语音、谈话语音),估计出多说话人的语速并根据各个说话人的语速自适应地调整语音处理系统(例如语音识别系统)的参数变得越来越重要。另外,在录音棚或实验室的录音过程中,说话人(例如播音员、节目主持人、客服人员等)根据经验主观地测量语速,往往不够准确。虽然录音结束后可以采用人工标注的方法来估计说话人的语速,但是这样做非常费时,特别是数据量很大时这种做法就不太可行。因此,能够自动地估计多说话人的语速就变得非常重要。

现有语速估计方法都是针对单说话人语音的,只能估计单说话人的语速,而不能估计多说话人的语速。另外,现有语速估计方法主要是基于语音识别结果估计说话人的语速:首先采用语音识别器从输入语音中识别音素序列和每个音素对应的时间点;再识别字序列和每个字对应的时间点,从而估计出说话人语速。

上述语速估计方法的不足之处在于:

(1)只能估计单说话人语音的语速。当输入语音中含有多说话人的语音时,输入语音只被作为一个说话人的语音处理,而得不到多说话人的语速估计结果。

(2)速度慢。目前的方法首先对输入语音进行语音识别,再根据识别的音素序列和字序列估算出语速。这种方法需要训练大量的音素模型(一般是隐马尔可夫模型,Hidden Markov Model),在识别时也需要大量的运算(提取特征、估计声学模型及语言模型的输出概率等),因此该方法的速度是比较慢的,不利于实时处理。

发明内容

本发明的目的在于解决现有技术所存在的缺陷,提供一种基于说话人分割与聚类的多说话人语速估计方法:通过说话人分割与聚类先将语音流分割成语音段,再将相同说话人的语音段按顺序拼接在一起;然后分别估算各个说话人语音中的字数及时长,实现多说话人的语速估计。

本发明解决其技术问题所采用的技术方案包括如下步骤:

1)读入语音流:读入记录有多说话人语音的语音流;

2)说话人分割:检测上述语音流中说话人改变点,根据这些改变点将语音流分成多个语音段;

3)说话人聚类:利用谱聚类算法对上述分割出来的语音段进行说话人聚类,把相同说话人的语音段按顺序拼接在一起,得到说话人个数以及各个说话人的语音;

4)语速估计:分别从各个说话人语音中提取能量包络,并通过找出能量包络的局部最大值点确定音节数,从而估计出各个说话人的语速。

所述步骤2)说话人分割的步骤包括:

2.1)利用基于门限判决的静音检测算法从上述读入的语音流中找出静音段和语音段;

2.2)将上述语音段按顺序拼接成一个长语音段,并从长语音段中提取包括梅尔频率倒谱系数(Mel Frequency Cepstral Coefficients,MFCCs)及其一阶差分(Delta-MFCCs)的音频特征;

2.3)利用上述提取出来的音频特征,根据贝叶斯信息准则,判断长语音段中相邻数据窗之间的相似度来检测说话人改变点;

2.4)根据上述说话人改变点,把语音流分割成多个语音段,且每个语音段只包含一个说话人。

所述步骤2.1)基于门限判决的静音检测算法的步骤包括:

2.1.1)对读入的语音流进行分帧,并计算每帧语音的能量,得到语音流的能量特征矢量;

2.1.2)计算能量门限;

2.1.3)将每帧语音的能量与能量门限比较,低于能量门限的帧为静音帧,否则为语音帧,将相邻的静音帧按顺序拼接成一个静音段,将相邻的语音帧按顺序拼接成一个语音段。

所述步骤4)语速估计的步骤包括:

4.1)计算一个说话人语音的能量;

4.2)利用低通滤波器对上述提取出来的能量进行滤波,得到能量包络;

4.3)计算能量包络阈值;

4.4)确定能量包络中局部最大值点,得到局部最大值点的个数;

4.5)将该说话人语音能量包络中的局部最大值点的个数作为音节个数,并除以该说话人语音的时长,得到该说话人的语速;

4.6)重复上述步骤4.1)~4.5),直到所有说话人语音的语速都估计完为止。

所述局部最大值点满足如下条件:

a)该元素值大于能量包络阈值;

b)该元素值大于其前、后0.07秒的所有元素值;

所述局部最大值点所在位置为每个音节的韵母的能量峰值所在的位置。

本发明的有益效果是:利用说话人分割将包含多说话人的语音流切分成多个语音段,且每个语音段只包含一个说话人,再利用说话人聚类将相同说话人的语音段合并在一起,因此本发明能够估计多说话人语音的语速。另外,通过检测各个说话人语音能量包络的局部最大值点确定音节个数,从而估计出各个说话人的语速,与基于语音识别的语速估计方法相比,不需要做复杂的数值计算(例如声学模型及语言模型的输出概率的计算)从而节省了运算时间,更适用于实时语速估计的场合。

附图说明

图1为本发明的流程图。

图2为本发明的实施例中语速估计的示意图,其中图2(a)是某个说话人的语音波形图,图2(b)为提取的语音能量图:实线为能量包络,带圆圈的点划线为能量包络局部最大值点,虚线为能量包络阈值。

具体实施方式

下面结合具体的实施例与说明书附图进行详细描述。

图1是根据本发明的一个实施例的估计多说话人语速的方法的流程图。如图1所示,首先在步骤101,读入语音流。语音流是记录有多说话人语音的语音数据,可以是各种格式的文件,例如WAV、RAM、MP3、VOX等。

接着,在步骤102,利用基于门限判决的静音检测方法找出语音流中的静音段和语音段,将上述语音段按顺序拼接成一个长语音段,并从长语音段中提取音频特征,利用上述提取出来的音频特征,根据贝叶斯信息准则,判断长语音段中相邻数据窗之间的相似度来检测说话人改变点;最后根据上述说话人改变点,把语音流分割成多个语音段,且每个语音段只包含一个说话人。

步骤102中的静音检测方法具体包括以下步骤:

1)将读入的语音流分成T帧,帧长为32毫秒(帧长对应的采样点个数N=0.032×fs,其中fs为语音信号的采样频率),帧移为16毫秒,如果最后一帧语音的采样点个数小于N,则将其舍去;

2)计算第t(1≤t≤T)帧语音信号xt(n)的能量Et

>Et=Σn=1NXt2(n),1tT>

得到语音流的能量矢量E=[E1,E2,...,ET],其中T为总帧数;

3)用固定的能量门限判断静音与语音有很大的局限性,因为各种环境下的语音能量相差很大,但语音与静音之间能量大小的相对关系是不变的,所以定义自适应能量门限TE

TE=min(E)+0.3×[mean(E)-min(E)]

其中,min(E)是各帧能量的最小值,mean(E)是各帧能量的平均值。

4)将每帧语音的能量与能量门限比较,低于能量门限的帧为静音帧,否则为语音帧,将相邻的静音帧按顺序拼接成一个静音段,将相邻的语音帧按顺序拼接成一个语音段。

步骤102中的利用贝叶斯信息准则确定说话人改变点的方法具体包括以下步骤:

1)将经过静音检测得到的各个语音段按顺序拼接成一个长语音段,将长语音段切分成数据窗,窗长为2秒,窗移为0.1秒。对每个数据窗进行分帧,帧长为32毫秒,帧移为16毫秒,从每一帧语音信号中提取MFCCs与Delta-MFCCs特征,MFCCs与Delta-MFCCs的维数M都取12,每个数据窗的特征构成一个特征矩阵F,特征矩阵F的维数d=2M为24;

2)计算两个相邻数据窗(x和y)之间的BIC距离,BIC距离计算公式如下:

>ΔBIC=(nx+ny)ln(|det(cov(Fz))|)-nxln(|det(cov(Fx))|)->

>nyln(|det(cov(Fy))|)-α(d+d(d+1)2)ln(nx+ny)>

其中,z是将数据窗x和y合并之后得到的数据窗,nx和ny分别是数据窗x和y的帧数,Fx、Fy和Fz分别是数据窗x、y和z的特征矩阵,cov(Fx)、cov(Fy)和cov(Fz)分别是特征矩阵Fx、Fy和Fz的协方差矩阵,det(·)表示求矩阵的行列式值,α是惩罚系数且实验取值为2.0;

3)如果BIC距离ΔB/C大于零,则这两个数据窗被视为属于两个不同的说话人(即它们之间存在说话人改变点),否则这两个数据窗被视为属于同一个说话人并将它们合并;

4)不断地滑动数据窗判断两个相邻数据窗之间的BIC距离是否大于零,并保存说话人改变点,直到长语音段的所有相邻数据窗之间的BIC距离都被判断完为止。

上述提取MFCCs与Delta-MFCCs特征的步骤包括:

1)将语音信号分成T帧,帧长为32毫秒(帧长对应的采样点个数N=0.032×fs,其中fs为语音信号的采样频率),帧移为16毫秒,如果最后一帧语音的采样点个数小于N,则将其舍去;

2)对第t(1≤t≤T)帧语音信号xt(n)做离散傅立叶变换(Discrete FourierTransformation,DFT)得到线性频谱Xt(k):

>Xt(k)=Σn=0N-1Xt(n)e-j2πnk/N,(0n,kN-1)>

3)将上述线性频谱Xt(k)通过梅尔频率滤波器组得到梅尔频谱,再进行对数运算得到对数频谱St(m),其中梅尔频率滤波器组为若干个带通滤波器Hm(k),0≤m<M,M为滤波器的个数,每个滤波器具有三角形滤波特性,其中心频率为f(m),当m值较小时相邻f(m)之间的间隔也较小,随着m的增加相邻f(m)的间隔逐渐变大,每个带通滤波器的传递函数为:

>Hm(k)=0(k<f(m-1))k-f(m-1)f(m)-f(m-1)(f(m-1)kf(m))f(m+1)-kf(m+1)-f(m)(f(m)<kf(m+1))0(k>f(m+1))(0m<M)>

其中,f(m)定义如下:

>f(m)=(Nfs)B-1(B(fl)+mB(fh)-B(fl)M+1)>

其中,fl、fh为滤波器的频率应用范围的最低频率和最高频率,B-1为B的逆函数:B-1(b)=700(eb/1125-1),因此由线性谱Xt(k)到对数谱St(m)的函数式为:

>St(m)=ln(Σk=0N-1|Xt(k)|2Hm(k)),(0m<M)>

4)将上述对数频谱St(m)经过离散余弦变换(Discrete Cosine Transformation,DCT)变换到倒谱域,得到第t帧MFCCs,Ct(p):

>Ct(p)=Σm=0M-1St(m)cos((m+0.5)M),(0p<M)>

5)计算第t帧MFCCs的一阶差分(Delta-MFCCs),Ct(p):

>Ct(p)=1Qq=-Qq2Σq=-QQq×Ct(p+q),(0p<M)>

其中,Q为常数,实验时取值为3。

6)对每帧语音信号重复上述步骤2)~5),得到所有T帧语音信号的MFCCs与Delta-MFCCs,将它们按帧的顺序组合成一个MFCC矩阵与Delta-MFCC矩阵,再将MFCC矩阵与Delta-MFCC矩阵合并构成特征矩阵F。

步骤103,从分割出来的各个语音段中提取包括MFCCs与Delta-MFCCs的音频特征,并利用谱聚类算法对各个只包含一个说话人的语音段进行说话人聚类,得到说话人个数及各个说话人的语音。具体步骤如下:

1)对每个语音段进行分帧,帧长为32毫秒,帧移为16毫秒,从每一帧语音信号中提取MFCCs与Delta-MFCCs特征,MFCCs与Delta-MFCCs的维数M都为12,每个语音段的特征构成一个特征矩阵Fj,特征矩阵Fj的维数d=2M为24;

2)根据各个特征矩阵Fj得到所有待聚类语音段的特征矩阵集合F={F1,...,FJ},J为语音段总个数,再根据F构造亲和矩阵(Affinity matrix)A∈RJ×J,A的第(i,j)个元素Aij定义如下:

>Aij=exp(-d2(Fi,Fj)2σiσj)ij0i=j>

其中,d(Fi,Fj)是特征矩阵Fi与Fj之间的欧式距离,σi(或σj)是一个尺度参数,定义为第i(或j)个特征矩阵Fi(或Fj)与其它T-1个特征矩阵之间的欧式距离矢量的方差;

3)构造对角矩阵D,它的第(i,i)个元素等于亲和矩阵A的第i行所有元素之和,再根据矩阵D和A构造归一化的亲和矩阵L=D-1/2AD-1/2

4)计算矩阵L的前Kmax个最大的特征值及其特征值矢量其中vk(1≤k≤Kmax)为列向量且根据相邻特征值之间的差值估计最优类别数(即说话人个数)K:

>K=argmaxi[1,Kmax-1](λi-λi+1)>

根据估计出来的说话人个数K,构造矩阵V=[v1,v2,...,vK]∈RJ×K

5)归一化矩阵V的每一行,得到矩阵Y∈RJ×K,Y的第(j,k)个元素Yjk

>Yjk=Vjk(Σk=1KVjk2),1iJ;>

6)将矩阵Y中的每一行当作空间RK中的一个点,利用K均值算法(K-meansalgorithm)将这J行(即J个点)聚类成K类。

7)将特征矩阵Fj所对应的语音段判为第k类(即第k个说话人),当且仅当矩阵Y的第j行被聚类在第k类中;

8)根据上述聚类结果,得到说话人个数、每个说话人的语音及其时长。

最后,在步骤104,从每个说话人语音中提取能量包络,并通过检测能量包络局部最大值点确定音节个数,估计各个说话人的语速。在汉语普通话中,每个音节基本上都包含韵母,韵母个数即为音节个数,音节个数即为字个数,而且音节中韵母的能量最大,因此通过检测能量最大的韵母个数即可得到字的个数,从而估计出语速。基于上述考虑的语速估计方法的具体步骤如下:

1)计算每个说话人语音信号s(n)的能量E(n):

E(n)=s2(n),1≤n≤Len

其中,Len是语音信号的采样点总个数;

2)利用一个低通滤波器对能量E(n)进行滤波,得到能量包络E(n),该低通滤波器的技术指标如下:基于Equiripple方法的FIR滤波器,采样频率fs为16000赫兹,通带截止频率fpass为50赫兹,阻带截止频率fstop为100赫兹,通带的最大衰减Apass为1dB,阻带的最小衰减Astop为80dB;

3)计算能量包络阈值TE

TE=0.4×mean(E(n))

其中,mean(E(n))是能量包络的平均值;

4)将能量包络中满足下述两个条件的元素作为局部最大值点:

条件1:该元素值大于能量包络阈值TE

条件2:该元素值大于其前、后0.07秒的所有元素值,即大于其前、后0.07×fs个元素值,

上述局部最大值点所在的位置(采样点)即为每个音节的韵母的能量峰值所在的位置,取0.07秒的原因是:音节平均时长的最小值大约是0.14秒,所以E(n)中大于TE且大于其前、后0.07秒的元素值所在的位置就是每个音节的韵母的能量峰值所在的位置;

5)将某个说话人语音能量包络中的局部最大值点的个数作为音节(字)个数,将字的个数除以该说话人语音的时长(秒),得到该说话人的语速(字/秒);

6)重复上述步骤1)~5),直到所有说话人语音的语速都估计完为止。

图2(a)给出了某个说话人的时长为5秒的语音信号的波形图,图2(b)给出了图2(a)语音信号所对应的能量包络波形(实线所示)、能量包络的阈值(虚线所示)及根据上述语速估计步骤得到的能量包络局部最大值点(带圆圈的点划线所示)。从图2可知:该说话人的语音信号时长为5秒,局部最大值点的个数为22,即字数为22,因此,该说话人的语速为4.4字/秒(或264字/分钟)。

以上虽然通过上述实施例对本发明的多说话人语速估计方法进行了详细描述,但并不能因此而理解为对本发明范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明的保护范围应以所附权利要求为准。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号