Overblog
Suivre ce blog
Administration Créer mon blog
Le blog du CRRIAM

Reconnaissance vocale

21 Octobre 2016, 11:00am

Publié par crriam

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

 

Voir les commentaires

Synthese vocal et reconnaissance vocale 2

21 Octobre 2016, 10:56am

Publié par crriam

Au tout début, j'utliiser la bibliotheque  mesppek mais c'est plus long a charger, la voie et tres haché. Je laisse toujour la possibilité de le faire, mais j'utilise en plus a la place de google translate, l'api google speech.

Je la mets dans le fichier chat. html à la place du code que j'avais fait pour google translate et ça donne ça :

 

// debut parle google speech api
 
{
    textv = reply;
     var u = new SpeechSynthesisUtterance();
     u.text = textv ;
     u.pitch = 1.1;
     u.lang = 'fr-FR';
     u.rate = 1;
     speechSynthesis.speak(u);
 
 
setTimeout(function parles (){parent.gauche.document.getElementById("img").src ="../eg/images/avatarboucheparle.gif"},900);
setTimeout(function finparles (){parent.gauche.document.getElementById("img").src ="../eg/images/avatarbouchefixe.jpg"},affichage*110);
// setTimeout(parent.gauchemilieux.recognition.start(),affichage*210); // relance la recovocal
};
// fin parle google speech api

 

et c'est tout :)

Voir les commentaires

1 2 3 4 5 6 7 8 9 10 20 30 > >>