【发布时间】:2013-07-06 02:40:14
【问题描述】:
我在使用 MFCC 时遇到了问题。我一步一步地按照教程进行操作。在步骤“窗口化”之后,我计算每一帧的 DFT。我的问题是:剩下的步骤,包括“Mel-filter bank”、“log”和“DCT”,是否适用于每一帧?我感到困惑,因为在“DCT”步骤中,我们将采用之前计算的前 13 个系数。那么我们必须采取哪些框架呢?我真的需要一个明确的解释:(
【问题讨论】:
我在使用 MFCC 时遇到了问题。我一步一步地按照教程进行操作。在步骤“窗口化”之后,我计算每一帧的 DFT。我的问题是:剩下的步骤,包括“Mel-filter bank”、“log”和“DCT”,是否适用于每一帧?我感到困惑,因为在“DCT”步骤中,我们将采用之前计算的前 13 个系数。那么我们必须采取哪些框架呢?我真的需要一个明确的解释:(
【问题讨论】:
MFCC 是纯本地操作。它在每一帧上重复完成:for (auto f: frames) { std::vector<double> coeff = MFCC(f);。这意味着 MFCC 的每个部分也是重复完成的。
【讨论】:
首先我想推荐this 教程,如果你还没有看过的话。
是的,你必须对EACH AND VERY FRAME应用DFT、Mel-filter bank、log和DCT,然后得到DCT的前13个系数。系数可以存储在 double 数组的数组中(比如 vector
我建议您使用 c++ 库进行 mfcc 提取,而不是从头开始。
【讨论】: