Comment tester localement son microphone avec javascript et chrome ?

Published: 28 mars 2019

DMCA.com Protection Status

Un exemple de comment tester localement son microphone avec javascript et chrome:

L'objectif de départ était de pourvoir tester localement une application basée sur javascript utilisant le microphone pour reconnaitre du texte a partir de la voix (speech recognition). Le problème est qu'il n'est pas possible d'utiliser localement son microphone avec chrome directement, car il faut utiliser le https pour pouvoir utiliser le microphone. On va presenter ici une solution pour pouvoir tester localement son microphone avec javascript et chrome en utilisant python:

Installer openssl et créer un certificat ssl

Tout d'abord il faut installer openssl puis lancer la commande suivante dans le terminal pour créer un certificat ssl (self signed):

> openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365

cette command va demander de rentrer un certains nombres d'informations:

Generating a 2048 bit RSA private key
..............................................................................................+++
.............................................................................................................................+++
writing new private key to 'key.pem'
Enter PEM pass phrase:
Verifying - Enter PEM pass phrase:

le plus important est le "PEM pass phrase", le reste n'est pas important ici. Il faut surtout retenir pour la suite le "PEM pass phrase" que vous avez rentrer (par exemple "hello"). Cette commande va aussi créer deux fichiers key.pem et cert.pem qu'il faut conserver.

Lancer un serveur local avec python

Dans le même répertoire que les fichiers key.pem et cert.pem, créer un script python (nommé par exemple server.py):

import http.server, ssl

server_address = ('localhost', 4443)

httpd = http.server.HTTPServer(server_address, http.server.SimpleHTTPRequestHandler)

httpd.socket = ssl.wrap_socket (
        httpd.socket, 
        keyfile="key.pem", 
        certfile='cert.pem', 
        server_side=True)

httpd.serve_forever()

puis lancer le script (et entrer votre mot passe; qui est "hello" dans notre exemple):

> python server.py
Enter PEM pass phrase:

puis dans Chrome entrer l'adresse url:

https://localhost:4443/

qui affiche la page suivante, il faut alors appuyer sur le bouton "advanced" puis sur "Proceed to localhost"

Comment tester localement son microphone avec javascript et chrome ? Comment tester localement son microphone avec javascript et chrome ?
Comment tester localement son microphone avec javascript et chrome ?

On peut maintenant tester le microphone dans une page html avec du javascript (comme dans l'exemple de la section suivante).

Exemple d'utilisation du microphone dans chrome avec Artyom

Avec Artyom on peut faire de la reconnaissance vocale. Télécharger les fichiers javascript sur la page suivante artyom puis créer une page html utilisant artyom (nommé ici test_artyom.html):

<!DOCTYPE html>
<html lang="en">

<head>
<title>Cooking with artyom.js</title>
<!-- Important to load artyom in the head tag, this give time to load all the voices in the browser -->

<script type="text/javascript" src="artyom-source/artyom.window.js"></script>

</head>

<body>


<div>
<button type="button" onclick="StartArtyomOneCommand();">Start artyom one command</button> <br>
<button type="button" onclick="StopArtyom();">Stop recognition</button>
</div>

<span id='output'></span>


<script>

var Jarvis = new Artyom();

Jarvis.say("Hello !");

var artyom = new Artyom();

// or add some commandsDemostrations in the normal way
artyom.addCommands([
    {
        indexes: ['Hello','Hi','is someone there'],
        action: (i) => {
            artyom.say("Hello, how are you ?");
        }
    },
]);


artyom.redirectRecognizedTextOutput(function(text,isFinal){
    var span = document.getElementById('output');
    if(isFinal){
        span.innerHTML = '';
    }else{
        span.innerHTML = text;  
    }
});


function StartArtyomOneCommand(){
    console.log("One command");
    if(artyom.isRecognizing()){
        return alert("Stop artyom first !");
    }

    //Although the voice can't be changed,
    // You need to set the language for the speech
    // Recognition, see the documentation for more examples
    return artyom.initialize({
        lang:"en-GB",
        debug:true,
        continuous:false,
        listen:true
    });
}

function StartArtyomContinuous(){
    console.log("Continuous commands");
    if(artyom.isRecognizing()){
        return alert("Stop artyom first !");
    }

    // You can create a permanent voice assistant
    // if you want using the continuous mode !
    return artyom.initialize({
        lang:"en-GB",
        debug:true,
        continuous:false,
        listen:true
    });
}

function StopArtyom(){
    artyom.fatality();
}

</script>

</body>

</html>

en cliquant sur le fichier "test_artyom.html" dans chrome on peut alors tester artyom en cliquant ensuite sur le bouton "Start artyom one command" puis dite "Hello" à voix haute (si en retour vous entendez "Hello, how are you ?" l'application marche correctement)

Comment tester localement son microphone avec javascript et chrome ? Comment tester localement son microphone avec javascript et chrome ?
Comment tester localement son microphone avec javascript et chrome ?

Références