How to create WAV from PCM audio data


// PCM 8000 KHz, 8 bits, 1 channel (mono), unsigned, little endian
AudioFormat format = new AudioFormat(8000, 8, 1, false, false);

// Create a 20 seconds buffer
int playTime = 20;             
int bufferSize = format.sampleRate * (format.bitsPerSample / 8) * playTime;
ByteArrayOutputStream bos = new ByteArrayOutputStream(bufferSize);

// Create the WAV file
AudioFormatWriter writer = new PCMWavWriter();
writer.initialize(bos, format, format.sampleRate, bufferSize);
writer.writeHeader();

// Get/Generate audio buffer with corresponding size.
outbuf = generator.generate(bufferSize);
writer.writeAudioData(outbuf, 0, outBuf.length);

// Now play audio.
ByteArrayInputStream bis = new ByteArrayInputStream(bos.toByteArray());
Player player = Manager.createPlayer(bis, "audio/x-wav");
player.start();