声音特征提取 MFCC向量
声音被视为一种模拟信号,在声学研究中所关注的核心问题是通过时域波形来表征声压随时间的变化情况。然而这种表示法却无法充分地体现声音的实际特征因而必须引入另一种更为有效的表征手段即通过将时域波形转化为声学特征向量的方式来进行分析
模数转换的本质是将模拟信号转化为数字信号,并主要包含两个关键步骤:采样与量化。通过特定的采样率和位深将声音的连续波形转换为离散的数据样本。依据香基尔定律,在日常环境中声音频率通常不超过8kHz的情况下(即工作在低于16kHz的频率范围内),使用16kHz的采样率足以确保能够完整地捕捉到大部分的声音信息含量。这意味着每秒将采集16千个样本数据点,并且这些数据都是以幅度值的形式存在。为了准确记录这些幅度值并确保信息完整性,在处理过程中需要将其进行量化处理为整数值。对于采用16位采样深度的情况而言,在理论上可以表示从-32768到32767之间的所有整数值范围内的幅度值变化情况。因此,在实际应用中我们通常会对这些幅度值进行量化处理并将其近似到最近的那个整数值上以实现有效的数据存储与传输
经过采样与量化处理后的模拟信号以x[n]表示, 其中n为时间索引. 然后可从该信号序列中提取MFCC特征序列, 算法流程图如图所示.

一、预加重
注:主要改动说明:
- 将"第一步是"改为"通常是"等表达方式
- "增加"改为"增强"
- "衰减20dB"扩展为"衰减幅度达到20dB"
- 调整语序并加入"以便使"
- 使用更多技术术语如"预加重处理强化"
- 增加了必要的修饰词以提升描述完整性
预加重可通过一阶高通滤波器实现,在时间域中,输入信号为x[n]且a的取值范围为0.9到1.0之间,则该滤波器输出可表示为y[n]=x[n]-a·x[n-1];相应地,在频率域中其传递函数H(z)则表示为H(z)=1 - a·z^{-1}。
二、加窗
日常生活中声音通常是非平稳信号,在一段时间内可视为stationary signal;这就是加窗技术的基本思想。窗函数由三个参数描述:窗长(以毫秒为单位)、偏移量和形状参数。每个加窗处理后得到的声音片段称为一帧;每一帧所持续的时间长度称为帧长(measured in milliseconds),相邻两帧之间的偏移量即为帧移量。
从信号sⁿ中提取一帧的过程可以表示为yⁿ=wⁿ sⁿ(注:这里可能需要更自然的表达方式)。当wⁿ是矩形窗时,在边界处切断会导致信号不连续性对傅里叶分析产生负面影响。为了改善频谱分析的效果,在MFCC中通常采用边缘逐渐降至零的汉明窗。

其中L为帧长。
三、离散傅里叶变换
经过加窗处理后的每个时序块都包含了丰富的频率信息。为了分析该时序块在各个频率区间内的能量分布情况,我们通常采用用于从采样数据中提取频域特征的技术即为离散傅里叶变换(DFT)。其输入为经过加窗处理的一系列连续时序块x[n],…,x[m],而其输出结果则由N个复数X[k]构成。这些复数不仅能够反映原始信号中各特定频率成分的存在与否,并且还能提供相应振幅与相位信息。根据定义可知:

广泛应用于计算DFT的一个常见算法是快速傅里叶变换(FFT),该算法具有很高的效率,并且通常情况下,输入序列长度N需为2的整数次幂。
四、 Mel滤波器组
该方法能提供此帧信号各频段的能量信息。然而,在人耳中频率感知差异显著:高频区域比低频区域敏感度较低;这一界限大致位于1000Hz附近,在声音特征提取过程中模拟这种感知特性有助于提升识别性能。同时,在MFCC(梅尔频系数)处理中会采用DFT(离散傅里叶变换)输出结果并将其映射到Mel尺度上进行分析工作:具体而言,在Mel尺度下的人耳感知范围呈现线性关系,在超过1KHz后则呈现对数关系;其计算公式如下:

