/wav-audio-encoder-js

Waveform Audio encoder for browsers

Primary LanguageJavaScriptMIT LicenseMIT

WavAudioEncoder.js

What is it?

WavAudioEncoder.js is a small JavaScript library that encodes audio data to Waveform Audio (.wav) on web browsers.

Acknowledgement

Basic idea is taken from Recorderjs (https://github.com/mattdiamond/Recorderjs). API has been totally re-designed and simplified. Now it has been a lower layer part of WebAudioRecorder.js.

Demo

https://higuma.github.io/wav-audio-encoder-js/

Library files

lib/ contains library files.

  • WavAudioEncoder.js: JavaScript library (uncompressed)
  • WavAudioEncoder.min.js: JavaScript library (minified)

Using library

You can use it from both HTML and Web Worker.

  • from HTML: <script src="javascripts/WavAudioEncoder.js"></script>
  • from Worker: importScripts("javascripts/WavAudioEncoder.js");

API

encoder = new WavAudioEncoder(sampleRate, numChannels)

Create an encoder object.

  • Parameters
    • samleRate: sampling rate [Hz]
    • numChannels: number of audio channels
  • Returns
    • encoder object

In current implementation, bit width is fixed to 16 (2 bytes).

encoder.encode(buffers)

Encode audio buffers.

  • Parameters
    • buffers: array of sample buffers ([Float32Array, Float32Array ...])
  • Returns
    • (none)

buffers must be an array of Float32Array audio data (range = [-1, 1]). Array length must be same as number of channels. It supports stream (incremental) processing. Sample buffers are processed to .wav fragment and appended to internal data.

blob = encoder.finish([mimeType])

Finish encoding and get Waveform Audio as a Blob.

  • Parameters
    • mimeType(optional): MIME type (default = "audio/wav")
  • Returns
    • Blob object

After calling .finish(), all internal data is cleared. You must create a new encoder object to encode another audio data.

encoder.cancel()
  • Parameters
    • (none)
  • Returns
    • (none)

Cancel encoding and clear all internal data.

License

MIT (see LICENSE.txt).