用Java读取wav文件
我想用Java读取wav文件,我将用K-means对它们进行分类。
我如何读取Java中的wav文件并将它们分配到一个数组或类似的东西(你可以建议它的想法)来对它们进行分类?
编辑:我想使用API来读取wav文件和K-means。
这篇文章由A Greensted 撰写 : 在java中阅读和编写Wav文件应该会有所帮助。 WavFile类非常有用,可以调整它来返回整个数据数组而不是缓冲的片段。
你可以使用javax声音库和FileInputStream读取声音文件( 在这里找到一个很好的例子 )并将波形文件视为位(0,1)或字节的向量…使用多序列对齐( Wiki )创建一个距离矩阵每个比特/字节流,从那里,聚类应该是直接的。
问题是,这种方法对噪音等非常敏感,但值得一试……
相当于matlab的wavread函数:
http://web.archive.org/web/20120531113946/http://www.builogic.com/java/javasound-read-write.html
我做了一些研究,发现了很多方法来阅读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 }
我希望不知怎的,这会对一些人有所帮助。 如果你不明白,请告诉我。