SeemGen/wwwroot/scripts/whisperRecorder.js

31 lines
870 B
JavaScript

let mediaRecorder;
let recordedChunks = [];
window.startRecording = async () => {
recordedChunks = [];
console.log("startRecording called");
const stream = await navigator.mediaDevices.getUserMedia({ audio: true });
mediaRecorder = new MediaRecorder(stream);
mediaRecorder.ondataavailable = (event) => {
if (event.data.size > 0) {
recordedChunks.push(event.data);
}
};
mediaRecorder.onstop = async () => {
const blob = new Blob(recordedChunks, { type: 'audio/webm' });
const arrayBuffer = await blob.arrayBuffer();
const byteArray = new Uint8Array(arrayBuffer);
// Send to Blazor server
DotNet.invokeMethodAsync('BLAIzor', 'SendAudioToServer', Array.from(byteArray));
};
mediaRecorder.start();
};
window.stopRecording = () => {
mediaRecorder.stop();
};