krishna195 commited on
Commit
690a40d
Β·
verified Β·
1 Parent(s): 7d66de5

Update script.js

Browse files
Files changed (1) hide show
  1. script.js +42 -16
script.js CHANGED
@@ -1,24 +1,47 @@
 
 
1
  let mediaRecorder;
2
  let audioChunks = [];
3
- let recording = false;
4
- let transcriber;
5
 
6
- // Function to load the model
7
  async function loadModel() {
8
  document.getElementById("modelStatus").innerText = "⏳ Loading Whisper model...";
9
-
10
- transcriber = await window.Transformers.pipeline(
11
- 'automatic-speech-recognition',
12
- 'Xenova/whisper-tiny.en'
13
- );
 
 
 
 
14
 
15
- document.getElementById("modelStatus").innerText = "βœ… Model loaded!";
16
- document.getElementById("recordButton").innerText = "🎀 Start Recording";
17
- document.getElementById("recordButton").disabled = false;
18
- document.getElementById("status").innerText = "Press the button to record.";
 
 
 
 
 
19
  }
20
 
21
- // Function to start recording
 
 
 
 
 
 
 
 
 
 
 
 
 
 
22
  async function startRecording() {
23
  let stream = await navigator.mediaDevices.getUserMedia({ audio: true });
24
  mediaRecorder = new MediaRecorder(stream);
@@ -41,6 +64,7 @@ async function startRecording() {
41
  document.getElementById("status").innerText = "βœ… Done!";
42
  } catch (error) {
43
  document.getElementById("status").innerText = "❌ Error during transcription.";
 
44
  console.error(error);
45
  }
46
  };
@@ -55,7 +79,7 @@ async function startRecording() {
55
  document.getElementById("status").innerText = "πŸŽ™οΈ Recording...";
56
  }
57
 
58
- // Function to stop recording
59
  function stopRecording() {
60
  if (mediaRecorder && recording) {
61
  mediaRecorder.stop();
@@ -65,7 +89,7 @@ function stopRecording() {
65
  }
66
  }
67
 
68
- // Toggle recording
69
  document.getElementById("recordButton").addEventListener("click", () => {
70
  if (!recording) {
71
  startRecording();
@@ -74,5 +98,7 @@ document.getElementById("recordButton").addEventListener("click", () => {
74
  }
75
  });
76
 
77
- // Load the model on page load
 
 
78
  loadModel();
 
1
+ let transcriber;
2
+ let recording = false;
3
  let mediaRecorder;
4
  let audioChunks = [];
 
 
5
 
6
+ // Function to Load Model
7
  async function loadModel() {
8
  document.getElementById("modelStatus").innerText = "⏳ Loading Whisper model...";
9
+ try {
10
+ const timeout = new Promise((_, reject) =>
11
+ setTimeout(() => reject(new Error("Model took too long to load!")), 60000) // 60s timeout
12
+ );
13
+
14
+ transcriber = await Promise.race([
15
+ window.Transformers.pipeline('automatic-speech-recognition', 'Xenova/whisper-tiny.en'),
16
+ timeout
17
+ ]);
18
 
19
+ document.getElementById("modelStatus").innerText = "βœ… Model Loaded!";
20
+ document.getElementById("recordButton").disabled = false;
21
+ document.getElementById("recordButton").innerText = "🎀 Start Recording";
22
+ document.getElementById("testModel").disabled = false;
23
+ } catch (error) {
24
+ document.getElementById("modelStatus").innerText = "❌ Model failed to load!";
25
+ document.getElementById("error").innerText = error.message;
26
+ console.error("Error loading model:", error);
27
+ }
28
  }
29
 
30
+ // Function to Test Model
31
+ async function testModel() {
32
+ try {
33
+ document.getElementById("status").innerText = "⏳ Running test...";
34
+ let output = await transcriber("https://huggingface.co/datasets/Xenova/transformers.js-docs/resolve/main/jfk.wav");
35
+ document.getElementById("output").innerText = "Test Passed: " + output.text;
36
+ document.getElementById("status").innerText = "βœ… Model Test Passed!";
37
+ } catch (error) {
38
+ document.getElementById("status").innerText = "❌ Model Test Failed!";
39
+ document.getElementById("error").innerText = error.message;
40
+ console.error("Test Error:", error);
41
+ }
42
+ }
43
+
44
+ // Function to Start Recording
45
  async function startRecording() {
46
  let stream = await navigator.mediaDevices.getUserMedia({ audio: true });
47
  mediaRecorder = new MediaRecorder(stream);
 
64
  document.getElementById("status").innerText = "βœ… Done!";
65
  } catch (error) {
66
  document.getElementById("status").innerText = "❌ Error during transcription.";
67
+ document.getElementById("error").innerText = error.message;
68
  console.error(error);
69
  }
70
  };
 
79
  document.getElementById("status").innerText = "πŸŽ™οΈ Recording...";
80
  }
81
 
82
+ // Function to Stop Recording
83
  function stopRecording() {
84
  if (mediaRecorder && recording) {
85
  mediaRecorder.stop();
 
89
  }
90
  }
91
 
92
+ // Attach event listeners
93
  document.getElementById("recordButton").addEventListener("click", () => {
94
  if (!recording) {
95
  startRecording();
 
98
  }
99
  });
100
 
101
+ document.getElementById("testModel").addEventListener("click", testModel);
102
+
103
+ // Load model on page start
104
  loadModel();