Понимание вывода mfcc - PullRequest
       73

Понимание вывода mfcc

0 голосов
/ 08 сентября 2018
from librosa.feature import mfcc
from librosa.core import load

def extract_mfcc(sound):
    data, frame = load(sound)
    return mfcc(data, frame)


mfcc = extract_mfcc("sound.wav")

Я хотел бы получить MFCC следующего файла sound.wav , который 48 секунд длиной .

Я понимаю, что data * frame = length of audio.

Но когда я вычисляю MFCC, как показано выше, и получаю его форму, это результат: (20, 2086)

Что означают эти цифры? Как я могу рассчитать время аудио только по его MFCC?

Я пытаюсь вычислить среднее значение MFCC за мс звука.

Любая помощь приветствуется! Спасибо:)

1 Ответ

0 голосов
/ 08 сентября 2018

Это потому, что кепстральные коэффициенты с низкой частотой вычисляются по окну, то есть количеству выборок. Звук - это волна, и невозможно извлечь какие-либо особенности, взяв один образец (число), отсюда и окно.

Для вычисления MFCC используется быстрое преобразование Фурье (FFT), и это точно требует, чтобы была предоставлена ​​длина окна. Если вы проверите документацию librosa для mfcc , вы не найдете это как явный параметр. Это потому, что это неявно, а именно:

  • длина окна БПФ: 2048
  • количество выборок между последовательными кадрами: 512

Они передаются как **kwargs и определяются здесь .

Если вы теперь учитываете частоту дискретизации вашего аудио и эти числа. Вы получите конечный результат, который вы предоставили.

Поскольку частота дискретизации по умолчанию для librosa равна 22050, длина звука составляет 48 с, а окно равно 512, вот что следует:

Formula

Номер не совсем 2086, а:

  • Ваша длина звука не точно 48 секунд
  • Фактическая длина окна - 2048 с 512 прыжками. Это означает, что в конце вы «потеряете» несколько кадров.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...