MFCC
在声纹识别方面,梅尔倒谱特征参数(MFCC)是目前最为成熟且应用最广泛的声学特征参数。根据研究表明,人耳对不同频率的敏感程度有所不同,即人耳听到的声音信号的频率与其本身的实际频率存在一种非线性的对应关系。具体表现为:当声音信号的频率低于 1000Hz 时,人耳的听觉感知能力与实际频率呈线性关系;当声音信号的频率高于 1000Hz 时,人耳的听觉感知能力与实际频率近似的呈对数关系,这种非线性的对数关系被称为 Mel 尺度。它与实际频率的关系可表示为:
M
e
l
(
f
)
=
2595
l
g
(
1
+
f
/
700
)
Mel(f)=2595lg(1+f/700)
Mel(f)=2595lg(1+f/700)
其中
f
f
f为频率,单位为
H
z
Hz
Hz,
M
e
l
(
f
)
Mel(f)
Mel(f)为梅尔频率。
M
e
l
Mel
Mel频率和实际频率之间的对应关系:
当纯净声音和混合噪声的频率相近时,人耳受遮蔽效应的影响无法区分这两种信号,通过缩小带宽使人能恰好听到纯净声信号的临界带宽被称为临界带宽。计算表达式:
B
W
c
=
25
+
75
×
[
1
+
1.4
×
f
c
1000
]
0.69
BW_c=25+75\times\left [1+1.4{\times} \frac {f_c}{1000} \right]^{0.69}
BWc=25+75×[1+1.4×1000fc]0.69
其中,
f
c
f_c
fc表示中心频率,单位为
H
z
Hz
Hz。
通过中心频率可以构建一组梅尔滤波器组来对带宽频率进行模拟。根据频率 f 与 Mel 频率的对应关系,将语音频率划分成一系列称为 Mel 频率滤波器组的三角形滤波器序列。它们在以 Hz 为单位的频率 f 轴 上是不等间距的,但经过上述变换之后,在以 Mel 为单位的频率轴上,每个滤波器就是等间距的了[4]。在实际应用中,通常采用三角滤波器来近似等价这组梅尔滤波器。Mel滤波器组频响特性曲线:
每个三角滤波器的顶点位置所对应的频率即为该滤波器的中心频率,并且滤波器的中心频率和带宽随着频率的变化而变化。在 1000HZ 以下的三角滤波器分布相对密集,而在 1000Hz 以上,三角滤波器分布较为稀疏。MFCC 在低频段对信号的刻划很精细,即对低频段语音信 号的描述能力很强。每个三角滤波器的传递函数定义如下:
f
(
x
)
=
{
0
,
k
<
f
m
−
1
k
−
f
m
−
1
f
m
−
f
m
−
1
,
f
m
−
1
<
k
<
f
m
f
m
+
1
−
k
f
m
+
1
−
f
m
,
f
m
<
k
<
f
m
+
1
0
,
k
>
f
m
+
1
f(x) = \begin{cases} 0,&k < f_{m-1}\\ \frac {k-f_{m-1}}{f_m-f_{m-1}}, &f_{m-1}<k<f_m\\ \frac {f_{m+1}-k}{f_{m+1}-f_m}, & f_m<k<f_{m+1}\\ 0,&k>f_{m+1} \end{cases}
f(x)=⎩
⎨
⎧0,fm−fm−1k−fm−1,fm+1−fmfm+1−k,0,k<fm−1fm−1<k<fmfm<k<fm+1k>fm+1
式中,
M
M
M为梅尔滤波器的阶数,由声音信号的截止频率来决定,
f
m
f_m
fm是梅尔滤波器的中心频率[1]。
MFCC特征参数的提取算法
MFCC特征提取提取信号的MFCC特征主要包含4个部分:预处理、快速傅里叶变换、Mel频率滤波和离散余弦变换。
预处理
预处理是声纹识别中重要的一步,需要对语音信号进行预加重、分帧加窗、端点检测等操作。这些操作旨在提高语音信号的清晰度和准确性,以便更好地进行后续的语音处理。这是通过消除或减少噪音、谐波和失真等因素来实现的,从而获得更加平滑和一致的信号,提高信号参数的提取质量,并最终提高语音处理的效果,减弱甚至消除噪音或静音片段,增加语料库有效语音从而提高声纹识别系统性能。
预处理过程一般包括4个过程,预加重,端点检测,分帧及加窗。
预加重
在现实的语音数据库中,采集到的语音信号功率会随着信号频率增加而降低,语音信号中的高音部分相对于低音部分有较少的能量。由于每个人的口腔结构不同,说话人在发音过程中高频分量会有所减弱,导致语音信号中的高频能量较小,低频能量较大,声纹识别模型难以提取高频相关信息,为了强调语音中高频部分的能量,并消除由口和唇的动作所引起的干扰,避免在后边的 FFT 操作中出现数值问题,增加语音信号的高频分辨率。一般高频能量比低频小,因此需要加强它们以确保它们能被有效地传输和接收。预加重滤波器采用了一阶高通滤波器[3]。传递函数可以表示为:
H
(
z
)
=
1
−
μ
z
−
1
H(z)=1-\mu z^{-1}
H(z)=1−μz−1
μ
\mu
μ是预加重系数,一般情况下都取
μ
=
0.95
\mu=0.95
μ=0.95,取值过小不足以提升信号中的高频分量。
对语音信号预加重的目的是提升信号高频部分的频谱,使信号的频谱变得平坦,能够利用同样的信噪比在低频到高频的整个频带内求频谱,便于对语音信号进行频谱分析或声道参数分析。
端点检测
端点检测的目的就是对输入语音信号进行判断,找出语音段的起始点与终止点。有效的端点检测不仅可以减小对语音信号的处理时间,而且还能消除无声段的噪音。端点检测技术目前大多是基于语音信号的时域特征,短时能量与短时过零率是常被采用的两种时域特征,通过对它们的门限的设定来进行检测。
设某个语音信号是
x
(
m
)
x(m)
x(m),长度是
N
N
N,其短时能量
E
E
E:
E
=
∑
m
=
0
N
−
1
x
2
(
m
)
E=\sum_{m=0}^{N-1}x^2(m)
E=m=0∑N−1x2(m)
短时过零率
Z
Z
Z:
Z
=
1
2
∑
m
=
0
N
−
1
∣
s
g
n
[
x
(
m
)
]
−
s
g
n
[
x
(
m
−
1
)
]
∣
Z=\frac 1 2\sum_{m=0}^{N-1}|sgn[x(m)]-sgn[x(m-1)]|
Z=21m=0∑N−1∣sgn[x(m)]−sgn[x(m−1)]∣
分帧
语音信号在传统意义上是非平稳非时变的,但在较短的时间内却是很稳定的,即具有短时平稳性,所以通常把一段声音信号分隔成若干段短时信号,每一段短时信号就构成了一个帧。语音信号分帧的目的是因为语音信号是准平稳,只有在短时段上视为是一个平稳过程,利用平稳过程的分析方法来处理。
在声纹识别信号中每帧的长度在 10ms 至 30ms 之间,帧长太长信号变化过于明显,影响特征分类的准确度,帧长太短则提取的特征参数不具有代表性。
分帧可以采用连续的分段也可以有重叠。为了使保持连贯性及帧与帧之间过渡平滑,一般采用重叠分段的办法,即相邻的帧之间是有重叠的,重叠的部分被称为帧移,帧移与帧长之比在 0 到 0.5 之间。设每一个样本信号的总长度为
n
n
n,分帧长度为
l
l
l,帧移为
s
s
s,分得的帧数为
m
m
m,当计算的数值得不到整数时,
m
m
m向下取整。
m
=
⌊
(
n
−
l
+
s
)
/
s
⌋
m=\lfloor (n-l+s)/s \rfloor
m=⌊(n−l+s)/s⌋
加窗
分帧后的语音信号在帧与帧之间可能存在断裂或缺失,造成信号的不完整。这种误差通常会影响到后续语音信号处理的结果,如语音识别、声学模型训练等。使用加窗函数可以解决信号分帧后可能产生的不连续性问题,同时不同的加窗函数可以对信号进行不同程度的平滑处理,从而更好地提取信号特征。目前常见的加窗函数包括矩形窗、汉明窗、汉宁窗和海明窗等,在应用时,加窗过程应根据不同情况选用合适的窗函数,否则会造成语音信号被裁减或削弱等问题。
窗函数为
w
(
n
)
w(n)
w(n),语音帧信号为
x
(
n
)
x(n)
x(n),则加窗后的信号
y
(
n
)
y(n)
y(n):
y
(
n
)
=
x
(
n
)
w
(
n
)
,
0
≤
n
≤
N
−
1
y(n)=x(n)w(n),0\leq n\leq N-1
y(n)=x(n)w(n),0≤n≤N−1
矩形窗:
W
(
n
)
=
{
1
,
0
≤
n
≤
N
−
1
0
,
o
t
h
e
r
w
i
s
e
W(n) = \begin{cases} 1, &0\leq n \leq N-1\\ 0,&otherwise \end{cases}
W(n)={1,0,0≤n≤N−1otherwise
汉明窗:
W
(
n
)
=
{
0.54
−
0.46
c
o
s
[
2
π
n
/
(
N
−
1
)
]
,
0
≤
n
≤
N
−
1
0
,
o
t
h
e
r
w
i
s
e
W(n) = \begin{cases} 0.54-0.46cos[2\pi n/(N-1)],&0\leq n \leq N-1\\ 0, &otherwise \end{cases}
W(n)={0.54−0.46cos[2πn/(N−1)],0,0≤n≤N−1otherwise
汉宁窗:
W
(
n
)
=
{
0.5
[
1
−
c
o
s
(
2
π
n
N
−
1
)
]
,
0
≤
n
≤
N
−
1
0
,
o
t
h
e
r
w
i
s
e
W(n) = \begin{cases} 0.5[1-cos(\frac {2\pi n}{N-1})],&0\leq n \leq N-1\\ 0, &otherwise \end{cases}
W(n)={0.5[1−cos(N−12πn)],0,0≤n≤N−1otherwise
海明窗:
W
(
n
)
=
[
0.54
−
0.46
c
o
s
(
2
π
n
M
−
1
)
]
R
M
(
n
)
W(n) = \left [0.54-0.46cos \left (\frac {2 \pi n}{M-1}\right)\right]R_M(n)
W(n)=[0.54−0.46cos(M−12πn)]RM(n)
矩形窗的主瓣宽度比汉明窗的主瓣宽度小得多,具有较高的频谱分辨率,导致频率泄露的现象明显,往往容易丢失声音信号的细节部分。而汉明窗则有平滑的低通性能力,能够很好的克服频谱泄露。目前最常用的窗函数是Hamming窗。
对语音信号加窗的目的是为了减小截断效应,降低语音帧的坡度,使语音帧的两端平滑的过渡到零。
快速傅里叶变换(FFT)
利用快速傅里叶变换(FFT)实现语音信号从时域到频域的变换。
Mel滤波频率
用三角滤波器将快速傅里叶变换得到的离散频谱序列进行滤波处理后,得到一组系数 m 1 , m 2 , ⋯ m_1,m_2,\cdots m1,m2,⋯。信号的截止频率决定该滤波器组的个数 p p p,所以总体上滤波器覆盖从 0 H z 0Hz 0Hz到奈奎斯特频率。
离散余弦变换(DCT)
因为Mel频谱系数都是实数,利用离散余弦变换(DCT)将Mel频谱系数变换到时域,得到的就是Mel频率倒谱系数(MFCC)[2]。
参考文献
[1] 狄晓栋. 基于声纹识别的变压器故障诊断技术研究[D]. 山东理工大学, 2023.
[2] 李新欣. 船舶及鲸类声信号特征提取和分类识别研究[D]. 哈尔滨工程大学, 2013
[3] 毕宗英. 基于深度学习的声纹识别模型研究[D]. 中北大学, 2024.
[4] 钱真. 视频多模态信息处理的关键技术研究[D]. 哈尔滨工程大学, 2013.