SeemGen/wwwroot/scripts/whisperRecorder.js

37 lines
987 B
JavaScript

let mediaRecorder;
let recordedChunks = [];
let wizardDotNetRef = null;
window.initWizardAudio = (dotnetRef) => {
wizardDotNetRef = dotnetRef;
};
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);
if (wizardDotNetRef) {
wizardDotNetRef.invokeMethodAsync('SendAudioToServer', Array.from(byteArray));
}
};
mediaRecorder.start();
};
window.stopRecording = () => {
mediaRecorder.stop();
};