Patrik Rigan
46bde64dc8
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
102 lines
4.8 KiB
JavaScript
102 lines
4.8 KiB
JavaScript
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.');
|
|
}
|
|
}); |