我遇到了 MFCC 的问题。我一步一步地按照教程进行操作。在步骤“窗口化”之后,我计算每一帧的 DFT。我的问题是:剩下的步骤,包括“Mel-filter bank”、“log”和“DCT”,是否适用于每一帧?我感到困惑,因为在“DCT”步骤中,我们将采用之前计算的前 13 个系数。那么我们必须采取哪些框架呢?我真的需要一个明确的解释:(
问问题
1493 次
2 回答
1
MFCC 是纯粹的本地操作。它在每一帧上重复完成:for (auto f: frames) { std::vector<double> coeff = MFCC(f);
. 这意味着 MFCC 的每个部分也重复完成。
于 2013-07-09T07:47:49.443 回答
1
首先,如果您还没有看过本教程,我想推荐它。
是的,您必须将 DFT、Mel-filter bank、log 和 DCT 应用于每个和非常帧,然后获得 DCT 的前 13 个系数。系数可以存储在 double 数组的数组中(比如 vector<vector<double>> mfcc)。然后每个 mfcc(i).size = 13 即每帧的前 13 个系数。因此,每个 mfcc(i) 将包含每帧的 13 个系数,并且 mfcc 将是这 13 个系数的向量。
我建议您使用 c++ 库进行 mfcc 提取,而不是从头开始。
于 2013-07-09T08:17:24.503 回答