如何在MFCC中获取前13个系数

时间:2013-07-08 17:01:12

标签: c++ mfcc

我在MFCC遇到麻烦。我一步一步地按照教程。在“Windowing”步骤之后,我为每个帧计算DFT。我的问题是:剩余的步骤,包括“Mel-filter bank”,“log”和“DCT”,是否适用于每一帧?我感到困惑,因为在步骤“DCT”中,我们将采用之前计算的前13个系数。那么我们要采取什么框架呢?我真的需要一个明确的解释:(

2 个答案:

答案 0 :(得分:1)

MFCC是纯粹的本地运营。它在每一帧上重复完成:for (auto f: frames) { std::vector<double> coeff = MFCC(f);。这意味着MFCC的每个部分也都会重复进行。

答案 1 :(得分:1)

首先,我想建议this教程,如果你还没有看过它。

是的,您必须将DFT,Mel-filter bank,log和DCT应用于 EACH AND VERY FRAME ,然后获得DCT的前13个系数。系数可以存储在double数组的数组中(例如vector&lt; vector&lt; double&gt;&gt; mfcc)。然后每个mfcc(i).size = 13,即每帧的前13个系数。 因此,每个mfcc(i)将包含每个帧的13个系数,mfcc将是这13个系数的向量。

我建议您使用c ++ librry进行mfcc提取,而不是从头做事。