Чтение wav файла в Java

Я хочу читать wav файлы на Java, и я собираюсь классифицировать их с помощью K-средств.

Как я могу читать wav файлы в Java и назначать их в массив или что-то в этом роде (вы можете предложить ему идеи), чтобы классифицировать их?

EDIT: Я хочу использовать API для чтения wav файлов и для K-средств.

Ответ 1

Эта статья А Гринстеда: Чтение и запись Wav файлов в java должно быть полезно. Класс WavFile очень полезен, и его можно настроить, чтобы вернуть весь массив данных вместо буферизованных фрагментов.

Ответ 2

Вы можете читать звуковые файлы, используя звуковую библиотеку javax и FileInputStream (нашел хороший пример здесь) и обрабатывать волновые файлы как вектор бит (0,1) или байтов.. с использованием множественного выравнивания последовательности (Wiki) создать расстояние между каждым потоком бит/байтов и оттуда кластеризация должна быть прямой.

Проблема заключается в том, что этот метод очень чувствителен к шуму и т.д., но это стоит того...

Ответ 4

Не уверен, если это кому-то поможет. 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());

Ответ 5

Я провел некоторое исследование и нашел много способов читать 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
}

Надеюсь, что-то это поможет некоторым людям. Дайте мне знать, если вы что-то не понимаете.