Nahrát soubory do „Script_Speech_recognition“

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
This commit is contained in:
Patrik Rigan 2024-10-21 08:16:30 +00:00
commit 46bde64dc8
3 changed files with 146 additions and 0 deletions

View File

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

View File

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

View File

@ -0,0 +1,36 @@
<!DOCTYPE html>
<html lang="sk">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<title>Jednoduchý Prekladač</title>
<link rel="stylesheet" href="progress_bar.css">
<style>
</style>
</head>
<body>
<h1>Jednoduchý Prekladač s Rozpoznávaním Reči</h1>
<div class="container">
<!-- Textové pole na zadanie textu -->
<textarea id="inputText" placeholder="Enter text"></textarea>
<!-- Textové pole pre preklad -->
<textarea id="translatedText" placeholder="Translation"></textarea>
</div>
<!-- Tlačidlo pre mikrofón -->
<br>
<button id="startBtn">🎤</button>
<div id="timerDisplay"></div>
<p id="statusText"></p>
<!-- Pripojenie skriptov -->
<script src="kontrola_api.js"></script>
<script src="speech_recognition.js"></script>
</body>
</html>