Spaces:
Sleeping
Sleeping
File size: 1,977 Bytes
04b36f0 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
let isRecording = false;
let mediaRecorder;
let recordedChunks = [];
document.getElementById('recordButton').addEventListener('click', async function () {
if (!isRecording) {
startRecording();
} else {
stopRecording();
}
});
function startRecording() {
navigator.mediaDevices.getUserMedia({ audio: true })
.then(function (stream) {
mediaRecorder = new MediaRecorder(stream);
mediaRecorder.start();
mediaRecorder.ondataavailable = function (e) {
recordedChunks.push(e.data);
};
document.getElementById('recordButton').textContent = 'Stop';
document.getElementById('recordStatus').textContent = 'Recording...';
isRecording = true;
})
.catch(function (err) {
console.log('The following error occurred: ' + err);
});
}
function stopRecording() {
mediaRecorder.stop();
mediaRecorder.onstop = function () {
const blob = new Blob(recordedChunks, { type: 'audio/webm' });
const audioURL = window.URL.createObjectURL(blob);
recordedChunks = [];
document.getElementById('recordButton').textContent = 'Start';
document.getElementById('recordStatus').textContent = 'Tap to Record';
document.getElementById('transcribeContainer').style.display = 'block';
document.getElementById('transcribeButton').addEventListener('click', function () {
transcribeAudio(blob);
});
isRecording = false;
};
}
function transcribeAudio(blob) {
const formData = new FormData();
formData.append('audio', blob, 'audio.webm');
fetch('/transcribe', {
method: 'POST',
body: formData
})
.then(response => response.json())
.then(data => {
document.getElementById('output').textContent = data.transcription;
})
.catch(error => {
console.error('Error:', error);
});
}
|