Estoy usando un fragmento de código modificado de uno de los ejemplos de mdn. De todos modos, podemos hacer que este código devuelva una de las palabras de las phrases exclusivamente y ninguna otra palabra. Cualquier alternativa también sería apreciada, si esto no es posible.
var SpeechRecognition = SpeechRecognition || webkitSpeechRecognition; var SpeechGrammarList = SpeechGrammarList || webkitSpeechGrammarList; var SpeechRecognitionEvent = SpeechRecognitionEvent || webkitSpeechRecognitionEvent; var resultPara = document.querySelector(".result"); var testBtn = document.querySelector("button"); const phrases = ["dummy phrase"]; function testSpeech() { testBtn.disabled = true; testBtn.textContent = "Listening"; // To ensure case consistency while checking with the returned output text resultPara.textContent = ""; var recognition = new SpeechRecognition(); var speechRecognitionList = new SpeechGrammarList(); phrases.forEach((phrase) => { const grammar = "#JSGF V1.0; grammar phrase; public <phrase> = " + phrase + ";"; speechRecognitionList.addFromString(grammar, 1); }); recognition.grammars = speechRecognitionList; recognition.lang = "en-US"; recognition.interimResults = false; recognition.maxAlternatives = 1; recognition.start(); recognition.onresult = function (event) { var speechResult = event.results[0][0].transcript.toLowerCase(); console.log("Speech received: " + speechResult + "."); resultPara.textContent = speechResult; console.log("Confidence: " + event.results[0][0].confidence); }; recognition.onspeechend = function () { recognition.stop(); testBtn.disabled = false; testBtn.textContent = "Start new test"; }; recognition.onerror = function (event) { testBtn.disabled = false; testBtn.textContent = "Start new test"; console.error("Error occurred in recognition: " + event.error); }; } testBtn.addEventListener("click", testSpeech);