计算机应用   2016, Vol. 36 Issue (11): 3222-3228  DOI: 10.11772/j.issn.1001-9081.2016.11.3222
0

引用本文 

张扬, 赵晓群, 王缔罡. 基于时频二维能量特征的汉语音节切分方法[J]. 计算机应用, 2016, 36(11): 3222-3228.DOI: 10.11772/j.issn.1001-9081.2016.11.3222.
ZHANG Yang, ZHAO Xiaoqun, WANG Digang. Chinese speech segmentation into syllables based on energies in different times and frequencies[J]. Journal of Computer Applications, 2016, 36(11): 3222-3228. DOI: 10.11772/j.issn.1001-9081.2016.11.3222.

通信作者

赵晓群(1962-), 男, 黑龙江依安人, 教授, 博士, 主要研究方向:语音信号处理、编码理论 zhao_xiaoqun@tongji.edu.cn

作者简介

张扬(1989-), 男, 山东滨州人, 博士研究生, 主要研究方向:语音信号处理;
王缔罡(1988-), 男, 上海人, 博士研究生, 主要研究方向:编码理论

文章历史

收稿日期:2016-05-27
修回日期:2016-06-20
基于时频二维能量特征的汉语音节切分方法
张扬, 赵晓群, 王缔罡    
同济大学 电子与信息工程学院, 上海 201804
摘要: 较准确的语音切分方法可以极大提高语料标注等工作的效率,有助于语音识别等应用中语音与模型的对齐。利用汉语语音在时频二维的能量特征设计了一种新的汉语语音音节切分方法。用传统方法判断静音帧,用相同时间不同频率的二维能量判断清音帧,用不同时间特定频段的0-1二维能量判断浊音帧及有话帧,综合4种判断结果给出音节切分位置。实验结果表明,该方法切分准确度优于基于归并的音节切分自动机(MBSDA)和高斯拟合法,其音节切分误差为0.0297 s,音节切分偏差率为7.93%。
关键词: 音节切分    时频二维    短时能量    切分偏差率    
Chinese speech segmentation into syllables based on energies in different times and frequencies
ZHANG Yang, ZHAO Xiaoqun, WANG Digang     
College of electronics and information engineering, Tongji University, Shanghai 201804, China
Background: ZHANG Yang, born in 1989, Ph. D. candidate. His research interests include processing of speech signals.
ZHAO Xiaoqun, born in 1962, Ph. D., professor. His research interests include processing of speech signals, coding theory.
WANG Digang, born in 1988, Ph. D. candidate. His research interests include coding theory.
Abstract: Precise speech segmentation methods, which can also greatly improve the efficiency of corpus annotation works, are helpful in comparing voice with voice models in speech recognition. A new Chinese speech segmentation into syllables based on the feature of time-frequency-dimensional energy was proposed:firstly, silence frames were searched in traditional way; secondly, unvoiced frames were sought using the difference of energies in different frequencies; thirdly, the voiced frames and speech frames were looked for with the help of 0-1 energies in special frequency ranges; finally, syllable positions were given depending on the judgements above. The experimental results show that the proposed method whose syllable error is 0.0297 s and syllable deviation is 7.93% is superior to Merging-Based Syllable Detection Automaton (MBSDA) and method of Gauss fitting.
Key words: speech segmentation into syllables    time-frequency-dimensional    short-time energy    segmentation deviation rate    
0 引言

在信息科学领域,对语音切分的定义有:对语音信号突变位置的检测[1];估计有话和无话部分的位置及时长[2]等。目前,语音切分方法基本可以分为基于切分单元对齐的方法、基于切分单元边界的方法以及同时利用切分单元特性及边界特性的方法。其中基于切分单元对齐的方法多利用隐马尔可夫模型(Hidden Markov Model,HMM)[3-5];基于切分单元边界的方法常使用小波变换[6]、神经网络[7]或者仿生特点检验[8-9]等技术;同时利用切分单元特性及边界特性,则有助于方法性能的提升[10]。语音切分的对象可以分为自然语音和合成语音等,而语音切分单元可以分为音节和音素等。由于英语等印欧语系语言的特点,国外对音节切分的研究较少,主要研究集中在音素切分[3-4, 6-7],相关研究的机构有剑桥大学、哥伦比亚大学及韩国国立大学等。在国内,从事相关研究的机构有中国科学院研究生院、北京邮电大学及哈尔滨工业大学等,研究方向有语音音素切分[11]、音节切分[12-13]

近些年在汉语连续语音音节切分方面的成果较少,常用的方法是1999年提出并在2006年进一步完善的归并法(全称基于归并的音节切分自动机(Merging-Based Syllable Detection Automaton,MBSDA))[12-13],最新方法有基于音节时间长度高斯拟合的汉语音节切分方法(后面简称高斯拟合法)[14]。然而这些音节切分方法主要关注语音参数的一维变化特征,或者将众多参数的一维变化特征累积进行判断,如归并法就利用了过零率、基因周期、短时能量等参数随时间变化的特征进行联合判决。文献[6]利用小波变换将语音时频二维特征映射到一维当中,文献[8]在语谱图中寻找发音特征边界进行切分,这些方法利用了语音二维变化特征进行音素切分并卓有成效。本文利用汉语语音在时频二维的能量特征,设计了一种新的汉语语音音节切分方法。实验结果表明,该方法切分准确度优于归并法和高斯拟合法,其音节切分误差为0.029 7 s,音节切分偏差率为7.93%。

