From c3c34392f76f2d9719b5fbe6cac528412a03f923 Mon Sep 17 00:00:00 2001 From: v4nkor <vanknpix@gmail.com> Date: Mon, 15 May 2023 15:27:07 +0200 Subject: [PATCH] Added WIP scrolling + working random recipe --- js/voice.js | 74 ++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 71 insertions(+), 3 deletions(-) diff --git a/js/voice.js b/js/voice.js index 28159dc..8232b1a 100644 --- a/js/voice.js +++ b/js/voice.js @@ -89,7 +89,7 @@ function listenForCristo(){ console.log('Listened'); var speechResult = event.results[0][0].transcript.toLowerCase(); console.log(speechResult); - heardSpan.innerText += " A entendu = " + speechResult; + heardSpan.innerText = " A entendu = " + speechResult; heardSpan.style.display = ""; voiceSpan.style.display = "none"; console.log('Confidence: ' + event.results[0][0].confidence); @@ -112,7 +112,7 @@ function listenForCristo(){ voiceBtn.textContent = 'Ecouter a nouveau'; diagnosticPara.textContent = 'Error occurred in recognition: ' + event.error; voiceSpan.style.display = "none"; - heardSpan.innerText += " Erreur "; + heardSpan.innerText = " Erreur "; heardSpan.style.display = ""; } recognition.onaudiostart = function(event) { @@ -166,15 +166,17 @@ function listenForCommand(){ console.log('Listened'); var speechResult = event.results[0][0].transcript.toLowerCase(); console.log(speechResult); - heardSpan.innerText += " A entendu = " + speechResult; + heardSpan.innerText = " A entendu = " + speechResult; heardSpan.style.display = ""; voiceSpan.style.display = "none"; console.log('Confidence: ' + event.results[0][0].confidence); if(speechResult.toLowerCase().includes("descend")){ speak("Je vais descendre dans la page"); + pageScrollDown(); } else if(speechResult.toLowerCase().includes("monte")){ speak("Je vais monter dans la page"); + pageScrollUp(); } else if(speechResult.toLowerCase().includes("recette")){ if(speechResult.toLowerCase().includes("précédente")){ @@ -185,6 +187,7 @@ function listenForCommand(){ } else if(speechResult.toLowerCase().includes("aléatoire")){ speak("Voici une recette aleatoire"); + recetteAleatoire(); } } else { @@ -238,6 +241,39 @@ function listenForCommand(){ } } +function listenForStop(){ + var grammar = '#JSGF V1.0; grammar phrase; public <phrase> = stop | arrete;'; + var recognition = new SpeechRecognition(); + var speechRecognitionList = new SpeechGrammarList(); + speechRecognitionList.addFromString(grammar, 1); + recognition.grammars = speechRecognitionList; + recognition.lang = 'fr-FR'; + recognition.interimResults = false; + recognition.maxAlternatives = 1; + recognition.start(); + console.log('Started first listening'); + recognition.onresult = function(event) { + console.log('Listened'); + var speechResult = event.results[0][0].transcript.toLowerCase(); + console.log(speechResult); + heardSpan.innerText += " A entendu = " + speechResult; + heardSpan.style.display = ""; + voiceSpan.style.display = "none"; + console.log('Confidence: ' + event.results[0][0].confidence); + if(speechResult.toLowerCase().includes("stop")){ + speak("Je vais arreter de descendre dans la page"); + return true; + } + else if(speechResult.toLowerCase().includes("arrete")){ + speak("Je vais arreter de descendre dans la page"); + return true; + } + else { + return false; + } + } +} + function speak(text){ if (synth.speaking) { console.error("speechSynthesis.speaking"); @@ -271,6 +307,38 @@ function enableBtn(){ voiceSpan.style.display = "none"; } +function pageScrollDown() { + window.scrollBy(0,1); + if ((window.innerHeight + Math.round(window.scrollY)) >= document.body.offsetHeight) { + speak("Bas de page atteind, j'arrete de descendre"); + } + else{ + scrolldelay = setTimeout(pageScrollDown,5); + } +} + +function pageScrollUp() { + window.scrollBy(0,-1); + if ((window.innerHeight + Math.round(window.scrollY)) <= document.body.offsetHeight) { + speak("Haut de page atteind, j'arrete de monter"); + } + else{ + scrolldelay = setTimeout(pageScrollUp,5); + } +} + +function getRandomInt(max) { + return Math.floor(Math.random() * max); + } + +function recetteAleatoire(){ + let recettes = ["cookie-au-chocolat", "soupe-au-potiron", "pain-perdu", "quiche-lorraine"] + let number = getRandomInt(recettes.length); + url = window.location; + window.location.href = url.origin+'/recette/'+recettes[number]; + +} + function scrollDown(){ } -- GitLab