JSFiddle - React, Tailwind, and code Playground

HTML

<script src="https://d.vidya.io/virtualclass/src/resampler.js"></script>
<script src="https://d.vidya.io/virtualclass/src/g711.js"></script>
Audio Test
See console.log and memory view in timeline.

JavaScript

var resampler = new Resampler(44100, 8000, 1, 4096);
if (!navigator.getUserMedia)
        navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia ||
                      navigator.mozGetUserMedia || navigator.msGetUserMedia;

if (navigator.getUserMedia){
    navigator.getUserMedia({audio:true}, success, function(e) {
    alert('Error capturing audio.');
    });
} else alert('getUserMedia not supported in this browser.');


function success(e){
    var audioContext = window.AudioContext || window.webkitAudioContext || window.mozAudioContext;
    var context = new audioContext();
    context.createAnalyser();

    var audioInput = context.createMediaStreamSource(e);
    var bufferSize = 16384;

    var audio = context.createScriptProcessor(bufferSize, 1, 1);

    audio.onaudioprocess = recorderProcess.bind(audio);

    audioInput.connect(audio);
    audio.connect(context.destination);
}

recorderProcess = function (e) {
    var left = e.inputBuffer.getChannelData(0);
    var samples = resampler.resampler(left);

    var leftSix = convertFloat32ToInt16(samples);

    var send = G711.encode(leftSix, {
        alaw: this.encMode == "alaw" ? true : false
    }); 

    console.log(send.length);
}

    function convertFloat32ToInt16(buffer) {
        l = buffer.length;
        buf = new Int16Array(l);
        while (l--) {
          buf[l] = Math.min(1, buffer[l])*0x7FFF;
        }
        return buf;
    }