JavaScript Speech Recognition – Eine Sprachgesteuerte ToDo Liste

js-speech-recognition

Mit der JavaScript Speech Recoginition API lassen sich ziemlich simpel geniale Funktionen umsetzen, die native Apps schnell alt aussehen lassen können. Wie das geht, erfährst Du in diesem Beitrag!

Die JavaScript Speech Recoginition API (oder auch Voice API) bietet uns die Möglichkeit auf das Mikrofon des Besuchers zuzugreifen und die Spracheingaben abzufangen und auszuwerten. Und damit lassen sich einige coole Sachen umsetzen: Das kann bis hin zur eigenen KI gehen! Oder Du baust Dir erstmal Deinen eigenen Amazon Echo (Alexa)? Du hast alle Möglichkeiten. 🙂

Voraussetzungen

Damit man die Speech Recognition API nutzen kann, muss der Browser JavaScript unterstützen, was mittlerweile aber glücklicherweise Standard ist. Wobei es tatsächlich Leute geben soll, die „das böse JavaScript“ blockieren…und dazu auch noch extra Add-Ons installieren. ?

Außerdem muss der Besucher einmalig der Mikrofon-Verwendung zustimmen. Dazu erscheint ein entsprechendes Pop-Up, welches ja nach Betriebssystem und Browser unterschiedlich aussehen kann. Man kann aber auch in den Browsereinstellungen die generelle Verwendung des Mikrofons auf allen Websites erlauben.

Pop-Up Beispiel unter Chrome auf Android Smartphone
Pop-Up Beispiel unter Chrome auf Android Smartphone

So verwendest Du die Speech Recognition API

Zu Beginn legen wir die für uns nutzbare Schnittstelle fest. Das müssen wir machen, da nicht alle Browser diese Funktion untersützten. Den aktuellen Status zur Browserunterstützung findest Du bei Can I use.

window.SpeechRecognition = window.SpeechRecognition || window.webkitSpeechRecognition;

Nun erzeugen wir eine Instanz der SpeechRecognition Klasse. Den Parameter interimResults setzen wir auf true, damit wir Texteingaben auch während der Eingabe abrufen können und nicht erst, wenn die API das Ende der Spracheingabe erkannt hat. Dadurch können wir schon Auswertung vornehmen, obwohl der Satz nicht mal fertig gesprochen wurde.

Außerdem legen wir über den Parameter lang die Sprache fest.

Alle Events und Parameter kannst Du auch direkt in der Web Speech API Dokumentation nachlesen.

// setup SpeechRecognation
const recognition = new SpeechRecognition();
recognition.interimResults = true;
recognition.lang = 'en-US';

Damit ist alles vorbereitet und wir können anfangen auf Spracheingaben zu warten und diese auszuwerten. Das result Event wird ausgelöst, wenn die API eine vollständige Eingabe erkannt hat, also wenn der Nutzer z.B. seinen Satz beendet hat und eine Pause macht.

In der transcript Variable finden wir dann das Ergebnis. In Zeile 6 wird durch den Boolean isFinal nochmals geprüft, ob die Eingabe beendet wurde.

Optional habe ich ab Zeile 10 eine Abfrage eingebaut, um zu prüfen, ob eine Eingabe mit einem bestimmten Wort beginnt. Die anschließende Demo habe ich nach dem gleichen Prinzip aufgebaut.

// waiting for speech results
recognition.addEventListener('result', event => {
  const transcript = event.results[0][0].transcript;
      
  // check if the voice input has ended
  if(event.results[0].isFinal) {
    console.log(transcript);
    
    // check if the input starts with 'hello'
    if(transcript.indexOf('hello') == 0) {
      console.log('You said hello to somebody.');
    }
  }
});

Als letztes starten wir die Spracheingabe über die .start() Funktion und rufen diese ebenfalls auf, wenn eine Eingabe beendet ist. Damit erreichen wir, dass die Speech Recognition API „dauerhaft“ zuhört.

recognition.addEventListener('end', recognition.start);
recognition.start();

Das kannst Du beliebig umbauen, dass das Zuhören z.B. beim Klick auf einen Button gestartet wird – je nach dem was Du vorhast.

Beispiel: Sprachgesteuerte ToDo Liste

Ich habe auch ein wenig mit der Speech Recognition API rumprobiert und habe eine sprachgesteuerte ToDo Liste damit erstellt. Nach dem gleichen Prinzip kannst Du auch Deine eigene Sprachsteuerung aufbauen. Probier’s ruhig mal selber aus – Du benötigst gar nicht so viel Code wie Du im ersten Moment vielleicht denkst!

Fazit

Ich selber bin ein großer Fan von reinen Webanwendungen und benötige generell wenig native Apps. Die Speech Recognition API kann dazu einen großen Beitrag leisten. Dabei ist die Umsetzung – wie Du gesehen hast – sehr einfach. Welche coole Funktion willst Du mit damit umsetzen? Schreib’s gern in die Kommentare. 🙂

Ähnliche Beiträge
Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

bold italic underline strikeThrough
insertOrderedList insertUnorderedList outdent indent
removeFormat
createLink unlink
code

Das könnte dich auch interessieren