Advertisement

java mfcc_语音特征提取技术——MFCC

阅读量:

简介

该方法用于从声音中提取特征参数,在理论上起源于20世纪80年代末期。MFCC算法旨在消除录音中的噪声干扰以及情感色彩,并通过计算得到一系列特征值以支持后续的数据分析工作。

发声是由人体多个部位协同作用的结果。例如,在发音过程中起重要作用的因素包括口型、牙齿等细节因素。声学特征则直接决定了声音的表现形式。若能准确测定声学特征,则能够系统地分析和表征声学信息。这篇文章将带你深入了解MFCC技术,并解释其在语音识别中的卓越应用及其具体实现途径。

首先我们来确定一下如何进行MFCC的步骤:

-----1.将音频分解为帧;

-----2.对于每一帧,计算周期功率谱;

-----3.将mel滤波器应用到功率谱中,计算每个滤波器的能量和;

-----4.计算能量的对数值;

-----5.对每个对数能量进行离散余弦变换(DCT);

-----6.保留DCT的2-13个系数,其余系数舍去;

现在我们来探讨一下每一步的细节以及为什么要这么做。

音频信号通常呈现出持续变化的状态。为了简化处理过程,在划分时间窗口时建议采用20至40毫秒的时间段作为合适区间。这是因为选择过短的时间窗口可能导致无法获得足够的数据用于准确估计功率;反之,则会导致每段时间窗口内的信号过于动态。

下一步则涉及对每个帧进行周期功率谱的计算。这个过程由人类听觉系统完成,其振动频率会因声音强度的不同而有所变化。通过耳锅的不同位置上的振动,这些信号将被不同的神经元传递至大脑以识别当前音频的频率成分。我们的周期图同样能够完成这一任务,从而确定该帧中存在的具体频率成分。

尽管周期图也包含了一些无需ASR识别的信息

一旦获得了滤波器的能量值后将其转换为对数值这也与人耳感知机制相一致;通常难以察觉线性级别的音量差异当声音水平提升一倍时在能量处理上需要增加8倍才能达到类似效果这表明即使在能量上有较大变化的情况下在实际声压级上的差异并不显著那么为何采用对数而非平方根呢因为它是一种归一化处理的技术可以有效减少通道间的偏差

最后一步是计算经过对数处理的能量值所对应的离散余弦变换(DCT)。有两个主要原因:第一点是因为我们使用的滤波器大多具有重叠特性;第二点是由于离散余弦变换(DCT)的作用下各个滤波器的能量之间相互关联。需要注意的是,在离散余弦转换中通常会保留前12个系数,在这里选择去除这些高阶系数以优化性能是因为它们能够反映信号快速变化的特点;事实证明这种做法确实能提高声学模型的表现能力

什么是mel scale(梅尔规模)?

通过将感知频率与音频的实际频率相结合来建立mel尺度,在低频范围内的细微频率变化能够被更清晰地区分出来,在高频范围内,则难以分辨细微的频率变化。通过应用mel尺度能够更好地模仿人类的听觉感受

从频率到mel scale的计算公式为

c58691dab0134b7ed55a3a37ff5d240f.png

反过来,从mel scale回到频率的公式为

37779fc922abda700921c37303d1f140.png

实现步骤:

我们从一段语音信号开始,假设该信号的采样频率为16KHz。

将信号划分为每20-40ms的一帧进行处理,在其中25ms作为基准值时会获得较好的效果。即对于频率为16KHz的信号,在一定时间段内可得到足够的采样点来完成分析任务。计算得出该信号共有N = 48.3 \times 16\text{kHz}个有效采样点(其中N代表总的采样数目)。相邻帧之间的间隔通常为T = 16\text{ms}(即每个相邻窗口之间包含16个采样点),因此第一个窗口从第零个采样点开始包含48.3×16=773.9千个连续的采样点;第二个窗口则从第十六个采样点开始包含同样数量的采样点;以此类推直到达到音频文件结束位置为止。若语音文件无法被均匀分割成偶数数量的帧,则在末尾添加足够多的零填充以满足要求。

下一步是进行对每个单一帧进行提取12个MFCC系数,我们约定

7db898e97e202f2ca9b0ecc0a9669703.png

为我们的时域信号,

a3ccb5838d962fb24c861cbe67239e11.png

第i帧的时域特征中使用了该方法,并且其中n取值范围在1至400之间。通过复数离散傅立叶变换算法进行处理后,能够有效提取频谱特征。

b5f670d8169475d32eec8d75800e32af.png

,i表示第i帧,

8bdd92fd6d40922a484dfc7e35e37c79.png

是第i帧的功率谱。

