在Java中读取wav文件

14

我想在Java中读取wav文件,并使用K-means算法进行分类。

如何在Java中读取wav文件并将它们分配到一个数组或类似的结构中(您可以提出建议)以进行分类?

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


1
我认为这个线程会帮助你入门。 - Umesh K
4个回答

21


3
你可以使用javax声音库和FileInputStream(这里找到了一个不错的例子)读取声音文件,并将波形文件视为位(0,1)或字节的向量。使用多序列比对(维基)创建每个位/字节流之间的距离矩阵,然后聚类应该很直接。
问题是,这种方法对噪声非常敏感,但值得一试...

进行一些降噪和可能的下采样是个好主意。+1。 - Fred Foo

1

我不确定这是否对某人有帮助。Java JDK已经提供了AudioSystem类。

我在测试中使用它来检查生成的WAV属性。

AudioFileFormat audioFileFormat = AudioSystem.getAudioFileFormat(new File(response.get()));
assertEquals(1, audioFileFormat.getFormat().getChannels());
assertEquals(8000.0, audioFileFormat.getFormat().getSampleRate(), 0.0f);
assertEquals(8, audioFileFormat.getFormat().getSampleSizeInBits());

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接