docs.rodeo

MDN Web Docs mirror

SpeechRecognition

{{APIRef("Web Speech API")}} 

The SpeechRecognition interface of the Web Speech API is the controller interface for the recognition service; this also handles the {{domxref("SpeechRecognitionEvent")}}  sent from the recognition service.

[!NOTE] On some browsers, like Chrome, using Speech Recognition on a web page involves a server-based recognition engine. Your audio is sent to a web service for recognition processing, so it won’t work offline.

{{InheritanceDiagram}} 

Constructor

Instance properties

SpeechRecognition also inherits properties from its parent interface, {{domxref("EventTarget")}} .

Instance methods

SpeechRecognition also inherits methods from its parent interface, {{domxref("EventTarget")}} .

Events

Listen to these events using addEventListener() or by assigning an event listener to the oneventname property of this interface.

Examples

In our simple Speech color changer example, we create a new SpeechRecognition object instance using the {{domxref("SpeechRecognition.SpeechRecognition", "SpeechRecognition()")}}  constructor, create a new {{domxref("SpeechGrammarList")}} , and set it to be the grammar that will be recognized by the SpeechRecognition instance using the {{domxref("SpeechRecognition.grammars")}}  property.

After some other values have been defined, we then set it so that the recognition service starts when a click event occurs (see {{domxref("SpeechRecognition.start()")}} .) When a result has been successfully recognized, the {{domxref("SpeechRecognition.result_event", "result")}}  event fires, we extract the color that was spoken from the event object, and then set the background color of the {{htmlelement("html")}}  element to that color.

const grammar =
  "#JSGF V1.0; grammar colors; public <color> = aqua | azure | beige | bisque | black | blue | brown | chocolate | coral | crimson | cyan | fuchsia | ghostwhite | gold | goldenrod | gray | green | indigo | ivory | khaki | lavender | lime | linen | magenta | maroon | moccasin | navy | olive | orange | orchid | peru | pink | plum | purple | red | salmon | sienna | silver | snow | tan | teal | thistle | tomato | turquoise | violet | white | yellow ;";
const recognition = new SpeechRecognition();
const speechRecognitionList = new SpeechGrammarList();
speechRecognitionList.addFromString(grammar, 1);
recognition.grammars = speechRecognitionList;
recognition.continuous = false;
recognition.lang = "en-US";
recognition.interimResults = false;
recognition.maxAlternatives = 1;

const diagnostic = document.querySelector(".output");
const bg = document.querySelector("html");

document.body.onclick = () => {
  recognition.start();
  console.log("Ready to receive a color command.");
};

recognition.onresult = (event) => {
  const color = event.results[0][0].transcript;
  diagnostic.textContent = `Result received: ${color}`;
  bg.style.backgroundColor = color;
};

Specifications

{{Specifications}} 

Browser compatibility

{{Compat}} 

See also

In this article

View on MDN