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

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

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

摘要:汉语拼音的模糊匹配在关键词匹配、语音纠错等场景占据着重要地位,而传统的模糊匹配方法无法计算不同声母、韵母之间的听觉相似度,只能简单地将其作为相同和不同的两种情形处理,这在实际使用中,容易受方言、发音习惯等因素影响匹配正确率。文章针对该问题,提出了一种基于梅尔频率倒谱系数(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所示:

第[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的分帧数。

上一篇 点击页面呼出菜单 下一篇