From 46bde64dc8eb84a04c46a5c4982a793470ba7de7 Mon Sep 17 00:00:00 2001 From: Patrik Rigan Date: Mon, 21 Oct 2024 08:16:30 +0000 Subject: [PATCH] =?UTF-8?q?Nahr=C3=A1t=20soubory=20do=20=E2=80=9EScript=5F?= =?UTF-8?q?Speech=5Frecognition=E2=80=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit script som upravil tak aby tam nebol ziaden progress bar iba timer a nastavil tlacidl;o tak aby sa nam nahravanie vyplo az po opatovnom stlaceni, cize aj po kratkej pauze sa nam text bude zapisovat do okna ktore nasledne dalej budeme spracovavat --- Script_Speech_recognition/kontrola_api.js | 8 ++ .../speech_recognition.js | 102 ++++++++++++++++++ Script_Speech_recognition/stranka.html | 36 +++++++ 3 files changed, 146 insertions(+) create mode 100644 Script_Speech_recognition/kontrola_api.js create mode 100644 Script_Speech_recognition/speech_recognition.js create mode 100644 Script_Speech_recognition/stranka.html diff --git a/Script_Speech_recognition/kontrola_api.js b/Script_Speech_recognition/kontrola_api.js new file mode 100644 index 0000000..35bfbbc --- /dev/null +++ b/Script_Speech_recognition/kontrola_api.js @@ -0,0 +1,8 @@ +// Skontroluj podporu Web Speech API +window.SpeechRecognition = window.SpeechRecognition || window.webkitSpeechRecognition; + +if (!window.SpeechRecognition) { + console.error('Tento prehliadač nepodporuje Web Speech API'); +} else { + console.log('Web Speech API je podporované'); +} \ No newline at end of file diff --git a/Script_Speech_recognition/speech_recognition.js b/Script_Speech_recognition/speech_recognition.js new file mode 100644 index 0000000..c8fdb6e --- /dev/null +++ b/Script_Speech_recognition/speech_recognition.js @@ -0,0 +1,102 @@ +document.addEventListener('DOMContentLoaded', function() { + if ('SpeechRecognition' in window || 'webkitSpeechRecognition' in window) { + const recognition = new (window.SpeechRecognition || window.webkitSpeechRecognition)(); + recognition.lang = 'sk-SK'; // Nastavenie jazyka + recognition.interimResults = true; + recognition.maxAlternatives = 1; + recognition.continuous = true; + + let recognizing = false; // Stavová premenná, či beží rozpoznávanie + let startTime; // Na ukladanie času začiatku nahrávania + let timerInterval; // Interval na časovač + let transcriptHistory = []; // Na dočasné uloženie textových nahrávok + + const startBtn = document.getElementById('startBtn'); + const statusText = document.getElementById('statusText'); + const timerDisplay = document.getElementById('timerDisplay'); // Element pre zobrazovanie času + const inputText = document.getElementById('inputText'); // Textové pole na výsledky + + // Funkcia pre spustenie časovača + function startTimer() { + startTime = Date.now(); + timerInterval = setInterval(() => { + const elapsedTime = Math.floor((Date.now() - startTime) / 1000); + timerDisplay.textContent = `${elapsedTime}s`; // Zobrazenie počtu sekúnd + }, 1000); // Aktualizácia každú sekundu + } + + // Funkcia pre zastavenie časovača + function stopTimer() { + clearInterval(timerInterval); + timerDisplay.textContent = ''; // Vymaže sa čas po zastavení nahrávania + } + + // Po stlačení tlačidla začne alebo zastaví rozpoznávanie reči + startBtn.onclick = () => { + if (!recognizing) { + recognition.start(); + recognizing = true; + console.log('Čaká sa na povolenie mikrofónu...'); + startBtn.textContent = "🛑 Nahrávanie..."; // Zmena textu na "Nahrávanie..." + statusText.textContent = "Nahrávanie prebieha..."; + } else { + recognition.stop(); + recognizing = false; + console.log('Rozpoznávanie reči zastavené'); + startBtn.textContent = "🎤"; // Obnova textu na "Pripravený na nahrávanie" + statusText.textContent = "Nahrávanie ukončené."; + stopTimer(); // Zastavenie časovača + } + }; + + // Spustenie po povolení a začatí rozpoznávania + recognition.onstart = function() { + console.log('Rozpoznávanie reči začalo'); + startTimer(); // Spustenie časovača po začatí nahrávania + statusText.textContent = "Nahrávanie prebieha..."; // Stav počas nahrávania + }; + + // Výsledok rozpoznávania + recognition.onresult = function(event) { + let interimTranscript = ''; // Zmeníme na zobrazenie medzivýsledkov + + for (let i = event.resultIndex; i < event.results.length; i++) { + const transcript = event.results[i][0].transcript; + + // Ak je to medzivýsledok, zobraz ho, ale neulož + if (event.results[i].isFinal) { + transcriptHistory.push(transcript); + inputText.value += transcript + ' '; // Pridanie rozpoznaného textu + } else { + interimTranscript += transcript; + } + } + + // Zobrazenie medzivýsledkov, kým nie sú konečné + inputText.value = transcriptHistory.join(' ') + ' ' + interimTranscript; + }; + + recognition.onend = function() { + // Ak bol mikrofón manuálne zastavený + if (!recognizing) { + recognizing = false; + console.log('Rozpoznávanie reči ukončené'); + stopTimer(); + startBtn.textContent = "🎤"; // Obnova textu + statusText.textContent = "Nahrávanie ukončené."; // Zmena stavu po ukončení + } else { + // Automaticky znovu spustí rozpoznávanie, ak nebolo zastavené manuálne + recognition.start(); + } + } + recognition.onerror = function(event) { + console.error('Chyba pri rozpoznávaní reči:', event.error); + recognizing = false; // V prípade chyby, zastav rozpoznávanie + stopTimer(); // Zastav časovač aj pri chybe + startBtn.textContent = "🎤"; // Obnova textu + statusText.textContent = "Chyba pri nahrávaní. Skúste znova."; // Zobrazenie chyby + }; + } else { + alert('Tento prehliadač nepodporuje rozpoznávanie reči.'); + } +}); \ No newline at end of file diff --git a/Script_Speech_recognition/stranka.html b/Script_Speech_recognition/stranka.html new file mode 100644 index 0000000..dd095e3 --- /dev/null +++ b/Script_Speech_recognition/stranka.html @@ -0,0 +1,36 @@ + + + + + + + Jednoduchý Prekladač + + + + + +

Jednoduchý Prekladač s Rozpoznávaním Reči

+ +
+ + + + + +
+ + +
+ +
+

+ + + + + + + \ No newline at end of file