Lectura de archivos wav en Java
audio k-means (4)
Quiero leer archivos wav en Java y los voy a clasificar con K-means.
¿Cómo puedo leer archivos wav en Java y asignarlos a una matriz o algo así (puedes sugerir ideas para ello) para clasificarlos?
EDITAR: Quiero usar API para leer archivos wav y K-means.
Este artículo de A Greensted: Leer y escribir archivos Wav en java debería ser útil. La clase WavFile es muy útil y puede modificarse para devolver toda la matriz de datos en lugar de los fragmentos almacenados en el búfer.
Equivalente a la función wavread de matlab:
http://web.archive.org/web/20120531113946/http://www.builogic.com/java/javasound-read-write.html
Hice algunas investigaciones y encontré muchas maneras de leer archivos wav. Creo que la forma más sencilla de leer archivos wav de una carpeta específica es:
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
}
Espero que de alguna manera esto ayude a algunas personas. Avísame si no entiendes algo.
Podrías leer los archivos de sonido usando la biblioteca de sonido javax y FileInputStream ( encontré un buen ejemplo aquí ) y tratar los archivos wave como un vector de bits (0,1) o bytes ... usando la alineación de secuencia múltiple ( Wiki ) crear una matriz de distancia entre cada flujo de bits / bytes, y a partir de ahí, la agrupación debe ser directa.
El problema es que este método es muy sensible al ruido, etc., pero vale la pena intentarlo ...