我正在从一些音频文件中提取 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 划分为一定的时间?
任何帮助将不胜感激。