My js code records a voice clip, and then sends it to a local flask server to process it with a fetch POST request, however, the page refreshes both when the clip is sent, and again when it's processed completely, which I dont particularly care for, as it makes debugging among other things much harder.
Here is the function which records the audio:
recordButton.onmousedown = e => {
console.log('Recording...');
audioChunks = [];
navigator.mediaDevices.getUserMedia({ audio: true })
.then(stream => {
rec = new MediaRecorder(stream);
rec.ondataavailable = e => {
audioChunks.push(e.data);
if (rec.state == "inactive") {
let blob = new Blob(audioChunks, { type: 'audio/mpeg-3' });
recordedAudio.src = URL.createObjectURL(blob);
inputAudio = recordedAudio.src
recordedAudio.controls = true;
sendData(blob);
}
}
rec.start();
});
};
And here is the function that sends it:
async function sendData(data) {
const formData = new FormData();
formData.append('audio', data);
console.log("audio appended")
fetch('http://127.0.0.1:5000/upload-audio', {
method: 'POST',
body: formData
})
.then(response => response.json())
console.log("audio downloaded")
.then(data => {
console.log(data.response);
// Download audio response file
console.log("audio downloaded")
})
.catch(error => {
console.error('Error:', error);
});
}
Can you please identify what the problem is?
Ive tried using things such as e.prevent default to no success.