请给出提取MFCC每个步骤的数学公式
时间: 2024-05-31 12:11:29 浏览: 115
提取MFCC(Mel频率倒谱系数)的步骤可以分为以下几个部分:
1. 预加重
预加重是为了强调高频信号的能量,减小低频信号的幅度。其公式为:
$$s'(n) = s(n) - \alpha s(n-1)$$
其中,$s(n)$ 表示原始语音信号,$s'(n)$ 表示预加重后的语音信号,$\alpha$ 为预加重系数,通常取值为 0.95。
2. 分帧
将预处理后的语音信号分成若干帧,每帧的长度为 $N$ 个采样点,通常取值为 25ms,即 $N = \text{采样率} \times 0.025$。
3. 加窗
对每一帧的语音信号进行加窗处理,以消除边界效应。通常采用汉明窗,其公式为:
$$w(n) = 0.54 - 0.46\cos\left(\frac{2\pi n}{N-1}\right)$$
其中,$w(n)$ 表示第 $n$ 个采样点对应的窗函数值。
4. 傅里叶变换
对加窗后的每一帧语音信号进行快速傅里叶变换(FFT),得到其频谱,即语音信号在频域的表示。
5. 梅尔滤波器组
梅尔滤波器组是一系列三角形滤波器,其作用是将频谱图中的能量转换成对应的梅尔频率。梅尔频率是人耳对声音感知的频率,与普通频率不同。梅尔滤波器组的公式为:
$$H_m(k) = \begin{cases}
0, & k < f(m-1) \\
\frac{k - f(m-1)}{f(m) - f(m-1)}, & f(m-1) \le k < f(m) \\
1, & f(m) \le k < f(m+1) \\
\frac{f(m+2) - k}{f(m+2) - f(m+1)}, & f(m+1) \le k < f(m+2) \\
0, & k \ge f(m+2)
\end{cases}$$
其中,$H_m(k)$ 表示第 $m$ 个梅尔滤波器在第 $k$ 个频率点的输出值,$f(m)$ 表示第 $m$ 个梅尔频率。
6. 对数压缩
对每个梅尔滤波器的输出进行对数运算,以增强较小的能量值。其公式为:
$$S_m = \log\left(\sum_{k=1}^{K}H_m(k)|X(k)|^2\right)$$
其中,$S_m$ 表示第 $m$ 个梅尔滤波器输出的对数能量值,$X(k)$ 表示第 $k$ 个频率点的幅度谱值。
7. 离散余弦变换
对上一步得到的每个梅尔滤波器的对数能量值进行离散余弦变换(DCT),得到其MFCC系数。通常只保留前 $M$ 个系数,其中 $M$ 是根据实际应用需求确定的。其公式为:
$$c_m = \sqrt{\frac{2}{M}}\sum_{k=1}^{K}S_k\cos\left(\frac{\pi m}{M}(k-0.5)\right)$$
其中,$c_m$ 表示第 $m$ 个MFCC系数,$S_k$ 表示第 $k$ 个梅尔滤波器输出的对数能量值。
阅读全文