我正致力于将语音识别项目从 MATLAB 转换为 Java 代码。 我已经能够使用提供的here的java示例读取 .wav 文件(作为 -1到1 范围内的值的向量)。这与 MATLAB 中的wavread函数完全相同。
我的下一个任务是从原始样本向量中提取 MFCC 特征向量。在 MATLAB 中,我使用Voicebox轻松实现此目的,但无法找到 Java 等效项。使用Voicebox,我有一个代码:
a = melcepst(samples(1,:), 44100)
每行的样本'包含代表每个.wav样本的向量。该方法为每个样本返回 MFCC 特征的二维矩阵。
我见过 Sphinx ,但一直无法理解如何将它用于此任务。 任何有关使用 Sphinx 或任何其他 java 解决方案的帮助都将不胜感激。
答案 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);