APP下载

MFCCs和DTW在拼音相似度中的研究

2022-07-05徐扬张嘉宝杨满玉李晶聂云丽

电脑知识与技术 2022年14期

徐扬 张嘉宝 杨满玉 李晶 聂云丽

摘要:汉语拼音的模糊匹配在关键词匹配、语音纠错等场景占据着重要地位,而传统的模糊匹配方法无法计算不同声母、韵母之间的听觉相似度,只能简单地将其作为相同和不同的两种情形处理,这在实际使用中,容易受方言、发音习惯等因素影响匹配正确率。文章针对该问题,提出了一种基于梅尔频率倒谱系数(MFCCs)和加入惩罚系数的动态时间序列规整(DTW)的方法,计算汉语拼音中各部分的相似度。MFCCs能够提取声音频谱中符合人耳听觉特性的特征,而DTW方法能够计算时间序列的相似度。根据实验表明,该方法能较好地区分出汉语拼音中发音相似的音标,能够提高各种拼音模糊匹配场景的匹配性能和准确率。

关键词:拼音模糊匹配;拼音相似度;梅尔频率倒谱系数;动态时间序列规整

中图分类号:TP18      文献标识码:A

文章编号:1009-3044(2022)14-0001-04

随着互联网的飞速发展,汉字拼音的模糊匹配在关键词匹配、汉字纠错等诸多场景都有着重要应用。传统的拼音模糊匹配通常使用基于拼音编辑距离[1-2]、基于SOUNDEX的音码相似度[3-4]等方法。陈何峰等人[5]还根据英文的关键词模糊集构造法(Gram-based),提出了新的拼音模糊集合。但是这些方法都存在模糊性不强、在计算不同声母、韵母之间的发音相似性时,只能将其作为相同和不同两种情况处理的问题。

针对以上问题,本文提出了一种基于MFCCs和DTW的拼音相似度计算方法,能够很好地根据具体情形的汉语发音音频文件,计算出不同拼音之间的听觉相似度,大大提高了各种拼音模糊匹配场景中的匹配率和准确度。

1 算法描述

1.1 MEL频率倒谱系数(MFCC)

MFCC是一种基于人耳听觉机制的特征提取方法。相比于LPCC方法,MFCC具有更好的特征提取效果[6]。人耳对不同频率声音的感知能力并非呈现严格的线性关系。根据人类听觉感知的实验,人耳对低频(小于1KHz)的感知能力大致呈现线性关系,而对高频(大于1Khz)的感知能力大致呈现对数关系。根据这一特性,在对声音进行相似度研究时,需要使用公式(1),将线性的频率(Hz)刻度转换为Mel刻度:

[Melf=1125ln(1+f/700)]                         (1)

MFCC参数的提取通常包含以下步骤[7]:

1.1.1 预加重

由于语音信号会受到声门激励和口鼻辐射的影响,需要将原始语音信号通过如下的一个高通滤波器:

[Hz=1-μz-1]

以补偿高频分量的损失,并凸显高频的共振峰,其对应的时域差分方程为:

[S(n)=x(n)-μ*x(n-1)]                          (2)

式中[μ]取值为0.9~1,本文取值[μ=0.97]。

1.1.2 分帧

为了方便信号分析,需要把总的音频信号[S(n)]切分为许多小段[Sin],每一小段称为帧,其中包含N个采样点,N叫帧长。如果最后一帧不够N个样本点,则在后面补0。在语音信號的处理中,一帧的时间长度要小于一个音素的长度,音素的持续时间约为50ms~200ms。而每一帧又必须要包含多个周期,男声语音的基频在100Hz左右,女声在200Hz左右,即10ms和5ms。所以每一帧的时间长度取值应在20ms~50ms之间。在对帧做偏移时,还需要将帧与帧之间重叠一部分,以避免帧与帧之间的特性变化太大。对于16000Hz的语音信号,通常取帧长N=512,即对应的时间长度为512/16000×1000=32ms。在本研究中,取每帧时长为32ms,帧移为16ms。

1.1.3 加窗

对每一帧信号[Sin]乘上汉明窗[Wn],以减小吉布斯效应的影响,减弱FFT以后旁瓣大小以及频谱泄露。加窗后的信号:

