【问题标题】:How to Extract MFCC features in Java如何在 Java 中提取 MFCC 特征
【发布时间】:2014-07-03 09:25:06
【问题描述】:

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

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

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

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

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

【问题讨论】:

  • 为了从Java中的任何音频文件中提取MFCC、FTT值,最近我实现了java程序。该程序生成 MFCC 和 FTT 的 Librosa 等效值。由于它的代码不小,因此无法在此处发布完整的代码 sn-p 以便快速浏览。 github.com/Subtitle-Synchronizer/jlibrosa

标签: java matlab audio feature-extraction mfcc


【解决方案1】:

您可以使用 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);

【讨论】:

    猜你喜欢
    • 2018-06-13
    • 2020-09-21
    • 2019-11-16
    • 1970-01-01
    • 2015-04-09
    • 2019-06-07
    • 2016-09-23
    • 2011-06-19
    • 2020-10-11
    相关资源
    最近更新 更多