Estoy leyendo un archivo de audio .wav usando Java AudioInputStream. El archivo de audio está firmado por PCM de 16 bits, con samplerate = 44100, framesize = 2, framelength = 114048. Logré obtener los datos de audio en forma de una matriz de bytes, pero no estoy seguro de cuánto tamaño debería asignar a esta matriz de bytes para poder convertirlos a valores de punto flotante. Estoy haciendo algo de manipulación de audio usando el algoritmo de Goertzel que toma la entrada de la matriz flotante, algo así como "float [] x". A continuación se muestra un fragmento de código que estoy usando. Gracias por adelantado.Convertir matriz de bytes de formato de audio wav al punto flotante
try {
AudioInputStream audioInputStream = AudioSystem.getAudioInputStream(fileIn);
}
while (numBytesRead != -1) {
numBytesRead = audioInputStream.read(audioBytes);
// Logic goes here
floatValue = byteArrayToFloat(audioBytes);
}
¿Es correcto que su código de ejemplo asuma que AudioInputStream es little-endian? Si no puede confiar en esa suposición, ¿es seguro llamar a .getFormat(). IsBigEndian(), y si devuelve true, pasar en ByteOrder.BIG_ENDIAN en su lugar? – rlkw1024