多人会话混合语音的说话人分割∗

2020-10-09 02:47李艳妮张二华
计算机与数字工程 2020年7期
关键词:特征参数端点识别率

李艳妮 张二华

(南京理工大学计算机科学与工程学院 南京 210094)

1 引言

在多人会话场景下,如会议录音、采访录音、新闻广播等,如何利用说话人信息自动管理海量混合语音是一个重要的科研问题。多人会话意味着多人交替会话,不涉及两人或多人同时说话的情况,而说话人分割是指在多人会话混合语音中找到不同说话人语音的切换点,再将混合语音分割成若干语音段(含无声段),使每段语音只属于同一个说话人[1]。说话人分割是近年来语音信号处理领域的研究热点之一,可以用于自适应语音识别、多说话人识别和说话人跟踪等任务的前端处理[2]。

目前,常用的说话人分割算法分为基于距离的算法和基于模型的算法[3]。基于距离的说话人分割有两种主流的算法,第一种算法是变窗长切换点检测法,其窗长的改变是通过判断贝叶斯信息判决(Bayesian Information Criterion,BIC)距离是否超过固定阈值[4]。第二种算法是固定窗长法,通过固定窗长以及滑动窗口计算BIC 距离曲线,依据曲线的局部极值进行说话人分割[5]。这两种主流的算法都需要经验知识来选择窗长大小和分割阈值。

基于模型的算法则是利用语音库训练得到说话人模型,利用模型匹配说话人来找到不同说话人语音的切换点,从而进行说话人分割[6]。近年来还有许多研究者利用深度神经网络提取混合语音中说话人的码本信息进行说话人分割[7~8],但训练多层深度神经网络结构需要大量的数据、较长的训练时间且计算量较大。

在真实场景的多人交替说话环境中,说话人的语音段可能很短,且目前针对短语音(小于3s)说话人分割的研究甚少,因此没有相应的经验知识来确定窗长大小和分割阈值。在多人会话场景中,说话人所在的搜索范围一般是可以确定的,虽然无法获取较长时间的单人语音,但获取他们短时长的单人语音用来训练模型是可行的。比如,在10 人规模的会议中,真实发音的说话人的身份和数目都是未知的,但参加会议的这10 人的身份是已知的,且他们短时长的单人语音是可获取的。针对短语音条件下的多人会话场景,本文研究了一种基于高斯混合模型(Gaussian Mixture Model,GMM)和多尺度分析的说话人分割算法,在提高短语音说话人识别率的基础上,以混合语音中连续的有声段为线索,基于多尺度分析进行说话人分割,并通过分帧概率优化说话人分割效果。

2 短语音说话人识别

2.1 模型特征参数提取

2.1.1 说话人特征参数提取

梅尔频率倒谱系数(Mel-Frequency Cepstral Coefficients,MFCC)模拟了人耳对语音信号的感知特性,是说话人识别系统中最常用的特征参数。MFCC是在Mel标度的频率域上利用滤波器组提取出来的倒谱系数,但频域特征只考虑了语音帧内的信息,而语音信号本身具有时变性,说话人特征几乎不会停留在某一个固定值上,将会在一定范围内波动。这一波动规律作为一种动态特征也反映了该说话人的个性特征。

因此,本文选取MFCC 及它的一阶差分特征MFCC_D 作为模型训练时所需的特征参数。其中,一阶差分特征MFCC_D计算公式如下:

其中,ct表示第t 帧的MFCC,dt表示第t 帧的一阶差分特征MFCC_D,T 表示MFCC 的总帧数,N 为一阶导数的时间差,本文取2,1≤n≤N 。若将式(1)的结果再代入式(1)就可以得到二阶差分参数[9]。

2.1.2 归一化

对特征参数进行归一化可以使数据的动态范围接近一致,同时保持它们相对大小关系不变。此外,归一化可以提高模型的收敛速度和精度。本文中,提取特征参数后,对它们进行min-max标准化,使其映射到[0,1]区间内,其转换函数如式(2)所示:

