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.'); } });