JavaScript rozpoznávání řeči

Software pro rozpoznávání řeči je stále důležitější; začalo to (pro mě) se Siri na iOS, pak Amazon Echo, pak moje nová Apple TV a tak dále. Rozpoznávání řeči je tak užitečné nejen pro nás, technické superhvězdy, ale také pro lidi, kteří buď chtějí pracovat s „hands free“ nebo jen chtějí mít pohodlí okamžitého křičení rozkazů. Technologie prohlížečů někdy zaostává za nativní technologií, ale ne v případě rozpoznávání řeči: technologie v prohlížeči dnes a je čas ji použít: rozhraní SpeechRecognition API.

Základní video ukázka

SpeechRecognition

Protože je koncept rozpoznávání řeči pokročilý, jeho použití je poměrně jednoduché:

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);
};

První shoda je na event.results[0][0].transcript cesta; můžete také nastavit počet alternativ pro případ, že by to, co posloucháte, mohlo být nejednoznačné.

Můžete dokonce přidat své vlastní výrazy pomocí SpeechGrammarList objekt:

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;

Během procesu rozpoznávání řeči je vysíláno několik událostí, takže můžete použít následující úryvek ke sledování časové osy události:

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

Několik upozornění ohledně používání rozpoznávání řeči:

  • Chrome ukončí posluchače po určité době, takže se budete muset připojit k end událost pro restartování posluchače řeči
  • Pokud máte více karet využívajících rozhraní API pro naslouchání řeči, může dojít k rychlému ukončení posluchače

annyang!

Vynikající knihovna annyang poskytuje úhledné rozhraní API pro poslech požadovaných příkazů, to vše v úžasném balíčku o velikosti 2 kB. Následuje ukázka použití 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();

Všimněte si, že nejenže můžete zadat přesnou frázi k poslechu, ale můžete také zadat řetězec zástupných znaků; zástupný řetězec je užitečný v případech, kdy chcete svým příkazům přidat předponu, podobně jako když říkáte „Siri:(instrukce)“ nebo „Echo:(instrukce)“.

Základní video ukázka

Je skvělé, že rozpoznávání řeči je dnes k dispozici v prohlížeči. Pokud chcete vidět úžasnou aplikaci této funkce, podívejte se na úžasné demo Kevina Nga od Mozilla VR: Rozpoznávání řeči + A-Frame VR + Spotify. Toto rozhraní API můžete dokonce použít k poslechu „wtf“, když někdo zkontroluje váš kód! Udělejte si čas na hraní s tímto API a vytvořte něco inovativního!