[S'in=Sin*W(n)]                           (3)

其中[Wn=0.54-0.46cos2πn/(N-1)],

[0≤n≤N-1,N]为帧长。

1.1.4 离散傅里叶变换(DFT)

对每一帧加窗后的信号[S'in]做N=512的离散傅里叶变换:

[Sik=n=1NS'i(n)e-j2πkn/N,1≤k≤N]             (4)

将时域的音频信号转换至频域。变换后,由[Sik]估计功率谱[Pik]:

[Pik=1NSik2]                       (5)

每一帧有N/2+1=257个点。

1.1.5 Mel滤波器组

将FFT变换后的能量谱,根据公式(1)把实际频率转换为Mel频率(m),再通过L=26个Mel滤波器,其中1KHz以下的10个滤波器线性相隔,1KHz以上的16个滤波器对数相隔,每个滤波器为长度等于257的向量,如图1所示:90F6AA26-219C-4467-A8F8-715C6B3DFC79

第[l]个三角形滤波器的下限频率[o(l)]、中心频率[c(l)]、上限频率[h(l)]与相邻滤波器的关系如下:

[cl=hl-1=o(l+1)]

其中每个三角滤波器的输出:

[ml=k=olhlWlk Pik      l=1,2,…,L]                 (6)

[Wlk=k-olcl-ol,o(l)≤k≤c(l)hl-khl-cl,c(l)≤k≤h(l)]                         (7)

根据奈奎斯特(Nyquist)采样定理,16KHz的语音信号频率范围为0~8KHz,而人类只能听到20Hz以上的声音,所以对20Hz~8KHz根据式(1)转换到Mel尺度,20Hz对应31.69Mel,8KHz对应2834.99Mel。

1.1.6取对数和倒谱运算

由于人耳对声压的反应一般呈对数关系,在获得Mel频谱后,还需要进行一次取对数和倒谱运算,将频域信号变回时域信号。在MFCC中,通常使用离散余弦变换(DCT)代替反傅里叶变换进行倒谱运算:

[ci=2Nl=1Llgm(l)cos{(l-12)iπL}]

其中低倒谱系数常用于检测音元,高倒谱系数常用于检测音高,不同系数之间的变化不相关。在本研究中,只提取前9阶倒谱系数。

1.1.7 差分参数提取

以上计算的倒谱参数只包含了语音参数的静态特征,还需要通过两次差分计算,获得语音参数的动态(delta)特征,以提高系统的识别性能:

[dt=n=1Nn(ct+n-ct-n)2n=1Nn2]                          (8)

式中,[dt]表示从第t帧的前后[ct+n、ct-n]得到的一阶差分(delta)系数,本文取[N=2]。二阶差分(delta-delta)系数使用同样的方法,对[dt]再进行一次差分运算。因此,本文中完整的一个MFCCs包含27个维度,其中9维MFCC,9维一阶差分系数,9维二阶差分系数。

1.2 动态时间归整(DTW)求相似度

在语音信号处理中,语音时间序列的长度大部分是不相等的,时间序列存在非对齐、局部形变、噪声干扰的问题。比如序列局部发生压缩、拉伸时,一对一比较法无法解决该问题[9],传统的欧氏距离无法有效求取不同语音信号的相似度。而DTW方法可以通过寻找波形对齐的点,进而更加准确地计算出距离。

1994年,Berndt等人通过引入DTW方法[10],有效解决了离散时间序列的偏移问题:

[DTWQ,C=minWk=0KωkK]                (9)

其中[W=ω0,ω1,…,ωk,…,ωK]表示规整路径矩阵(warping Path Matrix),[W]的第[k]个元素定义为[Wk=(i.j)k],[δ]是距离度量函数,本文取以下公式:

[Wk=λ*δ(i,j)=λ*(xi-yj)2]           (10)

在计算汉语拼音的DTW相似度时,为了适应声母、韵母的发音特性,并在一定程度上解决DTW算法中可能出现的病态对齐现象[11],本文对[Wk]的计算加入了惩罚系数[λ]。当对声母部分计算DTW相似度时,对时间序列[Q,C]的前[35]帧部分,取[λ=1],后[25]帧部分取[λ=0.7];当对韵母部分计算DTW相似度时,对时间序列[Q,C]的前[25]帧部分,取[λ=0.7],后[35]帧部分取[λ=1]。

[W]满足以下3个约束条件:

(1)边界条件:

[ω0=x0,y0,ωK=(xm,yn)]          (11)

即路徑规划必须从网格矩阵[W]的左下角出发,右上角结束。

(2)连续性条件:

若[ωk-1=a',b'],则路径规划的下一个点[ωk=a,b]须满足:

[a-a'≤1,b-b'≤1]                       (12)

即[W]上的每个点只能和相邻点对齐匹配。

(3)单调性条件:

若[ωk-1=a',b'],则路径规划的下一个点[ωk=a,b]须满足:

[0≤a-a',0≤b-b']                         (13)

即[W]上的点必须随时间单调进行规划。

针对汉语拼音的特点,DTW在本文的具体实现步骤如下:

1)假设两个时间序列[Q=x0,x1,xi,...,xm],[C={y0,y1,yj,...,yn}],其中[m、n]分别是音频文件A、B的分帧数。90F6AA26-219C-4467-A8F8-715C6B3DFC79

2)使用距离度量函数[δ]计算[Q、C]中每个离散时间点[(xi,yj)]的距离(Dist),构造一个大小为[m×n]的网格距离矩阵[W]:

[[λδ(xm,y0)] [λδ(xm,y1)] … [λδ(xm,yn)] … … … … [λδ(x1,y0)] [λδ(x1,y1)] … [λδ(x1,yn)] [λδ(x0,y0)] [λδ(x0,y1)] … [λδ(x0,yn)] ]

3)根据网格矩阵[W],找出从[δ(x0,y0)]到[δ(xm,yn)]之间满足约束条件的最短路径,其和值即为DTW距离。

