如何在 Java 中提取 MFCC 特征

Try*_*yxo 4 java audio matlab feature-extraction mfcc

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

我的下一个任务是从原始样本向量中提取MFCC特征向量。在MATLAB 中,我使用Voicebox轻松实现了这一点,但一直无法找到Java等价物。使用 Voicebox,我有一个类似的代码:

a = melcepst(samples(1,:), 44100)
Run Code Online (Sandbox Code Playgroud)

其中“样本”的每一行都包含代表每个 .wav 样本的向量。该方法返回每个样本的MFCC特征的二维矩阵。

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

nem*_*emo 5

您可以使用 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);
Run Code Online (Sandbox Code Playgroud)