Explorar o código

whisper v3, browsersupport

Kolja Beigel hai 1 ano
pai
achega
6d6f51ac78
Modificáronse 2 ficheiros con 36 adicións e 10 borrados
  1. 18 2
      example_browserclient/client.js
  2. 18 8
      example_browserclient/index.html

+ 18 - 2
example_browserclient/client.js

@@ -1,14 +1,30 @@
 let socket = new WebSocket("ws://localhost:9001");
 
+let fullSentences = [];
+
 socket.onmessage = function(event) {
     let data = JSON.parse(event.data);
+    let displayDiv = document.getElementById('textDisplay');
+
     if (data.type === 'realtime') {
-        document.getElementById('realtimeText').value = data.text;
+        displayRealtimeText(data.text, displayDiv);
     } else if (data.type === 'fullSentence') {
-        document.getElementById('fullSentenceText').value = data.text;
+        fullSentences.push(data.text);
+        displayRealtimeText("", displayDiv); // Refresh display with new full sentence
     }
 };
 
+function displayRealtimeText(realtimeText, displayDiv) {
+    let displayedText = fullSentences.map((sentence, index) => {
+        let span = document.createElement('span');
+        span.textContent = sentence + " ";
+        span.className = index % 2 === 0 ? 'yellow' : 'cyan';
+        return span.outerHTML;
+    }).join('') + realtimeText;
+
+    displayDiv.innerHTML = displayedText;
+}
+
 // Request access to the microphone
 navigator.mediaDevices.getUserMedia({ audio: true })
 .then(stream => {

+ 18 - 8
example_browserclient/index.html

@@ -3,16 +3,26 @@
 <head>
     <title>Audio Streamer</title>
     <script src="https://cdn.socket.io/4.0.0/socket.io.min.js"></script>
+    <style>
+        body {
+            background-color: black;
+            color: white;
+            font-family: Arial, sans-serif;
+        }
+        .text-display {
+            white-space: pre-wrap; /* Preserves spaces and line breaks */
+            font-size: 16px;
+        }
+        .yellow {
+            color: yellow;
+        }
+        .cyan {
+            color: cyan;
+        }
+    </style>
 </head>
 <body>
-    <div>
-        <p>Realtime Text:</p>
-        <textarea id="realtimeText" rows="5" cols="50"></textarea>
-    </div>
-    <div>
-        <p>Full Sentence Text (higher transcription quality):</p>
-        <textarea id="fullSentenceText" rows="5" cols="50"></textarea>
-    </div>
+    <div id="textDisplay" class="text-display"></div>
     <script src="client.js"></script>
 </body>
 </html>