分别求得语音A、B的MFCCs后,对每一个维度计算DTW距离,相似度取距离的倒数。

2 实例应用分析

2.1 拼音语音数据的建立

在对语音数据分析时,为了尽可能地减小不同发音人、环境噪音、发音速度等影响,本研究采用了语音合成(TTS)技术[12],使用科大讯飞的TTS系统,设定相同发音人和发音速度合成语音信号,对声母和韵母部分分开研究。

对于声母,每个声母均与韵母u组合发音,如:怒(nu),鹿(lu),木(mu),兔(tu),经TTS合成获得对应发音的16Khz波形文件(wav)。

2.2 MFCCs特征提取

以语音文件“nu.wav”为例,其发音时间共计892ms。

2.2.1 预加重

利用式(2),[μ=0.97],对输入的语音文件进行预加重,如图3所示:

2.2.2 分帧、加窗

对预加重后的语音信号进行N=512的分帧,并对每一帧加式(3)汉明窗,其时长为32ms,共计55帧,其中第4帧,如图4所示。

2.2.3 对每一帧进行离散傅里叶变换

用式(4)、式(5),对上一步的每一帧的信号进行FFT,并计算功率谱,如图5所示:

2.2.4 创建并通过26个梅尔(Mel)滤波器组

对20Hz~8KHz根据式(1)转换到Mel尺度,20Hz对应31.69Mel,8KHz对应2834.99Mel。对于26个Mel滤波器,使用28个点对其平均分配:

[31.7, 135.5, 239.3, 343.2, 447.0, 550.8, 654.6, 758.5, 862.3, 966.1, 1069.9, 1173.8, 1277.6, 1381.4, 1485.3, 1589.1, 1692.9, 1796.7, 1900.6, 2004.4, 2108.2, 2212.0, 2315.9, 2419.7, 2523.5, 2627.3, 2731.2, 2835.0]

對应的频率(Hz):

[20.0, 89.6, 165.9, 249.7, 341.5, 442.2, 552.6, 673.8, 806.5, 952.2, 1111.8, 1287.2, 1479.2, 1689.9, 1921.1, 2174.4, 2452.3, 2757.0, 3091.4, 3457.9, 3859.8, 4300.5, 4784.4, 5314.5, 5895.8, 6533.4, 7233.2, 8000.0]

代入式(7)生成26个Mel滤波器,如图6所示:

使用公式(6),将每一帧FFT后的信号通过Mel滤波器组,其中第4个Mel滤波器的对数输出,如图7所示:

再经过DCT倒谱运算得到12阶MFCC系数,并对2.2.3小节中所得的功率谱取对数,作为MFCC系数的第1阶,得到13阶MFCC系数。经对比验证,本文只取前9阶能得到更好的效果,如图8所示:

2.2.5 二阶差分参数提取

用公式(8),提取出一阶差分(delta)系数和二阶差分(delta-delta)系数,与2.2.4小节中的9阶系数组成27维的MFCCs系数。为了更直观地观察其特点,本文展示了其中第22维特征如图9所示。由图9可明显看出,对于声母n、l、m、t而言,n和l具有较高的相似度,而m与n、l也具有一定的相似度,t则和n、m、l差异较大。

2.3 DTW求相似度并归一化

