Как взять первые 13 коэффициентов в MFCC

У меня проблемы с MFCC. Я следовал за учебником шаг за шагом. После шага "Оконное управление" я вычисляю DFT для каждого кадра. Мой вопрос: будут ли остальные шаги, включая "Банк Mel-фильтра", "Журнал" и "DCT", применяться к каждому кадру? Я запутался, потому что на шаге "DCT" мы возьмем первые 13 коэффициентов, которые были вычислены ранее. Так какие кадры мы должны взять? Мне действительно нужно четкое объяснение:(

2 ответа

Решение

Сначала я хотел бы предложить этот учебник, если вы еще не видели его.

Да, вы должны применить DFT, банк Mel-фильтра, журнал и DCT к КАЖДОЙ И ОЧЕНЬ РАМЕ, а затем получить первые 13 коэффициентов DCT. Коэффициенты могут быть сохранены в массиве массива double (скажем, vector> mfcc). Тогда каждый mfcc(i).size = 13, т.е. первые 13 коэффициентов каждого кадра. Поэтому каждый mfcc (i) будет содержать 13 коэффициентов каждого кадра, а mfcc будет вектором этих 13 коэффициентов.

Я бы предложил вам использовать C++ librry для извлечения mfcc вместо того, чтобы делать что-либо с нуля.

MFCC - это чисто локальная операция. Это делается многократно на каждом кадре: for (auto f: frames) { std::vector<double> coeff = MFCC(f);, Это означает, что каждая часть MFCC также выполняется неоднократно.

Другие вопросы по тегам