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(); };