对n和其余声母的MFCCs求DTW相似度[x],并归一化[x'=x-min(x)maxx-min (x)]。在使用DTW方法时,还可以结合Tralie等人的分治算法[13],提高路径规划的速度。n,l第22维MFCCs网格矩阵[W]如图10所示,其中白色实线为最短路径。

为了使数据更加直观,在归一化后对每个数据乘以100,得到n和其余声母的相似度,如表1所示:

由同样方法可得l和其余声母相似度,如表2所示:

由表1、表2可知,在各声母与韵母“u”协同发音时,与声母n相比,l具有最高的相似度(89.5),m具有较高相似度(68.9),r具有些微相似度(52.3)。其余声母和n的相似度较低(小于50)。在不需要较高模糊度的拼音匹配场景中,可认为小于50的声母和n不具有相似性。

2.4  结果分析

若现有汉字人名“芈华(mi3 hua2)”,由于环境噪音、发音不标准或常用词统计等因素影响,被计算机错误录入为“李华(li3hua2)”,而待匹配汉字中仅有“芈华”和“毕华”。

若使用传统基于SOUNDEX的音码模糊匹配方法,分别计算声母、韵母部分相似度:

[声母 韵母 ]

由于声母l和m、b并不属于一组模糊音,“李”和“芈”“毕”的相似度都将计算为50%:

声母不同[0×12 + ]韵母相同1[×12=0.5]90F6AA26-219C-4467-A8F8-715C6B3DFC79

而使用本文的方法,由于l和m具有61.0的相似度,l和b具有20.2的相似度,结合音码方法可得:

“李”“芈”:[0.610×12 + 1×12=0.805]

“李”“毕”:[0.202×12 + 1×12=0.601]

“李”和“芈”的相似度为80.5%,“李”和“毕”的相似度为60.1%,明显提高了模糊匹配的区分度,将在某些场合下能取得更好的模糊匹配效果。

3 结束语

本文详细阐述了以MFCCs和DTW算法为基础的拼音相似度计算方法,很好地提高了拼音模糊匹配的匹配率和区分度。但该方法依然存在一定局限性,如汉语发音存在明显的协同发音现象,若需要较高准确率,则需要对所有发音方式计算发音相似度,这将增大样本需求和计算难度。

未来的工作可以引入语言学方面的知识以及汉语发音的统计结果,对其给予一定权重,加入拼音相似度的计算结果中。还可以使用基于统计数据的神经网络方法,替代本文中的DTW方法,使拼音相似度的结果更具有普遍性。

参考文献:

[1] 曹犟,邬晓钧,夏云庆,等.基于拼音索引的中文模糊匹配算法[J].清华大学学报(自然科学版),2009,49(S1):1328-1332.

[2] 刁兴春,谭明超,曹建军.一种融合多种编辑距离的字符串相似度计算方法[J].计算机应用研究,2010,27(12):4523-4525.

[3] 陈鸣,杜庆治,邵玉斌,等.基于音形码的汉字相似度比对算法[J].信息技术,2018,42(11):73-75.

[4] 周昊,沈庆宏.基于改进音形码的中文敏感詞检测算法[J].南京大学学报(自然科学),2020,56(2):270-277.

[5] 陈何峰,林柏钢,杨旸,等.基于密文的中文关键词模糊搜索方案[J].信息网络安全,2014(7):69-74.

[6] 王让定,柴佩琪.语音倒谱特征的研究[J].计算机工程,2003,29(13):31-33.

[7] Müller M.Informationretrieval for music and motion[M].Berlin:Springer,2007.

[8] 赵力.语音信号处理[M].2版.北京:机械工业出版社,2009.

[9] 任守纲,张景旭,顾兴健,等.时间序列特征提取方法研究综述[J].小型微型计算机系统,2021,42(2):271-278.

[10]BerndtD,Clifford J. Using dynamic time warping to find patterns in time series[C]// Workshop on Know ledge Know ledge Discovery in Databases,1994:359-370.

[11] 夏寒松,张力生,桑春艳.基于LDTW的动态时间规整改进算法[J].计算机工程,2021,47(11):108-120.

[12] 张小峰,谢钧,罗健欣,等.深度学习语音合成技术综述[J].计算机工程与应用,2021,57(9):50-59.

[13] TralieC,DempseyE.Exact,parallelizable dynamic time warping alignment with linear memory[J].arXiv preprint arXiv:2008.02734,2020.

收稿日期:2022-01-30

作者简介:徐扬(1996—),男,四川内江人,硕士,主要研究方向为信号处理和大数据应用;张嘉宝(1996—),女,湖北荆门人,硕士,研究方向为地球物理信息大数据;杨满玉(1998—),女,陕西商洛人,硕士,研究方向:地球物理信息大数据;李晶(1998—),女,湖北武汉人,硕士,研究方向为地球物理信息大数据;聂云丽(1997—),女,云南曲靖人,硕士,研究方向为地球物理信息大数据。90F6AA26-219C-4467-A8F8-715C6B3DFC79