4

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

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

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

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

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

4

1 回答 1

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);
于 2015-08-13T22:11:01.800 回答