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

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

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

РЕДАКТИРОВАТЬ: я хочу использовать API для чтения файлов WAV и для K-средних.

4 ответа

Решение

Эта статья A Greensted: чтение и запись WAV-файлов на Java должна быть полезной. Класс WavFile очень полезен, и его можно настроить так, чтобы он возвращал весь массив данных вместо буферизованных фрагментов.

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

Проблема в том, что этот метод очень чувствителен к шуму и т. Д., Но стоит попробовать...

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

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

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

Другие вопросы по тегам