如何合并 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划分为一定的时间量?

任何帮助将不胜感激。

经过更多的研究,我发现了这个网站,它清楚地显示了使用 MFCC 进行 Weka 的步骤。它显示了一些数据文件,其中包含各种统计信息,每个统计信息都作为单独的属性在Weka中列出。我相信当报纸说

计算均值和方差

这意味着每个 MFCC 系数的均值和方差被用作组合数据文件中的属性。当我按照网站上的示例合并 MFCC 时,我使用了最大值、最小值、范围、最大位置、最小位置、平均值、标准差、偏度、峰度、四分位数和四分位数范围。

为了将音频输入拆分为秒,我相信 MFCC 的集合是以作为参数输入的采样率提取的,因此如果我将其设置为 100,我将等待 100 个周期来合并 MFCC。如果我错了,请纠正我。

相关内容

  • 没有找到相关文章

最新更新