TimDang
New Coder
I try to play a streaming audio from webSocket, the data returned about playload is base64 and sequance Number of playload.
I can play the audio with my code but the sound is very bad.
I think my code is the cause of the bad sound, I want the quality of sound better. How can i do? Thank!
I can play the audio with my code but the sound is very bad.
I think my code is the cause of the bad sound, I want the quality of sound better. How can i do? Thank!
JavaScript:
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;
}
});
JavaScript:
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++;
}