Spaces:
No application file
No application file
| const startBtn = document.getElementById("startBtn"); | |
| const stopBtn = document.getElementById("stopBtn"); | |
| const transcript = document.getElementById("transcript"); | |
| // const fetch = require('node-fetch'); | |
| console.log("script.js is running"); | |
| let recognition; // Speech recognition object | |
| let accumulatedTranscript = ""; // Store accumulated text | |
| startBtn.addEventListener("click", () => { | |
| recognition = new webkitSpeechRecognition(); | |
| // Set language, interim results (optional), continuous mode, and confidence threshold | |
| recognition.lang = "en-US"; // "hi-IN" for Hindi | |
| recognition.interimResults = false; // Disable interim results to avoid excessive repetition | |
| recognition.continuous = true; | |
| recognition.maxAlternatives = 1; | |
| recognition.start(); | |
| startBtn.disabled = true; // Disable start button while recording | |
| stopBtn.disabled = false; // Enable stop button | |
| recognition.onresult = (event) => { | |
| let text = ""; | |
| for (let i = event.resultIndex; i < event.results.length; ++i) { | |
| if (event.results[i][0].confidence > 0.8) { // Filter based on confidence | |
| text += event.results[i][0].transcript; | |
| } | |
| } | |
| // Append the new text to the existing transcript, avoiding excessive repetition | |
| if (text !== accumulatedTranscript.slice(-text.length)) { | |
| accumulatedTranscript += text; | |
| transcript.value = accumulatedTranscript.trim(); | |
| } | |
| }; | |
| }); | |
| stopBtn.addEventListener("click", () => { | |
| recognition.stop(); | |
| startBtn.disabled = false; // Enable start button | |
| stopBtn.disabled = true; // Disable stop button | |
| console.log(transcript.value); | |
| var formattedText = formatText(transcript.value); | |
| console.log(formattedText); | |
| transcript.value = formattedText; | |
| }); | |
| function formatText(rawText) { | |
| // Add a space after each period if there isn't one already | |
| rawText = rawText.replace(/\./g, '. '); | |
| // Capitalize the first letter of the text | |
| rawText = rawText.charAt(0).toUpperCase() + rawText.slice(1); | |
| // Ensure there is a period at the end of the text | |
| if (!rawText.endsWith('.')) { | |
| rawText += '.'; | |
| } | |
| return rawText; | |
| } | |
| console.log("punctuate is running"); | |
| async function addPunctuation(text) { | |
| const response = await fetch('http://bark.phon.ioc.ee/punctuator/', { | |
| method: 'POST', | |
| body: `text=${encodeURIComponent(text)}`, | |
| headers: { | |
| 'Content-Type': 'application/x-www-form-urlencoded' | |
| } | |
| }); | |
| if (response.ok) { | |
| const punctuatedText = await response.text(); | |
| console.log(punctuatedText); | |
| console.log(response); | |
| return punctuatedText; | |
| } else { | |
| throw formatText(text) | |
| // new Error('Failed to punctuate text'); | |
| } | |
| }; |