-console.log("wassup")
-// Access the permission for use
-// the microphone
-navigator.mediaDevices.getUserMedia({ audio: true })
- .then(function(audio_stream) {
- console.log("hi");
- })
- .catch(function(err) {
- console.log(err.name, err.message);
- });
+let mediaRecorder;
+let audioChunks = [];
+let recordedAudioUrl = "";
+
+const startButton = document.getElementById("btnStart");
+const stopButton = document.getElementById("btnStop");
+const playButton = document.getElementById("btnPlay");
+const audioElement = document.getElementById("audioPlay");
+
+startButton.addEventListener("click", async () => {
+ try {
+ const stream = await navigator.mediaDevices.getUserMedia({ audio: true });
+ mediaRecorder = new MediaRecorder(stream);
+ audioChunks = [];
+
+ mediaRecorder.addEventListener("dataavailable", (event) => {
+ if (event.data.size > 0) {
+ audioChunks.push(event.data);
+ }
+ });
+
+ mediaRecorder.addEventListener("stop", async () => {
+ const audioBlob = new Blob(audioChunks, { type: "audio/ogg" });
+ console.log(await audioBlob.text());
+
+ if (recordedAudioUrl) {
+ URL.revokeObjectURL(recordedAudioUrl);
+ }
+
+ recordedAudioUrl = URL.createObjectURL(audioBlob);
+ console.log(recordedAudioUrl);
+ audioElement.src = recordedAudioUrl;
+ playButton.disabled = false;
+
+ stream.getTracks().forEach((track) => track.stop());
+ });
+
+ mediaRecorder.start();
+ startButton.disabled = true;
+ stopButton.disabled = false;
+ playButton.disabled = true;
+ } catch (error) {
+ console.error("Microphone access failed:", error);
+ }
+});
+
+stopButton.addEventListener("click", () => {
+ if (!mediaRecorder || mediaRecorder.state !== "recording") {
+ return;
+ }
+
+ mediaRecorder.stop();
+ stopButton.disabled = true;
+ startButton.disabled = false;
+});
+
+playButton.addEventListener("click", () => {
+ if (!recordedAudioUrl) {
+ return;
+ }
+
+ audioElement.currentTime = 0;
+ audioElement.play();
+});