reconnaissance vocale
Reconnaissance vocale
Info, la reconnaissance vocal comme la synthese vocal ne fonctionne qu'avec le navigateur chrome !
Pour la reconnaissance vocal,je suis en recherche, donc ma methode est tatonnante et probablement que je trouverais mieux plus tard, mais en attendant voila :
j'utilise une fois de plus la technologie google et son api webkitSpeechRecognition
Pour ça je vais utiliser la page blank.html, car la blank du sleeping et actualiser chaque fois que le robot parle.
Voila le code complet :
<html>
<head>
<BODY>
<script language="JavaScript">
function submitform()
{
if(parent.droite.document.form1.onsubmit())
{
parent.droite.document.form1.submit();
}
}
</script>
<!-- debut code reconnaissance vocale -->
<script>
var recognition = new webkitSpeechRecognition();
recognition.continuous = true;
recognition.interimResults = true;
recognition.lang = "fr-FR";
recognition.onresult = function (e) {
for (var i = e.resultIndex; i < e.results.length; ++i) {
if (e.results[i].isFinal) {
input1.value = e.results[i][0].transcript;
parent.droite.document.form1.message.value = e.results[i][0].transcript; // envois le resultat de la reco dans l input du tchat
javascript:submitform(); // fait valider l input du tchat
}
}
}
// mettre la ligne ci dessous si on veut ecouter des le lancement de la page web
// recognition.start();
</script>
<form>
<input type="search" id="input1" name="input" size=30>
<input type="button" value="reco vocal" onclick="recognition.start()">
<input type="button" value="stop" onclick="recognition.stop()">
</form>
<!-- ------------------ fin code reconnaissance vocale ---------->
</BODY>
</html>
J'ai observer quelques difficulté lorsque le robot s'entand lui même parler. Pour ça on peut utiliser plusieur pistes pas encore testés.
soit mettre : recognition.continuous = false;
au lieu de true
et relancer a chaque fois la reco avec une instruction soit dans le chat.html avec cette instruction
// setTimeout(parent.gauchemilieux.recognition.start(),affichage*210); // relance la recovocal
Sachant que affichage est la variable qui compte le nombre de mots pour que le temps de lecture correpsonde en gros avec le nombre de mots
(instruction dérivée de celle qui fait bouger la bouche. )
soit dans le rivescript, avec ça par exemple a integrer d'une façon ou d'une autre :
// --------------------------reconnaissance vocal demarrage ---------------
> object recovocal javascript
parent.gauchebas.recognition.start();
var dim = "";
return dim;
< object
+ debut recovocal
- debut reconnaissance vocale <call>recovocal <id></call>
// -------------------------- fin reconnaissance vocal demarrage --------------
// --------------------------reconnaissance vocal arret ---------------
> object finrecovocal javascript
parent.gauchebas.recognition.stop();
// pour eviter le message d erreur de type undefined on mets ca en plus:
var dim = "";
return dim;
< object
+ fin recovocal
- fin reconnaissance vocale <call>finrecovocal <id></call>
// -------------------------- fin reconnaissance vocal arret --------------
instructions rs qui nous permettent de lancer la reconnaissance vocal dans les instructions de demarrage avec
+ demarrage2
- {@debut recovocal} \n demarrage termine
Attention, ça envois evidemment une erreur de code javascript si on n'a pas de page (frame) blank sur le coté qui s'appele gauchebas