I have a live call system, and backend receives data from Twilio, with payload is base64 string, sequence of payload and send to me via webSocket. The sound could be played but the quality is not good.
I'm not sure about the reason for it, Internet Connection or my code. I want the quality of sound better. How can i do? Thank!
subject.subscribe(async (msg: any) => {
if (msg.event === 'media') {
if ( !this.audioBuffers[msg.streamSid]) {
this.audioBuffers[msg.streamSid] = {
timestamp: '',
phone: '',
buffer: [],
};
tempAudio[msg.streamSid] = {
timestamp: [],
payload: [],
phone: '',
};
}
tempAudio[msg.streamSid].payload[msg.sequenceNumber] =
await this.audio_ctx.decodeAudioData(
this.base64ToBuffer(msg.media)
);
var buffer = tempAudio[msg.streamSid].payload.filter(function (el) {
return el != null;
});
this.audioBuffers[msg.streamSid].buffer = buffer;
}
});
this.audio_ctx.resume()
const gainNode = this.audio_ctx.createGain();
while (current < this.data.length) {
const source = this.audio_ctx.createBufferSource();
source.buffer = this.data[current];
gainNode.gain.value = this.isMute ? 0 : this.volume;
gainNode.connect(this.audio_ctx.destination);
source.connect(gainNode);
const will_stop = new Promise((res) => (source.onended = res));
source.start(0);
await will_stop;
current++;
}
Top comments (0)