用Java读取wav文件

用Java读取wav文件,java,audio,wav,k-means,Java,Audio,Wav,K Means,我想读Java中的wav文件,我将用K-means对它们进行分类 我如何读取Java中的wav文件并将它们分配到数组或类似的东西(您可以提出一些想法)中进行分类 编辑:我想使用API读取wav文件和K-means。您可以使用javax声音库和FileInputStream读取声音文件 () 并将波形文件视为位(0,1)或字节的向量。。使用multiple sequence alignment()在每个位/字节流之间创建一个距离矩阵,从那里开始,集群应该是直接的 问题是,这种方法对噪音等非常敏感,

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

我如何读取Java中的wav文件并将它们分配到数组或类似的东西(您可以提出一些想法)中进行分类


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

您可以使用javax声音库和FileInputStream读取声音文件 () 并将波形文件视为位(0,1)或字节的向量。。使用multiple sequence alignment()在每个位/字节流之间创建一个距离矩阵,从那里开始,集群应该是直接的

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

官员浏览音频文件


这篇文章由格林斯特德撰写:应该会有帮助。WavFile类非常有用,可以调整它以返回整个数据数组,而不是缓冲片段。

相当于matlab的wavread函数:


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

private final String directoryOfSamples = "./res/semplai";
private ArrayList<File> samplesArray = new ArrayList<File>();
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
}
private final String directoryOfSamples=“./res/semplai”;
私有ArrayList samplesArray=新ArrayList();
私有最终文件文件夹=新文件(样本目录);
公众阅读样本()
{
addAll(Arrays.asList(folder.listFiles());
testSample(getSamplesArray().get(0));//测试是否可以从arrayList播放示例
}
我希望这会对一些人有所帮助。
如果您不明白,请告诉我。

不确定这是否有帮助。JavaJDK已经提供了类

我用它作为测试的一部分来检查生成的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());

做一些降噪和降采样可能是个好主意+1.我想这会有助于你开始。这是什么黑客行为?getSamplesArray()做什么?这是什么?