krishna195 commited on
Commit
64745dd
·
verified ·
1 Parent(s): ef18fab

Update script.js

Browse files
Files changed (1) hide show
  1. script.js +57 -18
script.js CHANGED
@@ -1,23 +1,62 @@
1
- async function transcribe() {
2
- let fileInput = document.getElementById('audioInput').files[0];
3
- if (!fileInput) {
4
- alert("Please upload an audio file");
5
- return;
6
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
7
 
8
- let reader = new FileReader();
9
- reader.readAsDataURL(fileInput);
10
- reader.onload = async function () {
11
- let audioURL = reader.result;
 
 
 
12
 
13
- // Load the Whisper model
14
- let transcriber = await window.Transformers.pipeline(
15
- 'automatic-speech-recognition',
16
- 'Xenova/whisper-tiny.en'
17
- );
18
 
19
- // Perform transcription
20
- let output = await transcriber(audioURL);
21
- document.getElementById('output').innerText = output.text;
22
  };
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
23
  }
 
 
 
 
 
 
 
 
 
 
1
+ let mediaRecorder;
2
+ let audioChunks = [];
3
+ let recording = false;
4
+
5
+ // Function to start recording
6
+ async function startRecording() {
7
+ let stream = await navigator.mediaDevices.getUserMedia({ audio: true });
8
+ mediaRecorder = new MediaRecorder(stream);
9
+
10
+ mediaRecorder.ondataavailable = (event) => {
11
+ audioChunks.push(event.data);
12
+ };
13
+
14
+ mediaRecorder.onstop = async () => {
15
+ let audioBlob = new Blob(audioChunks, { type: 'audio/wav' });
16
+ let reader = new FileReader();
17
+
18
+ reader.onloadend = async () => {
19
+ let audioURL = reader.result;
20
 
21
+ document.getElementById("status").innerText = "Processing...";
22
+
23
+ // Load Whisper model
24
+ let transcriber = await window.Transformers.pipeline(
25
+ 'automatic-speech-recognition',
26
+ 'Xenova/whisper-tiny.en'
27
+ );
28
 
29
+ // Transcribe audio
30
+ let output = await transcriber(audioURL);
31
+ document.getElementById("output").innerText = output.text;
32
+ document.getElementById("status").innerText = "Done!";
33
+ };
34
 
35
+ reader.readAsDataURL(audioBlob);
 
 
36
  };
37
+
38
+ mediaRecorder.start();
39
+ audioChunks = [];
40
+ recording = true;
41
+ document.getElementById("recordButton").innerText = "⏹ Stop Recording";
42
+ document.getElementById("status").innerText = "Recording...";
43
+ }
44
+
45
+ // Function to stop recording
46
+ function stopRecording() {
47
+ if (mediaRecorder && recording) {
48
+ mediaRecorder.stop();
49
+ recording = false;
50
+ document.getElementById("recordButton").innerText = "🎤 Start Recording";
51
+ document.getElementById("status").innerText = "Processing...";
52
+ }
53
  }
54
+
55
+ // Toggle recording
56
+ document.getElementById("recordButton").addEventListener("click", () => {
57
+ if (!recording) {
58
+ startRecording();
59
+ } else {
60
+ stopRecording();
61
+ }
62
+ });