Guardando el byte de audio [] en un archivo wav

He tenido un poco de problemas en los últimos días tratando de hacer que esto funcione. Pero lo que quiero es que tengamos una aplicación que envíe datos sin procesar a través de la red. Luego leo estos datos binarios y quiero guardarlos en un archivo wav (cualquier audio). Podría mirar la compresión más tarde.

Así que el código problemático:

byte[] allBytes = ...
InputStream b_in = new ByteArrayInputStream(allBytes);

try
{
     AudioFormat format = new AudioFormat(8000f, 16, 1, true, true);
     AudioInputStream stream = new AudioInputStream(b_in, format, allBytes.length);
     //AudioInputStream stream = AudioSystem.getAudioInputStream(b_in);                

He intentado usar la declaración anterior también, pero obtengo la excepción:javax.sound.sampled.UnsupportedAudioFileException: could not get audio input stream from stream. Entonces, lo que creo que está sucediendo es que, debido a que mi transmisión son datos de audio sin formato y no tiene un encabezado de onda, ¿esto es una excepción?

File newPath = new File(SystemConfiguration.getLatest().voiceNetworkPathDirectory + currentPhoneCall.fileName);
if (!AudioSystem.isFileTypeSupported(Type.WAVE, stream))
{
    Logger.error("Audio System file type not supported");
}

AudioSystem.write(stream, Type.WAVE, newPath);

El archivo se escribe correctamente pero es todo estático. ¿Necesito crear un encabezado de onda en la salida usando algo como?esta. Cuando miro el archivo wav generado en el bloc de notas y parece que tiene un encabezado, comienza con 'RIFF'.

¿Necesito agregar un encabezado falso en mi flujo de entrada? ¿Debo crear mi propio encabezado de salida y guardarlo con un escritor binario?

Respuestas a la pregunta(3)

Su respuesta a la pregunta