其中,xdt表示第d 维第t帧的特征参数表示其归一化后的值,mind表示所有训练语音帧中第d维特征参数的最小值,maxd表示所有训练语音帧中第d维的最大值。

2.2 端点检测

多人交替说话时,不同说话人的语音之间一般有停顿,因此一段连续的语音一般属于同一个说话人。端点检测可以检测出语音信号中有声段的起止位置,避免说话人分割时将一段连续的有声段切分开,再通过“分段”将原始语音分成交替的有声段和无声段,避免低鲁棒性的无声段影响说话人识别率。

语音信号的两个重要时域特征为:短时能量和短时过零率。传统的双门限端点检测法依据这两个特征,通过三个阈值:高能量阈值EH、低能量阈值EL和短时平均过零率阈值ZH进行有声段判决。在实际应用中发现,在辅音段与元音段之间可能存在辅音逐渐减弱的现象,即辅音段开始较强,然后变弱,再过渡到元音段。对这种复杂的情况,传统的双门限端点检测方法的性能受到明显影响。2017 年王满洪等[10]提出了一种适用于低信噪比环境的多阈值端点检测。

2.2.1 多阈值端点检测

相较于传统的双门限端点检测法,多阈值端点检测增加了辅音能量阈值EC和疑似辅音阈值ES,其有声段判断方法如表1所示。

表1 多阈值端点检测有声段判断方法

其中,Z 为短时过零率;ZH为短时平均过零率阈值;E 为短时能量;EH为高能量阈值;EL为低能量阈值;EC为辅音能量阈值;ES为疑似辅音阈值。

若辅音逐渐减弱,传统的双门限端点检测法会把这样的辅音段与后面的元音段检测为两段。然而,在汉语里,辅音只有和元音在一起才能组成一个完整的音节,即辅音不能单独存在,多阈值端点检测会将这样的辅音段和后面紧接着的元音段合并成一段。

2.2.2 分格

当多人交替说话时,一个人说话的最短语音为一个字。据统计,汉语的正常语速范围为200~300字/分钟[11],每个字平均0.2s~0.3s,所以本文最小可识别的语音时长选取0.25s,在语速较快时,该最小时长能包含一个汉字的语音段,当语速较慢时,由多个最小时长组成的较大时长也能包含一个汉字的语音段。

本文中说话人识别和多尺度分析都是以连续有声段为线索,段内分格,同时为每格赋予段标记。将属于同一连续有声段的语音格赋予同一个段标记。连续有声段的中间部分为稳定的语音段,而左右端点处通常为不稳定的过渡段,其语音特征变化较快,因此需要加强左右端点处语音片段的长度来提高识别的鲁棒性。

分格时,最小可识别语音时长定为0.25s。假设某连续有声段时长为xs,则该段对应的语音格数y为

对中间的y-2 格,每格时长为0.25s,起止端两个语音格的时长b如式(4)所示:

连续语音段内分格时,若某有声段时长不够2格,则只分为1格,如表2中第0格所示,时长0.46s;若某段时长不够3格,则只分为2格,如表2中第1~2 格所示,总时长为0.74s,每格0.37s;若某段时长不够4格,则只分为3格,如表2中第3~5格所示,总时长0.93s,中间格为0.25s,起止端两格为0.34s。

表2 分格实例

2.3 说话人识别的GMM方法

在提取特征参数之后,说话人识别还需应用GMM 模型进行训练和匹配判决。一个高斯混合模型就是多个高维概率密度函数的加权和,其阶数是高维概率密度函数的个数,其维数是特征参数的个数。GMM 模型训练就是对训练样本进行参数估计,常采用最大似然估计(Expectation Maximization,EM)来求解。GMM匹配判决的过程就是求说话人集合中每个说话人的特征参数在已训练的模型中的后验概率,其中最大后验概率对应的说话人就是识别结果[12]。

3 说话人分割

3.1 多尺度扫描

分割前,某说话人发言的时长与起止时间点都未知,可用多尺度分析的方法对混合语音的时长和位置分别进行扫描,其中时长对应尺度,位置对应平移量。时窗内只包含一个说话人的信号时,该时窗最匹配的说话人的后验概率最大,时窗中若掺杂了其他说话人的信号,则最匹配的说话人的后验概率会下降。

