用Java读取wav文件

我想用Java读取wav文件,我将用K-means对它们进行分类。

我如何读取Java中的wav文件并将它们分配到一个数组或类似的东西(你可以建议它的想法)来对它们进行分类?

编辑:我想使用API​​来读取wav文件和K-means。

这篇文章由A Greensted 撰写 : 在java中阅读和编写Wav文件应该会有所帮助。 WavFile类非常有用,可以调整它来返回整个数据数组而不是缓冲的片段。

你可以使用javax声音库和FileInputStream读取声音文件( 在这里找到一个很好的例子 )并将波形文件视为位(0,1)或字节的向量…使用多序列对齐( Wiki )创建一个距离矩阵每个比特/字节流,从那里,聚类应该是直接的。

问题是,这种方法对噪音等非常敏感,但值得一试……

我做了一些研究,发现了很多方法来阅读wav文件。 我认为从特定文件夹中读取wav文件的最简单方法是:

private final String directoryOfSamples = "./res/semplai"; private ArrayList samplesArray = new ArrayList(); private final File folder = new File(directoryOfSamples); public ReadSample() { samplesArray.addAll(Arrays.asList(folder.listFiles())); testSample(getSamplesArray().get(0)); // testing if sample can be played from arrayList } 

我希望不知怎的,这会对一些人有所帮助。 如果你不明白,请告诉我。