Reconhecimento de fala

O software de reconhecimento de fala está se tornando cada vez mais importante; começou (para mim) com a Siri no iOS, depois com o Echo da Amazon, depois com minha nova Apple TV e assim por diante. O reconhecimento de fala é muito útil não apenas para nós, superstars da tecnologia, mas também para as pessoas que querem trabalhar “com as mãos livres” ou apenas querem a conveniência de gritar ordens a qualquer momento. A tecnologia do navegador às vezes fica atrás da tecnologia nativa, mas não para o reconhecimento de fala: a tecnologia no navegador hoje e é hora de usá-la: o SpeechRecognition (Reconhecimento de fala) API.




SpeechRecognition


Por mais avançado que seja o conceito de reconhecimento de fala, a API para usá-lo é bastante simples:



var recognition = new (window.SpeechRecognition || window.webkitSpeechRecognition || window.mozSpeechRecognition || window.msSpeechRecognition)();
recognition.lang = 'en-US';
recognition.interimResults = false;
recognition.maxAlternatives = 5;
recognition.start();

recognition.onresult = function(event) {
    console.log('You said: ', event.results[0][0].transcript);
};


A primeira partida será no event.results[0][0].transcript o senhor também pode definir o número de alternativas, caso o que esteja procurando possa ser ambíguo.


O senhor pode até mesmo adicionar seus próprios termos usando o SpeechGrammarList :



var grammar="#JSGF V1.0; grammar colors; public  = aqua | azure | beige ... ;"
var recognition = new SpeechRecognition();
var speechRecognitionList = new SpeechGrammarList();
speechRecognitionList.addFromString(grammar, 1);
recognition.grammars = speechRecognitionList;


Há vários eventos emitidos durante o processo de reconhecimento de fala, portanto, o senhor pode usar o seguinte trecho para acompanhar a linha do tempo do evento:



[
 'onaudiostart',
 'onaudioend',
 'onend',
 'onerror',
 'onnomatch',
 'onresult',
 'onsoundstart',
 'onsoundend',
 'onspeechend',
 'onstart'
].forEach(function(eventName) {
    recognition[eventName] = function(e) {
        console.log(eventName, e);
    };
});


Algumas ressalvas sobre o uso do reconhecimento de fala:

  • O Chrome encerra o ouvinte após um determinado período de tempo, portanto, o senhor precisará se conectar ao end para reiniciar o ouvinte de fala
  • Se o senhor tiver várias guias usando a API do ouvinte de fala, o ouvinte poderá terminar rapidamente

annyang!


O excelente annyang fornece uma API simples para ouvir os comandos desejados, tudo em um pacote incrível de 2 KB. A seguir, um exemplo de uso da annyang:



// Let's define our first command. First the text we expect, and then the function it should call
var commands = {
    'play video': function() {
        document.querySelector('video').play();
    },
    'pause video': function() {
        document.querySelector('video').pause();
    }
    '* video': function(word) {
        if(word === 'play') {
            document.querySelector('video').play();
        }
        else if(word === 'pause' || word === 'stop') {
            document.querySelector('video').pause();
        }
    }
};

// Add our commands to annyang
annyang.addCommands(commands);

// Start listening. You can call this here, or attach this call to an event, button, etc.
annyang.start();


Observe que, além de poder fornecer uma frase exata para ouvir, o senhor também pode fornecer uma string curinga; a string curinga é útil nos casos em que o senhor deseja prefixar os comandos, como se dissesse “Siri: (instruções)” ou “Echo: (instruções)”.




É muito legal que o reconhecimento de fala esteja disponível no navegador atualmente. Se o senhor quiser ver uma aplicação incrível desse recurso, confira a incrível demonstração de Kevin Ngo, do Mozilla VR: Reconhecimento de fala + A-Frame VR + Spotify. O senhor pode até usar essa API para ouvir “wtf” quando alguém revisa seu código! Reserve algum tempo para brincar com essa API e criar algo inovador!