I use the sdk.connection methods to capture audio from the speech to text recognizer. It creates PCM audio that I want to convert into MP3.
This is how connection is initialised:
const con = SpeechSDK.Connection.fromRecognizer(this.recognizer);
      con.messageSent = args => {
        // Only record outbound audio mesages that have data in them.
        if (
          args.message.path === "audio" &&
          args.message.isBinaryMessage &&
          args.message.binaryMessage !== null
        ) {
          this.wavFragments[this.wavFragmentCount++] =
            args.message.binaryMessage;
        }
      };
and this is the wav file build:
let byteCount = 0;
    for (let i = 0; i < this.wavFragmentCount; i++) {
      byteCount += this.wavFragments[i].byteLength;
    }
    // Output array.
    const sentAudio = new Uint8Array(byteCount);
    byteCount = 0;
    for (let i = 0; i < this.wavFragmentCount; i++) {
      sentAudio.set(new Uint8Array(this.wavFragments[i]), byteCount);
      byteCount += this.wavFragments[i].byteLength;
    } // Write the audio back to disk.
    // Set the file size in the wave header:
    const view = new DataView(sentAudio.buffer);
    view.setUint32(4, byteCount, true);
    view.setUint32(40, byteCount, true);
I tried using lamejs to convert 'sentAudio' into MP3.
import {lamejs} from "../../modules/lame.min.js";
const wavBlob = new Blob([sentAudio]);
const reader = new FileReader();
    reader.onload = evt => {
      const audioData = evt.target.result;
      const wav = lamejs.WavHeader.readHeader(new DataView(audioData));
      const mp3enc = new lamejs.Mp3Encoder(1, wav.sampleRate, 128);
      const samples = new Int8Array(audioData, wav.dataOffset, wav.dataLen / 2);
      let mp3Tmp = mp3enc.encodeBuffer(samples); // encode mp3
      // Push encode buffer to mp3Data variable
      const mp3Data = [];
      mp3Data.push(mp3Tmp);
      // Get end part of mp3
      mp3Tmp = mp3enc.flush();
      // Write last data to the output data, too
      // mp3Data contains now the complete mp3Data
      mp3Data.push(mp3Tmp);
      const blob = new Blob(mp3Data, { type: "audio/mp3" });
      this.createDownloadLink(blob, "mp3");
    };
    reader.readAsArrayBuffer(wavBlob);
MP3 Blob is empty or contains inaudible sounds. I have also tried using the 'encodeMP3' method described in this example but it gives the same output.
Any existing solutions to support this mp3 conversion ?
                        
Regarding the issue, please refer to the following code.