Как объединить MFCC
Я работаю над извлечением функций MFCC из некоторых аудиофайлов. У программы, которую я сейчас извлекаю, для каждого файла есть серия MFCC, а параметр буфера имеет размер 1024. В статье я увидел следующее:
Векторы признаков, извлеченные в течение секунды аудиоданных, объединяются путем вычисления среднего значения и дисперсии каждого элемента вектора признаков (объединение).
Мой текущий код использует TarsosDSP для извлечения MFCC, но я не уверен, как разделить данные на "секунды аудиоданных", чтобы объединить MFCC.
Мой код извлечения MFCC
int sampleRate = 44100;
int bufferSize = 1024;
int bufferOverlap = 512;
inStream = new FileInputStream(path);
AudioDispatcher dispatcher = new AudioDispatcher(new UniversalAudioInputStream(inStream, new TarsosDSPAudioFormat(sampleRate, 16, 1, true, true)), bufferSize, bufferOverlap);
final MFCC mfcc = new MFCC(bufferSize, sampleRate, 13, 40, 300, 3000);
dispatcher.addAudioProcessor(mfcc);
dispatcher.addAudioProcessor(new AudioProcessor() {
@Override
public void processingFinished() {
System.out.println("DONE");
}
@Override
public boolean process(AudioEvent audioEvent) {
return true; // breakpoint here reveals MFCC data
}
});
dispatcher.run();
Что такое размер буфера и можно ли его использовать для сегментирования аудио в окна длительностью в 1 секунду? Есть ли способ разделить ряд MFCC на определенное количество времени?
Любая помощь будет принята с благодарностью.
1 ответ
После дополнительных исследований я наткнулся на этот веб-сайт, на котором четко показаны этапы использования MFCC для Weka. Он показал некоторые файлы данных с различной статистикой, каждый из которых перечислен как отдельные атрибуты в Weka. Я верю, когда газета сказала
вычисление среднего и дисперсии
они означали, что среднее значение и дисперсия каждого коэффициента MFCC использовались в качестве атрибутов в объединенном файле данных. Когда я следовал примеру на веб-сайте для объединения MFCC, я использовал max, min, range, max position, min position, среднее значение, стандартное отклонение, асимметрию, эксцесс, квартиль и межквартильный диапазон.
Чтобы разделить аудиовход на секунды, я считаю, что наборы MFCC извлекаются с частотой дискретизации, введенной в качестве параметра, поэтому, если я установлю его на 100, я буду ждать 100 циклов, чтобы объединить MFCC. Пожалуйста, поправьте меня, если я ошибаюсь.