3.1.1 时长划分

进行多尺度扫描时,扫描的时长对应语音格的时长,对不同尺度层,语音格的时长是不同的,给每个尺度层的语音格设置一个标准时长,尺度从小到大,语音格标准时长依次为0.25s、0.5s、0.75s……,分别称为第0 尺度层、第1 尺度层、第2 尺度层……,如第0 尺度层的每1 格对应的标准时长为0.25s。

3.1.2 平移量划分

进行多尺度扫描时,在每一尺度层,平移量都为第0尺度层的1格,相邻两格之间有重合,重合量与尺度有关,尺度越大,重合量越多。

第0 尺度层,相邻两格之间无重合。第1 尺度层是第0 尺度层的每2 格合并而成,相邻两格间重合量为第0 尺度层的1 格。第2 尺度层是第0 尺度层的每3 格合并而成,相邻两格间重合量为第0 尺度层的2格。以此类推……

前3个尺度层对第0~2格进行多尺度扫描的示意图如图1所示。

图1 多尺度扫描示意图

其中,Sij(i=0,1,2,…,h-1,j=0,1,2,…,m-1;h 为尺度层总数,m 为该尺度层的语音格总数)表示第i 尺度层的第j 格,如S10表示第1 尺度层第0格。从图1 可以看出,同一尺度层相邻的格子与它们相邻尺度层的格子可以组成一个金字塔,如S00、S01和S10可以组成一个两层金字塔,而S00、S01、S02、S10、S11和S20可以组成一个三层金字塔。

3.2 段内分裂与段间合并

多尺度分析中有两个重要判断准则:段内分裂和段间合并。在多人会话时,某些说话人切换点可能不明显,比如两个或多个说话人无时间间隔连续交替发音[13]。这种情况下,端点检测时会将它们作为一个连续的语音段,该段包含了两个或多个说话人,而段内分裂可以通过多尺度分析将该段分裂成两个或多个说话人,在第0 尺度层标记为不同的说话人。段间合并是指多尺度分析之后,若相邻两个或多个有声段的说话人标记相同,则将它们合并。

3.3 多尺度分析

多尺度分析是从小到大的识别,以及从大到小的回溯。从小尺度逐层向上合并成大尺度,再从大尺度逐层向下纠正小尺度的误判。多尺度分析时,根据有声段在第0 尺度层对应的语音格数,运用不同的规则:一是针对有声段对应多个语音格的高层规则;另一个是针对有声段只对应一个语音格的金字塔规则。

3.3.1 高层规则

已有研究表明,训练时长一定时,测试时长越长,识别率越高,所以对于在第0 尺度层占有多格的有声段而言,其最大尺度层的识别结果最为可靠,因为最大尺度层包含了此有声段的总长。

高层规则是指:以有声段对应的最大尺度层的识别结果为主,再用各次级尺度层的识别结果进行进一步确认,回溯的同时进行纠错。但是,高层规则向下回溯时,若某段被赋予多个说话人标记,则需要进行段内分裂。

3.3.2 金字塔规则

通常说话人连续发音时,句子或词语之间会有短暂的停顿,此时端点检测可能把这种发音分成几段,某些段时长可能不足0.5s,在第0尺度层只占用1格,称为孤立格,对应的最大尺度层就是第0尺度层,所以需要利用有别于高层规则的金字塔规则来进行综合分析。

金字塔规则为:通过比较孤立格的时长及和它有关语音格的说话人标记,来判断该孤立格应该保留原始说话人标记还是应该被调整、纠正。若孤立格时长小于0.167s,即小于最小可识别语音时长的2/3时,该格不能被单独分割,需要被纠正。若孤立格不在混合语音的起始格和结尾格,如图1 中的S01,与该格有关的语音格为它左右两侧的两个语音格S00和S02,以及第1 尺度层包含它的两个语音格S10和S11。用金字塔规则分析孤立格S01的过程如图2所示。