1 二维能量概念的引入

在传统的汉语音节切分工作中,粘连语音是切分的难点。图 1(a)为某粘连语音的波形图。依照此波形图对这段语音进行人工音节切分十分困难。然而,结合语音的语谱图对粘连语音进行人工音节切分十分容易。图 1(b)为该段语音的语谱图,图中越明亮的方格表明在此处能量越大,在图中可以轻易找到音节切分的大概位置(用白色竖线标出)。同理,利用语音能量在时频两个维度的特征可以更好地进行音节切分。若时间精度为Δt,频率精度为Δf,定义二维能量eij为在(i-1)·Δti·Δt时间段内,(j-1)·Δfj·Δf频带间的能量,其中ij为正整数。

图 1 语音信号的波形图、语谱图及0-1语谱图

引入0-1语谱图的概念,即以1 000 Hz到4 000 Hz频带内的二维能量的均值为门限,原语谱图中能量高于此门限则定义能量为1,低于此门限则定义能量为0,重新定义的能量称为0-1二维能量,以Eij表示。在语音时间长度为t的情况下:

$ {E_{th}} = \frac{{\sum\limits_{i = 1}^{t/\Delta t} {\sum\limits_{j = 1000/\Delta f + 1}^{4000/\Delta f} {{e_{ij}}} } }}{{t/\Delta t \cdot 3000/\Delta f}} $ (1)
$ {E_{ij}} = \left\{ \begin{array}{l} \begin{array}{*{20}{c}} {1, }&{{e_{ij}} \ge Eth} \end{array}\\ \begin{array}{*{20}{c}} {0, }&{{e_{ij}} < Eth} \end{array} \end{array} \right. $ (2)

其中Eth为能量判别门限,若时间长度t不能整除时间精度Δt,作除法后取整,同理,Δf作除数时,结果也要取整。称以上运算为将语音进行时频二值化。图 1(c)为对应图 1(a)语音信号波形和图 1(b)语谱图的0-1语谱图,图中黑色部分表示能量为1,白色部分表示能量为0。此语音中第一和第四个音节为清音开头,由于第二个和第三个音节的声母发生了浊化,第二与第三个音节为浊音开头。在图 1(c)中可以清楚看到浊音开头音节的边界。根据汉语语音二维能量及0-1二维能量的特性,设计了基于时频二维能量特征的汉语语音音节切分方法(简称二维能量特征法(Method based on Energies in different Times and Frequencies,METF))。

2 基于时频二维能量特征的音节切分算法 2.1 时频精度

首先,对输入语音进行分帧及离散傅里叶变换。分帧过程需要考虑到时间与频率精确度的取舍问题。相同语音采样率fs下,帧长wlen、帧移inc、频谱宽度f、频率精度Δf及时间精度Δt满足:

$ \left\{ \begin{array}{l} f = fs/2\\ \Delta f = f/(wlen/2) = 2f/wlen\\ \Delta t = inc/fs \end{array} \right. $ (3)

传统音节切分及端点检测算法中,考虑到语音随时间变化的连续特性,一般设置帧移小于帧长,即inc < wlen;本文算法以检测语音突变为基础,继续保持语音随时间变化的连续特性不利于突变的检验,故令inc=wlen,根据式(3)得到时间精度与频率精度的关系为:

$ \Delta t = inc/fs = \frac{{2f}}{{\Delta f}} \cdot \frac{1}{{fs}} = 1/\Delta f $ (4)

可见,在利用本文算法对语音进行音节切分过程中,时间和频率不能同时拥有很高精确度。本文算法实现过程中,实验语音采样率为16 000 Hz,选取帧长和帧移为200个采样点,记作wlen=inc=200,则时间精度Δt=inc/fs=200/16 000=0.012 5 s,频率精度Δf=1/Δt=1/0.012 5=80 Hz。对人工标注的实验语音(音节总数:460)音节时间长度进行统计,其符合均值为0.190 9 s,方差为0.056 6的高斯分布,认为0.012 5 s的时间精度足以对语音时间特征进行描述。同时频率精度也达到算法要求,即可以准确体现清音、浊音及静音在频域上的特征。

2.2 静音帧及清音帧判别

静音帧的判别参照传统双门限法中的静音帧判别方法。传统双门限法人工选取有话帧之前的所有静音帧,找到能量最大的静音帧,以此帧的能量数值乘以一个大于1的系数作为静音帧判别门限。为实现计算机自动选取有话帧之前的静音帧,在传统方法上作如下改变:在分帧,求取短时平均能量的同时求取每帧的短时过零率zcriieij中的i是同一概念,每个时间精度Δt是时域采样分帧后一帧的时间长度,i表示第i个Δt,也表示第i帧,Δt与帧的关系在式(3)中有所体现;找到帧过零率突变的位置,当第m次发生|zcri+1-zcri|>β时,令changem=i。其中β为突变门限,change记录突变帧位置。在对接近纯净的语音段进行处理时,设置β=1就可以得到比较好的效果;可以认为change1之前的帧都是静音帧,由于判别突变的位置changem可能已经到达有话帧位置,当change1>6时,认为change1-3之前的帧都是静音帧则更为合理。找到选取的静音帧的短时能量最大值乘以一个系数kamp作为静音帧判别门限ampth

$ am{p_{{\rm{th}}}} = {k_{amp}} \cdot \max \left( {am{p_1}, am{p_2}, \cdots, am{p_{chang{e_1}-3}}} \right) $ (5)

其中:ampi表示第i帧的短时能量,max表示求最大值。这种选取静音帧判别门限的方法不适用于复杂噪声环境下语音的处理。

清浊音的判别方法有多种,包括基于谐波模型的方法[15]、基于残差模型的方法[16]以及基于Fisher准则的方法[17]等。这些方法依靠对似然度的比较完成清浊音或者清浊静音的判别,可以看作模式识别问题。本文算法不需要完全区分清浊音,只看重清浊音时频能量特征,即在语谱图和0-1语谱图的形状,对于产生浊化的清音按照浊音情况进行处理即可。本文中的清音帧指清音特点明显的语音帧,浊音帧指本就是浊音的语音帧或发生了清音浊化的语音帧。若第i帧满足

$ \left\{ \begin{array}{l} \sum\limits_{j = 26}^{100} {{e_{ij}}} > \sum\limits_{i = 1}^{25} {{e_{ij}}} \\ am{p_i} > am{p_{{\rm{th}}}} \end{array} \right. $ (6)

就认为第i帧为清音帧。j从26到100累加eij体现的是频带2 000~8 000 Hz的能量,从1到25累加eij体现的是频带0~2 000 Hz的能量,第i帧体现的是(i-1)·Δti·Δt时间段内信号经过离散傅里叶变换后显示的频域特性。以oni=0表示判断第i帧是清音帧,oni=1表示判断第i帧不是清音帧。清音判别不使用Eij因为语音二值化使用的是浊音能量密集的频带(1 000~4 000 Hz),在式(1)中有所体现,而浊音能量较清音能量要高很多,Eij会将多数清音能量归零,不适合进行清音判别。

2.3 浊音及有话帧判别

浊音之间的明显边界主要体现在1 000~4 000 Hz频带内,因为频率精度Δf=80Hz,浊音判别在频带960~4 000 Hz频带内实现,对语音进行时频0-1化,若语音时长为t:

$ \left\{ \begin{array}{l} ar{r_i} = \sum\limits_{j = 13}^{50} {{E_{ij}}} \\ ar{r_{{\rm{th}}}} = \frac{{\sum\limits_{i = 1}^{t/\Delta t} {ar{r_i}} }}{{t/\Delta t}} \end{array} \right. $ (7)

其中arri表示第i帧在960~4 000 Hz频带内的0-1二维能量总和,arrth为浊音判别门限,以ari=0表示判断第i帧是浊音,ari=1表示判断第i帧不是浊音帧:

$ a{r_i} = \left\{ \begin{array}{l} \begin{array}{*{20}{c}} {0, }&{ar{r_i} \ge ar{r_{th}}} \end{array}\\ \begin{array}{*{20}{c}} {1, }&{ar{r_i} < ar{r_{th}}} \end{array} \end{array} \right. $ (8)

以上对清音及浊音的判别,其作用是判断某帧是否极有可能为清音帧或浊音帧,进而帮助语音切分。然而语音能量主要集中在低频带,在较高频带确定大概切分位置后,需要根据低频带信息将切分位置进行重新确定。低频信息的作用主要是区分某帧是否在音节内,即是否有话。有话则称此帧为有话帧,否则称此帧为无话帧。若语音时长为t

$ \left\{ \begin{array}{l} bas{e_i} = \sum\limits_{j = 1}^{12} {{E_{ij}}} \\ ba{s_{{\rm{th}}}} = \frac{{\sum\limits_{i = 1}^{t/\Delta t} {bas{e_i}} }}{{t/\Delta t}} \end{array} \right. $ (9)

其中:basei表示第i帧在0~960 Hz频带内的0-1二维能量总和,basth为有话判别门限,以bai=0表示判断第i帧是有话帧,bai=1表示判断第i帧是无话帧:

$ b{a_i} = \left\{ \begin{array}{l} \begin{array}{*{20}{c}} {0, }&{bas{e_i} \ge ba{s_{{\rm{th}}}}} \end{array}\\ \begin{array}{*{20}{c}} {1, }&{bas{e_i} < ba{s_{{\rm{th}}}}} \end{array} \end{array} \right. $ (10)
2.4 含清音的音节切分

以上对静音帧、清音帧、浊音帧及有话帧的判别并非准确判别,而是作为参考参与到音节切分当中。音节切分的主要目的是找到语音音节在时间维度上的边界。在音节切分过程中,先对含清音(不包括产生浊化的清音)的音节进行切分:

从第1帧到第tt-2帧搜索,若第i帧满足:

$ \left\{ \begin{array}{l} o{n_i} = 0\\ o{n_{i + 1}} = 0\\ o{n_{i + 2}} = 0 \end{array} \right. $ (11)

则搜索整数Δi使得

$ \left\{ \begin{array}{l} 2 < \Delta i < \min (40, \Delta t/t)\\ a{r_{i + \Delta i}} = 0\\ a{r_{i + \Delta i + 1}} = 1\\ b{a_{i + \Delta i}} = 0 \end{array} \right. $ (12)

其中min表示选择最小值,作用是防止i+40大于语音总帧数。在对人工标注的语实验音进行统计时,其最长语音长度为30帧,故认为40帧的后向搜索可以找到大多数音节的结尾。

如果没有搜索到满足式(12)的Δi,则搜索整数Δi使得

$ \left\{ \begin{array}{l} 2 < \Delta i < \min (40, \Delta t/t)\\ am{p_{i + \Delta i}} = 0 \end{array} \right. $ (13)

式(13)的情况并不多见,主要目的是切分清音后浊音能量极不明显并迅速进入静音的音节。

若没有所搜到满足式(12)或式(13)的Δi,则令Δi=6。对人工标注的实验语音进行统计时,其最短语音长度为8帧,故认为Δi=6不会令切分音节结束时间大于后一音节实际起始时间。

搜索到Δi的取值后,认为第i帧对应时间为音节起始时间,第ii帧对应时间为音节结束时间。需要修改语音帧的清音判别,防止被二次搜索。对所有的i≤l≤ii,修改arl=1。

将搜索结果存储,若切分的第n个音节的起始帧和结束帧为第i帧到第ii帧,记作:

$ \left\{ \begin{array}{l} seg_{n1}^1 = i\\ seg_{n2}^1 = i + \Delta i \end{array} \right. $ (14)

总的节分结果记作起始位置seg11和结束位置seg21

2.5 清音浊化或只含浊音的音节切分

对含清音(不包括产生浊化的清音)的音节进行切分后,切分清音浊化或只含浊音的音节:

为不重复切分,已经切分出的含清音的音节对应的帧不应再参与判别,即对所有n的可能取值,若第i帧满足segn11isegn21,则令ari=1。

从第1帧到第tt-3帧搜索,若第i帧满足

$ \left\{ \begin{array}{l} a{r_i} = 1\\ a{r_{i + 1}} = 0\\ a{r_{i + 2}} = 0\\ a{r_{i + 3}} = 0 \end{array} \right. $ (15)

则搜索整数Δi使得

$ \left\{ \begin{array}{l} 3 < \Delta i < \min (40, \Delta t/t)\\ a{r_{i + \Delta i}} = 0\\ a{r_{i + \Delta i + 1}} = 1\\ a{r_{i + \Delta i + 2}} = 1 \end{array} \right. $ (16)

满足式(15)及式(16),认为第i帧对应时间为音节起始时间,第ii帧对应时间为音节结束时间。清音浊化或只含浊音的音节起始结束时间判断相对含清音的音节简单,因为这种音节的0-1二维能量在时频两维上呈现出较为固定的特征。将结果存储,若切分的第h个音节的起始帧和结束帧为第i+1帧到第ii帧,记作

$ \left\{ \begin{array}{l} seg_{h1}^2 = i + 1\\ seg_{h2}^2 = i + \Delta i \end{array} \right. $ (17)

总的切分结果记作起始位置seg12和结束位置seg22

2.6 切分位置的调整

在2.4节和2.5节中,已经确定了音节切分的起始和结束位置,然而其位置的确定主要依靠较高频带的能量完成的,需要根据较低频带能量的特点对切分位置进行调整。首先需要对两种音节的切分起始位置seg11seg12进行组合并按照从小到大的顺序排序,同时对两种音节的切分结束位置seg21seg22进行组合并按照与切分起始位置相同的顺序排列。排序后切分结果记为起始位置seg1和结束位置seg2seg1中第k个音节的起始帧数表示为segk1seg2中第k个音节的结束帧数表示为segk2。若第k个音节(不包括最后一个音节)满足

$ \sum\limits_{i = se{g_{k2}} + 1}^{se{g_{(k + 1)1}}-1} {b{a_i}} = 0 $ (18)

则调整

$ se{g_{k2}} = se{g_{(k + 1)1}}-1 $ (19)

这种情况表示第k个音节与第k+1个音节粘连,以k+1个音节的开头作为第k个音节的结尾。如果第k个音节不满足式(17),则令

$ test = \{ 0,b{a_{se{g_{k2}} + 1}},b{a_{se{g_{k2}} + 2}}, \cdots ,b{a_{se{g_{(k + 1)1}} - 1}},0\} $ (20)

假设test共t个元素,以testi表示test中的第i个元素,寻找ab满足

$ \left\{ \begin{array}{l} tes{t_a} = 0\\ tes{t_{a + 1}} = 1\\ tes{t_b} = 1\\ tes{t_{b + 1}} = 0 \end{array} \right. $ (21)

$ \left\{ \begin{array}{l} {s_1} = se{g_{k2}}\\ {s_2} = se{g_{(k + 1)1}} \end{array} \right. $ (22)

调整

$ \left\{ \begin{array}{l} se{g_{k2}} = {s_1} + a-1\\ se{g_{(k + 1)1}} = {s_2}-t + b + 1 \end{array} \right. $ (23)

以上调整不包括第一个音节前面有话帧及最后一个音节后面的有话帧。对于第一个音节之前的有话帧,若满足

$ \sum\limits_{i = 1}^{se{g_{11}}-1} {b{a_i}} = 0 $ (24)

则调整seg11=1;否则,令:

$ test = \{ b{a_1}, b{a_2}, \cdots, b{a_{se{g_{11}}-1}}, 0\} $ (25)

寻找b满足

$ \left\{ \begin{array}{l} tes{t_b} = 1\\ tes{t_{b + 1}} = 0 \end{array} \right. $ (26)

s2=seg11,假设testt个元素,调整seg11=s2-t+b+1。对于最后一个音节(假设最后一个音节为第kl个音节)之后的有话帧(假设总帧数为la),若满足:

$ \sum\limits_{i = se{g_{{k_l}2}} + 1}^{la} {b{a_i}} = 0 $ (27)

则调整segkl 2=la;否则,令:

$ test = \{ 0, b{a_{se{g_{{k_l}2}} + 1}}, b{a_{se{g_{{k_l}2}} + 2}}, \cdots, b{a_{la}}\} $ (28)

寻找a满足:

$ \left\{ \begin{array}{l} tes{t_a} = 0\\ tes{t_{a + 1}} = 1 \end{array} \right. $ (29)

s1=segkl2,调整segkl 2=s1+a-1。

3 适应长语段的音节切分改进方法

人在发声过程中,很难保证使用相同的音量。在不同时刻,不同重音情况下,语音的音量都不尽相同。这一特点在长语音段中尤为明显。要利用时频二维上的能量信息对长语音段进行音节切分,就需要不断调整能量判别门限来适应不同时刻语音音量的变化。本文方法中,静音帧及清音帧的判别与时间无关,而浊音帧的判别依据了时间维度上的信息。对浊音帧判别进行修改,可以更好地适应长语段音节切分的情况,即对语音时频二值化的过程进行改进。假设语音时长为t

$ me_{\rm{i}}^1 = \left\{ \begin{array}{l} \begin{array}{*{20}{c}} {0, }&{o{n_i} = 0或am{p_i} \le am{p_{{\rm{th}}}}} \end{array}\\ \begin{array}{*{20}{c}} {\sum\limits_{j = 13}^{50} {{e_{ij}}} /38, }&{其他} \end{array} \end{array} \right. $ (30)

其中mei1表示第i帧在960~4 000 Hz频带内每个频带精度Δf上的平均能量。第i帧满足oni=0或ampiampth时,直接把mei设为0是为了去除静音及清音帧对语音时频0-1化的影响。

当29 < i < tt-29时,令:

$ test = \{ me_{i-29}^1, me_{i-28}^1, \cdots, me_i^1, \cdots, me_{i + 28}^1, me_{i + 29}^1\} $ (31)

testx表示test中的第x个元素,以numz表示test中元素等于0的个数

$ m{e_i} = \left\{ \begin{array}{l} \begin{array}{*{20}{c}} {0, }&{numz = 59} \end{array}\\ \begin{array}{*{20}{c}} {\sum\limits_{x = 1}^{59} {tes{t_x}} /59-numz, }&{numz < 59} \end{array} \end{array} \right. $ (32)

其中mei表示第i帧的浊音帧判别门限。当i≤29或者itt-29时

$ m{e_i} = \left\{ \begin{array}{l} \begin{array}{*{20}{c}} {m{e_{30}}, }&{i \le 29} \end{array}\\ \begin{array}{*{20}{c}} {m{e_{t/\Delta t-30}}, }&{i \ge t/\Delta t-29} \end{array} \end{array} \right. $ (33)

mei代替原能量判别门限Eth

$ {E_{ij}} = \left\{ \begin{array}{l} \begin{array}{*{20}{c}} {1, }&{{e_{ij}} \ge m{e_i}} \end{array}\\ \begin{array}{*{20}{c}} {0, }&{{e_{ij}} < m{e_i}} \end{array} \end{array} \right. $ (34)

图 2(a)为依据式(1)和式(2)对语音进行时频0-1化后绘制的0-1语谱图,图 2(b)为依据改进方法对语音进行时频0-1化后绘制的0-1语谱图。

图 2 算法改进前后语音的0-1语谱图

对比图 2(a)图 2(b)中黑框框出的部分,可以看出改进的语音时频二值化方法能更清晰地描述浊音开头音节能量在时频二维中的特征,音节边界更加清晰。

4 实验

实验在Matlab环境下进行,选取语音共3 930段,每段语音音节数已知,在10~50不等,语音采样率fs为16 kHz。随机挑选其中30段语音进行人工音节切分,并与传统的归并法、近期发表的高斯拟合法及本文提出的二维能量特征法的切分结果进行对比。为了与语音真实音节相区分,后文将利用音节切分方法切分出的对应单位语音称为切分音。

归并法的原理  将语音过零率、基音周期、短时能量等特征参数相似的相邻帧进行归并,形成相似段;将特征发生突然变化的位置记作1类转折,将特征发生缓慢变化的位置记作2类转折;将不同声韵母及静音按照其特性划分到1或2类转折中;利用转折位置进行划分。归并法可选择固定门限或可变门限,可变门限需结合提前得知的语音段音节个数设定。由于固定门限对不同语音的适应性很差,本文使用门限可变的归并法。

高斯拟合法的原理  利用双门限法对语音段进行第一次切分;在第一次切分的基础上,利用语音短时能量波谷与波谷之间的相互判断,给出几种第二次切分的方案;利用假设语音音节长度服从的某种高斯分布,结合提前得知的语音段音节个数,计算几种第二次切分方案成立的概率,选出最可能得切分方案。

本文分别利用归并法、高斯拟合法及本文方法对一段含有18个音节的语音段进行切分,并与人工切分进行对比。对语音段进行音节切分,即标注音节位置,包含音节起点及音节终点。因为对起点及终点的分析方法相同,相邻音节常常出现前音节终点为后音节起点的情况,为方便三种方法的对比,选择音节起点描述次语音段切分结果。切分结果如图 3所示。

图 3 算法改进前后语音的0-1语谱图

其中时间距离表示某切分方法标注某音节起点的时间位置与人工标注该音节起点的时间位置的差的绝对值,单位为秒。从图 3中可以看出,三种方法对该语音段进行切分,本文方法切分结果最接近人工切分结果。

只用一段语音的切分结果评价三种方法的切分准确度是不合适的。例如在用二维能量切分法对该语音段进行切分时,恰巧将改语音段切分为18个切分音,实际情况是二维能量特征法与可变门限的归并法及高斯拟合法不同,这种方法不需要前得知音节个数,也不能保证切分出的切分音个数与真实音节个数相同。

以归并法、高斯拟合法及二维能量特征法对30段语音进行切分,与30段语音人工切分的结果进行对比。为方便对比三种方法的切分准确度,定义以人工切分结果为对比对象的误差er_l及以切分方法的切分结果为对比对象的误差er_s:

$ \left\{ {\begin{array}{*{20}{c}} {er\_l\_begin_j^i = \min (|label\_begin_j^i-seg\_begin_j^k|), }\\ {\begin{array}{*{20}{c}} {k = 1, 2, \cdots, k{m_j}}\\ {er\_s\_begin_j^k = \min (|seg\_begin_j^k-label\_begin_j^i|), }\\ {\begin{array}{*{20}{c}} {\begin{array}{*{20}{c}} {i = 1, 2, \cdots, i{m_j}}\\ {er\_l\_end_j^i = \min (|label\_end_j^i-seg\_end_j^k|), } \end{array}}\\ {k = 1, 2, \cdots, k{m_j}} \end{array}}\\ {er\_s\_end_j^k = \min (|seg\_end_j^k - label\_end_j^i|), } \end{array}}\\ {i = 1, 2, \cdots, i{m_j}} \end{array}} \right. $ (35)

其中:j表示第j段语音,i表示人工切分的第i个音节,imj表示人工切分第j个语音段后切分出的音节数,k表示切分方法切分的第k个切分音,kmj表示切分方法切分第j个语音段后切分出的切分音个数,label_begin表示人工切分的音节起点位置,label_end表示人工切分的音节终点位置,seg_begin表示切分方法切分的切分音起点位置,seg_end表示切分方法切分的切分音终点位置,min表示取最小值,则

$ \left\{ \begin{array}{l} er\_l = \{ er\_l\_begin, er\_l\_end\} \\ er\_s = \{ er\_l\_begin, er\_l\_end\} \end{array} \right. $ (36)

使用两个误差描述音节切分方法准确度的原因是,不能保证每次用二维能量特征法切分出的音节个数与人工切分出的音节个数相同。

由于三种音节切分方法都会限制相邻音节切分的距离,即不存在切分出的两个音节的起点位置十分靠近,也不存在切分出的两个音节的终点位置十分靠近的情况。音节切分方法切分出的切分音起点不会重复与某一固定的人工切分音节起点对比。可以认为用以人工切分结果为对比对象的误差er_l和以切分方法的切分结果为对比对象的误差er_s来描述音节切分方法准确度是合适的。

对比三种方法的切分准确度结果如图 4所示,其中er_l_begin_mean表示某语音段音节切分后以人工切分为对比对象的音节起点误差平均值,er_s_begin_mean表示某语音段音节切分后以切分方法的切分结果为对比对象的音节起点误差平均值,er_l_end_mean表示某语音段音节切分后以人工切分为对比对象的音节终点误差平均值,er_s_end_mean表示某语音段音节切分后以切分方法的切分结果为对比对象的音节终点误差平均值,即对于第j段语音:

$ \left\{ \begin{array}{l} er\_l\_begin\_mea{n_j} = (\sum\limits_{i = 1}^{i{m_j}} {er\_l\_begin_j^i)/i{m_j}} \\ er\_s\_begin\_mea{n_j} = (\sum\limits_{k = 1}^{k{m_j}} {er\_s\_begin_j^k)/k{m_j}} \\ er\_l\_end\_mea{n_j} = (\sum\limits_{i = 1}^{i{m_j}} {er\_l\_end_j^i)/i{m_j}} \\ er\_s\_end\_mea{n_j} = (\sum\limits_{k = 1}^{k{m_j}} {er\_s\_end_j^k)/k{m_j}} \end{array} \right. $ (37)
图 4 归并法、高斯拟合法及二维能量特征法的切分准确度对比

为方便表达,称er_l_begin_mean为1类平均误差,er_s_begin_mean为2类平均误差,er_l_end_mean为3类平均误差,er_s_end_mean为4类平均误差,单位为秒。

图 4中,横坐标为30段语音段的索引,可以看出,高斯拟合法在多数情况下,对音节的起点及终点位置的判断优于归并法,但高斯拟合法极不稳定,对个别语音段作音节切分误差极大。二维能量特征法在大多数语音段作音节切分效果优于归并法和高斯拟合法,且性能稳定,无个别极大误差。可以断定二维能量特征法作音节切分准确度优于归并法和高斯拟合法。

此外,一方面,利用二维能量特征法对音节进行切分,其与人工切分相比的平均误差基本在0.05 s以内,即可以断定利用二维能量特征法切分音节,切分位置很大概率是正确的;另一方面,由于归并法及高斯拟合法可以根据提前得知的音节个数设定门限从而保证切分个数与音节个数相同,而二维能量特征法无法保证切分个数,在此情况下其平均误差仍然小于前两种方法,说明利用二维能量特征法切分的切分音个数接近真实音节个数。同时,二维能量特征法切分音节不需要提前得知音节个数。统计三种方法切分30段语音的平均切分误差,定义平均切分误差er为四类平均误差的均值:

$ \begin{array}{l} er = [\sum\limits_{j = 1}^{30} {(er\_l\_begin\_mea{n_j} + er\_s\_begin\_mea{n_j} + } \\ er\_l\_end\_mea{n_j} + er\_l\_begin\_mea{n_j})/4]/30 \end{array} $ (38)

则统计的归并法作音节切分的平均切分误差为0.072 3 s,统计的高斯拟合法作音节切分的平均切分误差为0.052 6 s,统计的二维能量特征法作音节切分的平均切分误差为0.029 7 s。

按照真实音节个数从小到大的顺序排列所有语料,排列后的第j段语音的真实音节个数为pjp表示音节个数。用二维能量特征法对排列后的语音进行音节切分,第j段语音的切分音个数为sjs表示切分音个数。则spj=sj-pj,其中sp表示用二维能量特征法对语音做音节切分后切分音个数与语音真实音节个数的偏差, 如图 5所示。

图 5 二维能量法切割语音段后的切分音个数与真实音节数对比

图 5(a)图 5(b)中曲线接近,即利用二维能量法对语音段作音节切分后,切分音个数同真实音节个数接近。从图 5(c)中可以看出对大多数语音段作音节切分,切分音个数同真实音节数的偏差在可接受范围内。

3 930段语音的总音节数为86 569,利用二维能量特征法作音节切分后的切分音数为87 853。计算偏差绝对值的总和,即$ \sum\limits_{j = 1}^{3930} {|s{p_j}| = } 6864 $。定义音节切分偏差率为切分偏差的绝对值总和除以真实音节数, 则二维能量特征法的音节切分偏差率为6 864/86 569=7.93%。

5 结语

利用汉语语音在时频二维的能量特征设计了一种新的汉语语音音节切分方法:用传统方法判断静音帧,用相同时间不同频率的二维能量判断清音帧,用不同时间特定频段的0-1二维能量判断浊音帧及有话帧,先根据静音帧和清音帧的判别结果对含清音的音节位置进行判断,再根据浊音帧判别结果对清音浊化或只含浊音的音节位置进行判断,最后利用有话帧的判断结果调整两种音节的起始和结束位置。实验结果表明,该方法切分准确度优于归并法和高斯拟合法,其音节切分误差为0.029 7 s,音节切分偏差率为7.93%。然而此汉语语音切分方法的切分准确度仍不及人工切分,更优秀的汉语语音音节切分方法尚待研究。

参考文献
[1] FARAJI N, AHADI S M, SHEIKHZADEH H. Sequential method for speech segmentation based on random matrix theory[J]. IET Signal Processing, 2013, 7 (7) : 625-633. doi: 10.1049/iet-spr.2011.0471
[2] SATTAR F, NILSSON M, CLAESSON I. Segmentation and its real-world applications in speech processing[C]//Proceedings of the 9th International Symposium on Signal Processing and Its Applications. Piscataway, NJ:IEEE, 2007:1-4.
[3] BROGNAUX S, DRUGMAN T. HMM-based speech segmentation:improvements of fully automatic approaches[J]. IEEE/ACM Transactions on Audio Speech and Language Processing, 2016, 24 (1) : 5-15. doi: 10.1109/TASLP.2015.2456421
[4] KISS G, SZTAHO D, VICSI K. Language independent automatic speech segmentation into phoneme-like units on the base of acoustic distinctive features[C]//Proceedings of the 4th International Conference on Cognitive Infocommunications. Piscataway, NJ:IEEE, 2013:579-582.
[5] MPORAS I, LAZARIDIS A, GANCHEV T, et al. Using hybrid HMM-based speech segmentation to improve synthetic speech quality[C]//Proceedings of the 4th Panhellenic Conference on Informatics. Piscataway, NJ:IEEE, 2009:118-122.
[6] ZIOLKO B, MANANDHAR S, WILSON R C, et al. Wavelet method of speech segmentation[C]//Proceedings of the 6th European Signal Processing Conference. Piscataway, NJ:IEEE, 2006:1-5.
[7] LEE K S. MLP-based phone boundary refining for a TTS database[J]. IEEE Transactions on Audio, Speech and Language Processing, 2006, 14 (3) : 981-989. doi: 10.1109/TSA.2005.858049
[8] ABEL A K, HUNTER D, SMITH L S. A biologically inspired onset and offset speech segmentation approach[C]//Proceedings of the 2015 International Joint Conference on Neural Networks. Piscataway, NJ:IEEE, 2015:1-8.
[9] MUSFIR M, KRISHNAN K R, MURTHY H A. Analysis of fricatives, stop consonants and nasals in the automatic segmentation of speech using the group delay algorithm[C]//Proceedings of the 201420th National Conference on Communications. Piscataway, NJ:IEEE, 2013:1-6.
[10] AKDEMIR E, CILOGLU T. HMM topology for boundary refinement in automatic speech segmentation[J]. Electronics letters, 2010, 46 (15) : 1086-1087. doi: 10.1049/el.2010.1390
[11] 杜守栓. 方言口音普通话语音自动切分算法研究[D].北京:中国科学院计算技术研究所, 2006:15-26. ( DU S S. Research on robust automatic segmentation of dialectal speech[D]. Beijing:Chinese Academy of Sciences, Institute of Computing Technology, 2006:15-26. ) http://cdmd.cnki.com.cn/Article/CDMD-80132-2006108226.htm
[12] 张继勇, 郑方, 杜术, 等. 连续汉语语音识别中基于归并的音节切分自动机[J]. 软件学报, 1999, 10 (11) : 1212-1215. ( ZHANG J Y, ZHENG F, DU S, et al. Merging-based syllables detection automaton in continuous Chinese speech recognition[J]. Journal of Software, 1999, 10 (11) : 1212-1215. )
[13] 韩虎. 汉语连续语音的音节自动标注算法研究及实现[D].哈尔滨:哈尔滨工业大学,2008:21-44. ( HAN H. Research and realization of the automatic syllable marking algorithm for Chinese continuous speech[D]. Harbin:Harbin Institute of Technology, 2008:21-44. )
[14] 张扬, 赵晓群, 王缔罡. 基于音节长度高斯拟合的汉语音音节切分方法[J]. 计算机应用, 2016, 36 (5) : 1410-1414. ( ZHANG Y, ZHAO X Q, WANG D G. Chinese speech segmentation method based on Gauss distribution of time spans of syllables[J]. Journal of Computer Applications, 2016, 36 (5) : 1410-1414. )
[15] FISHER E, TABRIKIAN J, DUBNOV S. Generalized likelihood ratio test for voiced-unvoiced decision in noisy speech using the harmonic model[J]. IEEE Transactions on Audio, Speech and Language Processing, 2006, 14 (2) : 502-510. doi: 10.1109/TSA.2005.857806
[16] 金学成, 汪增福. 基于线性预测残差倒谱的基音周期检测[J]. 模式识别与人工智能, 2008, 21 (1) : 104-110. ( JIN X C, WANG Z F. A pitch detection algorithm based on linear predication residual cepstrum[J]. Pattern Identification and Artificial Intelligence, 2008, 21 (1) : 104-110. )
[17] 党晓妍, 魏旋, 崔慧娟, 等. 声码器清浊音判决算法优化[J]. 清华大学学报:自然科学版, 2008, 48 (7) : 1119-1122. ( DANG X Y, WEI X, CUI H J, et al. Improvement of voiced-unvoiced classification in vocoders[J]. Journal of Tsinghua University (Science and Technology), 2008, 48 (7) : 1119-1122. )