java - 将 MFCC 值(梅尔频率倒谱系数)转换为 ascii 文件
问题描述
我有从 wav 文件中提取 MFCC 值的代码:
public class MFCCTest {
public static void main(String[] args) throws Exception {
int sampleRate = 41000;
int bufferSize = 512;
int bufferOverlap = 128;
final List<float[]>mfccList = new ArrayList<>(200);
InputStream inStream = new FileInputStream("event10.wav");
AudioDispatcher dispatcher = new AudioDispatcher(new UniversalAudioInputStream(inStream, new TarsosDSPAudioFormat(sampleRate, bufferSize, 1, true, true)), bufferSize, bufferOverlap);
final MFCC mfcc = new MFCC(bufferSize, sampleRate, 20, 50, 300, 3000);
dispatcher.addAudioProcessor(mfcc);
dispatcher.addAudioProcessor(new AudioProcessor() {
@Override
public void processingFinished() {
}
@Override
public boolean process(AudioEvent audioEvent) {
mfccList.add( mfcc.getMFCC());
return true;
}
});
dispatcher.run();
for (int loop = 0 ; loop < mfccList.size(); loop++) {
System.out.println("outer ");
for (int loop2 = 0 ; loop2 < mfccList.get(loop).length; loop2++) {
System.out.println(loop2 + " " + mfccList.get(loop)[loop2]);
}
}
}
}
现在我需要对 MFCC 值执行动态时间规整以比较 wav 文件。
但是,此代码要求我比较两个 ascii 格式的文件:
public static void main(String[] args) {
new DTW("pattern.ascii", "pattern.ascii")
}
我无法弄清楚如何转换浮点值数组的 MFCList:
final List<float[]>mfccList = new ArrayList<>(200);
转换成 ascii 文件格式。
任何有关如何执行此操作的建议或建议将不胜感激。
解决方案
推荐阅读
- php - 如何使用 laravel 将按钮添加到松弛帖子
- electron-builder - Electron-Updater,校验和不匹配,预期 ${this.expected},得到 ${this._actual}
- midi - 带有 ALSA 的 MIDI:如何检测端口上的订阅
- visual-studio - 如何让 Visual Studio 自动创建具有特定编码的新文件?
- sql - MSSQL 命名空间约束
- node.js - 如果我没有创建聊天记录,如何禁用输入 justInTimeInstall 继续按钮
- asp.net-core - .NetCore:如何在生产中包含文件夹?
- javascript - 如何测试外部 DTO?
- python - 如何将此列表在unix时间戳中转换为日期python
- sql - 仅当特定列的值为 1 时才考虑内部连接,如果该特定列的值为 2,则不考虑连接