MFCC функция извлечения, Librosa - PullRequest
0 голосов
/ 06 июля 2019

Я хочу извлечь функции mfcc из аудиофайла, сэмплированного с частотой 8000 Гц, с размером кадра 20 мс и перекрытием 10 мс. Какими должны быть параметры для функции librosa.feature.mfcc (). Код, указанный ниже, определяет фрагменты 20 мс с перекрытием 10 мс?

import librosa as l

x, sr = l.load('/home/user/Data/Audio/Tracks/Dev/FS_P01_dev_001.wav', sr = 8000)
mfccs = l.feature.mfcc(x, sr=sr, n_mfcc = 24, hop_length = 160)

Звуковой файл длится 1800 секунд. Означает ли это, что я получу 24 mfccs для всех (1800 / 0.01) -1 кусков аудио?

1 Ответ

0 голосов
/ 06 июля 2019

1800 секунд при 8000 Гц - это, очевидно, 1800 * 8000 = 14400000 выборки. Если длина вашего скачка равна 160, вы получите примерно 14400000 / 160 = 90000 значения MFCC с 24 измерениями каждое. Так что это явно не (1800 / 0.01) - 1 = 179999 (примерно в 2 раза).

Обратите внимание, что я использовал примерно в своих вычислениях, потому что я использовал только длину прыжка и игнорировал длину окна. Длина прыжка - это количество выборок, которые окно перемещается с каждым шагом. Сколько прыжков вы можете уложить, зависит от того, как вы добавляете, или нет. И если вы решите не дополнять, количество кадров также зависит от размера вашего окна.

Возвращаясь к вашему вопросу: вы должны спросить себя, сколько образцов составляет 10 мс?

Если 1 с содержит 8000 отсчетов (это означает 8000 Гц), сколько отсчетов в 0,01 с? Это 8000 * 0.01 = 80 образцов.

Это означает, что у вас есть длина скачка 80 сэмплов и длина окна 160 сэмплов (0,02 с - вдвое больше).

Теперь вы должны указать librosa использовать эту информацию, например:

import librosa as l

x, sr = l.load('/home/user/Data/Audio/Tracks/Dev/FS_P01_dev_001.wav', sr = 8000)
n_fft = int(sr * 0.02)   # window length: 0.02 s
hop_length = n_fft // 2  # usually one specifies the hop length as a fraction of the window length
mfccs = l.feature.mfcc(x, sr=sr, n_mfcc=24, hop_length=hop_length, n_fft=n_fft)
# check the dimensions
print(mfccs.shape)

Надеюсь, это поможет.

...