图2 金字塔规则

其中,“=”表示说话人标记相同;“≠”表示说话人标记不同;left为S01与S00语音格之间无声段的时长;right为S01与S02语音格之间无声段的时长。

3.4 分割

多尺度分析后,若相邻有声段的说话人标记相同,则进行段间合并,从而得到说话人连续发言的起止点;若相邻有声段的说话人标记不同,则将相邻有声段之间的无声段均分后分配给这两个说话人,均分点就是该混合语音段的说话人切换点。最后根据所有的说话人切换点,将混合语音分割成若干语音段,每段语音只包含一个说话人。

3.5 分帧概率优化分割效果

若两个说话人的发音间隔太短,会被端点检测作为一个连续的有声段。段内分裂可以将该段以语音格为单位分裂为两个说话人,每格只标记为一个说话人,但若两个说话人语音的切换点在某格内部,单靠多尺度分析的段内分裂无法找到准确的切换点。因为一个语音格包含多个语音帧,所以本文用分帧概率来优化分割效果,从而提高说话人分割正确率。分帧概率是用语音信号中每帧的特征参数,进行模型匹配得到的后验概率,其最大后验概率对应的是该帧最可能的说话人。

假设经过段内分裂后,段内编号为a、a+1、a+2和a+3的语音格标记的说话人编号依次为P1、P1、P2和P2,那么在该混合语音段,P1先于P2发言,且说话人切换点极大概率在a+1 和a+2 两格所在的混合语音段内,但不排除说话人切换点在a 或a+3 语音格内的可能性。对这四个语音格包含的所有语音帧分别求说话人P1和P2的分帧概率,比较后可以发现,从某帧f开始,P2的分帧概率始终高于P1的分帧概率,由此可知,该帧f 的起点便是P1和P2之间的说话人切换点。

3.6 端点检测与多尺度分析综合使用

在多人会话混合语音的说话人分割中,端点检测和多尺度分析必须综合使用,缺一不可。根据端点检测的结果,可将某有声段单独标记为说话人Pm,而标记说话人可能有误,所以该段与相邻的、标记为说话人Pn的有声段是否属于同一说话人,需要用多尺度分析来判断。当某些说话人切换点不明显时,端点检测时会将它们分为一段,此时该段包含多个说话人,同样需要用多尺度分析来区分这些说话人。而假设只进行多尺度分析,某些小尺度层的识别错误就难以纠正,但是可以根据端点检测分格时赋予的段标记,找到该有声段对应的最大尺度层,以最大尺度层的识别结果作为参考来纠正。

4 实验

4.1 实验语音库

本文实验数据来自南京理工大学NJUST603语音库,该库含有213 个女生和210 个男生,共423 人的语音。每人有三段数字录音(N1,N2,N3),四段文本录音(T1,T2,T3,T4),且同时采用了麦克风、固定电话和手机信道分别录音。

本文中,语音采样频率为16000Hz,采样精度为16 位,帧长为512 个采样点(32ms),帧移为256个采样点(16ms)。

4.2 短语音说话人识别

4.2.1 实验数据

在NJUST603 语音库中,随机挑选50 个男生和50 个女生做短语音说话人识别实验。因为多人会话场景使用麦克风较多,所以选择麦克风信道。首先用这100 人的T4文本语音训练模型,然后用他们的T3文本语音进行测试。按照NIST 的标准,若训练语音和测试语音的时长都不大于10s,则为短语音说话人识别[14]。所以识别实验的训练时长设为10s和3s,测试时长设为5s、3s、2s、1s和0.5s。

4.2.2 评价标准

短语音说话人识别评价指标为识别率,计算公式为

4.2.3 说话人识别实验结果

本文的特征参数为24 维MFCC 及24 维一阶差分特征参数MFCC_D,共48 维,阶数为32。共做了2 组短语音说话人识别对比实验:归一化对识别率的影响;不同端点检测方法对说话人识别率的影响。

表3 训练时长为10s时归一化对识别率的影响(%)

表4 训练时长为3s时归一化对识别率的影响(%)

