如何在Java中提取MFCC功能

时间:2014-05-15 05:01:37

标签: java matlab audio feature-extraction mfcc

我正致力于将语音识别项目从 MATLAB 转换为 Java 代码。 我已经能够使用提供的here的java示例读取 .wav 文件(作为 -1到1 范围内的值的向量)。这与 MATLAB 中的wavread函数完全相同。

我的下一个任务是从原始样本向量中提取 MFCC 特征向量。在 MATLAB 中,我使用Voicebox轻松实现此目的,但无法找到 Java 等效项。使用Voicebox,我有一个代码:

a = melcepst(samples(1,:), 44100)

每行的样本'包含代表每个.wav样本的向量。该方法为每个样本返回 MFCC 特征的二维矩阵。

我见过 Sphinx ,但一直无法理解如何将它用于此任务。 任何有关使用 Sphinx 或任何其他 java 解决方案的帮助都将不胜感激。

1 个答案:

答案 0 :(得分:2)

你可以使用Sphinx 4获得这样的MFCC帧:

AudioFileDataSource audioDataSource = new AudioFileDataSource(3200, null);
audioDataSource.setAudioFile(new URL("file:///path/to/my.wav", "source");

final ArrayList<DataProcessor> pipeline = new ArrayList<DataProcessor>();

pipeline.add(audioSource);
pipeline.add(new DiscreteFourierTransform());
pipeline.add(new MelFrequencyFilterBank(minFreq, maxFreq, numFilters));
pipeline.add(new DiscreteCosineTransform2(numFilters, 12));
FrontEnd f = new FrontEnd(pipeline);

Data mfccs;
do {
    mfccs = f.getData();
} while(mfccs != null);