2.为了计算每一帧的DFT,执行下面的运算:

49899eae47b2a4d757b1008d9823a8ef.png

其中

a2fc5e3690861f990313d7b4e28ecca2.png

这一技术涉及功率谱的周期图估计,在本研究中我们采用512个点的FFT,并主要包含开始阶段的257个频系数。

  1. 进行梅尔间距滤波器的计算。在这一过程中, 通常会采用大约 20 到 40 个三角形滤波器, 其中最佳选择是 26 个三角形滤波器用于梅尔频率尺度的空间分析。这些设计将被应用于第二步计算得到的功率谱上, 并由一组包含 26 个向量的设计构成, 每一维向量均包含 257 分量, 其中仅有少量分量具有非零值。为了评估每个设计所对应的能量特性, 我们将每个设计与第二步得到的功率谱序列进行点积运算, 将各点积结果累加求和, 最终将获得一组共 26 个数值的结果数据集, 这些数值分别代表了各个设计对应的能量特征值。以上述方式完成处理后所得的数据特征在下图中进行了详细展示:
089fd7c64bbcc9afb4b4920c00165ea7.png

4.分别计算第3步中26个能量的对数值。

5.对26个对数能量进行DCT,得到26个系数,我们只取前12个。

在处理过程中,在每一帧图像中提取出的一组数值被称为Mel Frequency Cepstral Coefficients(MFCCs),也被定义为梅尔频率倒谱系数

关于计算梅尔间距滤波器的细节部分:

为了便于演示说明起见, 我们假设使用1组滤波器进行分析, 建议实际应用中采用26至4₀Hz之间的滤波器数量. 首先, 我们需要确定频率范围, 通常将最低频设定在3₀Hz, 最高频设置在8₀₀₀Hz. 当语音信号的采样率设定为8₀₀₀Hz时, 最高频设置相应地调整至4₀₀0Hz. 接下来, 按照以下步骤操作:

1.使用方程1,将频率转化为梅尔频率,即300Hz变为401.25Mels,8000Hz变为2834.99Mels。

在这个例子中, 我们必须配置10个滤波器参数, 从而确定了关键的12个频率点. 意味着要在梅尔频谱的最大值与最小值之间均匀插入额外的10个等间距频率点, 具体来说

m(i) = 401.25, 622.50, 843.75, 1065.00, 1286.25, 1507.50, 1728.74,1949.99, 2171.24, 2392.49, 2613.74, 2834.99 3.我们使用方程2将梅尔频率还原成频率

h(i)的值包括:300、517.33、781.90、1103.97、1496.04、1973.32、2554.33、3261.62、4122.63、5170.76、6446.70以及8000。因为对于每个频率值而言,在经过Fast Fourier Transform(FFT)处理后其对应的位置并不明确,所以我们必须将这些原始频率转换为相应的FFT输出点位置。

f(i) = floor((nfft+1)*h(i)/samplerate) 然后我们计算出结果

f(i) = 9, 16, 25, 35, 47, 63, 81, 104, 132, 165, 206, 256 注意这里我们之前说了采样频率为16KHz,然后nfft=512。

5.我们现在可以开始构建滤波器系统了。该滤波器应从初始点启动,在第二个采样周期达到峰值值,并在第三个采样周期后降为零值......依此类推可得出其余滤波器的特性。如需进一步了解,请参考附录中的详细推导过程。

251e9dc595bf86af839ca654a7c99683.png

最后,10个滤波器的图像如下所示:

2d9310cacb1e7072e273b1138c9d49fd.png

(工作时,频率从300Hz开始)

最后一点:Deltas and Delta-Deltas

又称为差分与加速度相关指标,在语音信号处理中所涉及的各种频谱特性分析工具(如MFCC)是基于局部窗函数的方法。然而语音信号显然是动态变化的,并非静止状态下的单一帧信息所能完全表征。例如探讨MFCC特征随时间演变的趋势或规律如何?研究表明,在处理语音信号时,并非仅靠MFCC就能满足需求。这使得我们进一步思考是否可以通过补充原始特征向量来提升系统的性能水平。(具体来说若我们有12个MFCC参数又有12个delta导数参数那么总共可获得24个相关参数)

计算delta系数的公式如下:

b926dafd2093efc4b2fe73c46a4b6310.png

其中

ccca5ade5b6d11eaece3cd94b657c15b.png

是一个delta系数,由

c93bcdb5cd682c168045eea0ac3985cb.png

79839bddd2311edbe772cadf5b843c1d.png

基于计算得出的结果表明,在大多数情况下N取值为2较为合理。其计算方式与差分系数相似,并非直接使用c变量

全部评论 (0)

还没有任何评论哟~