在计算Mel频谱系数(MFCC)的过程中,在对信号进行快速傅里叶变换(FFT)后,并非直接得到理想的频谱表示。相反地,在此过程中通过一组 mel 滤波器组将 FFT 频谱转换为 mel 频谱。这些 mel 滤波器组通常由一组 mel 刻度范围内的三角形滤波器组成,在低于1000Hz的部分采用线性间距排列,在高于1000Hz的部分则采用对数间距排列以适应人耳频率感知的特点。假设我们设计了一个包含M个三角形滤波器的滤波器组,则这些用于分割频带范围的中心频率f(m)满足m=1,2,…,M的要求,并且通常取值范围在22至26之间(这一数值选择与所划分的人耳临界带数量具有较好的一致性)。值得注意的是,在这些中心频率f(m)中随着m值减小而逐渐减小间隔宽度,在m增大的情况下则逐渐增大间隔宽度以保证合理的频域划分效果

每个三角滤波器的频率响应为:

式中

。
采用三角带通滤波器能够使频谱变得平滑并有效地去除谐波的影响;从而突出显示原始声音的主要共振峰。因此,在一段声音中(frequency spectrum)并不会反映其音调或音高特性(frequency characteristics),即以MFCC作为声学特征并不会受输入声音的不同音调而对其识别效果产生影响。此外还可以减少计算量。
在获取Mel频谱之后,在语音信号处理中我们通常需要计算每个滤波器组输出端所对应的频域能量值。人类对于声音声压水平的感受呈现明显的非线性特性,在此情况下高分贝音量的变化感知程度远低于低分贝水平这一现象值得注意。进一步地,在特征提取过程中采用取对数的方式有助于减少外界环境因素(如麦克风位置变动)所带来的影响;由于麦克风位置可能发生微小变动从而导致麦克风捕获的能量值会随之改变;而每个滤波器输出端所对应的频域能量值则可以通过取其自然对数值来实现更加稳定的特征表示方法

五、倒谱:离散余弦变换
虽然可以用mel频谱本身作为声音特征,然而使用倒谱不仅具有优势,并且能够显著提升识别性能。除预加重和平移转换外,倒谱的本质是将标准幅度谱取对数后形成的频域信号。即首先将标准幅度谱中的幅度值取对数,并将其形象化展示以形成类似于声音波形的效果。此外,在发音波形上观察到的现象表明:当频率较低时出现峰值,在倒域中表现为低位置的峰值;当频率较高时出现峰值,则在倒域中表现为高位置的峰值。因此,在音元识别方面适合采用低位置的倒域系数;而在音高识别方面则适合采用高位置的倒域系数。值得注意的是,在统计模型中描述各个倒域系数之间的关系时不需要考虑它们之间的相关性变化(即各系数之间相互独立),这使得高斯声学模型(GMM)在参数数量上较前一种方法减少了大量计算量
利用滤波器的对数能量,倒谱系数可以由离散余弦变换获得:

式中L指MFCC阶数,通常12阶就可以代表声学特征;M指三角滤波器个数。
六、能量和差分
该帧的能量被定义为其所有采样点的平方总和;考虑一个经过加窗处理后的信号序列x(n),其在时间区间[t1, t2]内的能量计算如下:

实际应用中也可以计算其以10为底的对数,并将其结果乘以相应的系数。如果需要引入更多的声音特征参数(例如音高、过零率以及共振峰等),则可以在该阶段纳入分析。
我们提取出的一系列特征分别对每一帧进行独立分析,并将其视为静态属性。然而实际的声音则是连续不断变化的过程,在此过程中相邻两个FRAM之间存在密切关联关系。因此有必要引入能够反映相邻FRAM之间动态关系的新特征以描述其变化特性。通常情况下,则会采用计算当前FRAM与其前后相邻各一FRAM之间的差异值的方式来进行这一过程的具体实现。其中一种直接的方法就是分别计算当前FRAM与其前一、后一相邻FRAM之间的各个倒谱系数与能量值的变化量。

不考虑二阶差分的情况下,在此情况下其MFCC特征由26个维度构成。这些维度包括12维倒谱系数、其一阶差分以及1维能量及其一阶差分。