从表3 和表4 可看出,归一化可以提高说话人识别率,尤其对短训练时长和短测试时长的识别率有明显提高,所以在后续的端点检测对比实验中,在提取特征参数时对其进行归一化。

表5 训练时长为10s时端点检测方法对说话人识别率的影响(%)

表6 训练时长为3s时端点检测方法对说话人识别率的影响(%)

从表5 和表6 的实验结果可以看出,对于麦克风信道的短语音说话人识别,多阈值端点检测后说话人识别率明显高于传统双门限端点检测。

4.3 多人会话混合语音的说话人分割

4.3.1 实验数据

因为NJUST603 语音库只有单人语音,为了模拟真实的多人对话场景,人工拼接成待分割的混合语音,又因为真实对话在说话人转换时有一段停顿时间,所以拼接的语音段之间包含无声段。

在语音库中随机选取40 个男生和40 个女生,分成两组10人说话人库A 和B,说话人标记范围为1~10,和两组30 人说话人库C 和D,说话人标记范围为1~30。四组说话人库内的说话人无交叉、重叠,且男女比例均衡。每段混合语音的总时长都为60s,包含35到40个单人语音段,含4到8个不同的说话人,每段语音时长满足0.5s≤time≤3s。

训练语音为说话人库内单人的T4语音文件,测试语音为T3语音文件。训练时长为10s,特征参数为24 维MFCC 及24 维一阶差分特征参数MFCC_D,阶数为32,在提取特征参数时对其进行归一化,并对输入信号进行多阈值端点检测。

4.3.2 评价指标

说话人分割的评价指标为说话人正确率(Speaker Accuracy Rate,SPKA),即正确分割的语音时长占混合语音总时长的比值,计算公式为

其中,S 是实际结果中说话人切换点和测试结果中说话人切换点对整个混合语音进行切分获得的总语音段个数,a(v)表示语音段v 是否分割正确(若分割正确,a(v)=1,否则a(v)=0),t(v)是语音段v的时长[15]。

4.3.3 说话人分割实验结果

表7 10人说话人库的SPKA(%)

表8 30人说话人库的SPKA(%)

从表7 和表8 可以看出,10s 训练时,基于多尺度分析的说话人分割的SPKA 可以达到97%以上,且与混合语音中包含的说话人数无关,但与说话人库的规模有关,规模越大,SPKA越低。

部分说话人分割图如图3和图4所示。

图3 10人语音库中某混合语音的分割图

其中,竖线所在的时间点对应说话人切换点;竖线两侧的标记对应说话人编号。从图3和图4可看出,本文的说话人分割算法可以有效地分割短语音条件下的混合语音,并且从图3 可知,即使多个说话人无时间间隔连续交替发音,本文算法也可以较正确地找到他们之间的说话人切换点。

图4 30人语音库中某混合语音的分割图

5 结语

在基于GMM 的短语音说话人识别中,基于MFCC 和MFCC_D 的特征参数组合,将特征参数归一化有利于提高说话人识别率,而且多阈值端点检测比传统的双门限的识别率更高。

本文在提高短语音说话人识别率的基础上,综合使用端点检测和多尺度分析来实现说话人分割,并引入分帧概率来解决段内分裂时说话人切换点不精准的问题。实验结果表明,本文提出的基于高斯混合模型和多尺度分析的说话人分割算法可以有效并较正确地分割短语音条件下的多人会话混合语音,而且,说话人正确率SPKA 与混合语音中包含的说话人数无关,但与说话人库的规模有关,规模越大,SPKA越低。

猜你喜欢
特征参数端点识别率
基于视频图像序列的船用雷达目标检测和目标特征参数提取
例谈求解“端点取等”不等式恒成立问题的方法
不等式求解过程中端点的确定
电筒的灯光是线段
档案数字化过程中OCR技术的应用分析
基于PCA与MLP感知器的人脸图像辨识技术
科技文档中数学表达式的结构分析与识别
说话人识别特征参数MFCC的提取与分析
人工智能现状和发展
民用飞机预测与健康管理技术与系统特征参数研究