dineshswamyp
dineshswamyp

Reputation: 71

continous speech recognition with Webkit speech api

i started using this browser(chrome) feature. i ve written a JS based on this , but the problem is even , it recognises the speech only once and ends . its not going continuously, i need to press the button again and again to start speech recognition . tell me where i should tweak . i ve set "recognition.continuous=true" still not helping ?

var recognition = new webkitSpeechRecognition();
recognition.continuous     = true;
recognition.interimResults = true;

recognition.onstart = function() {
  console.log("Recognition started");
};
recognition.onresult = function(event){
  console.log(event.results);
};
recognition.onerror = function(e) {
  console.log("Error");
};

recognition.onend = function() {
  console.log("Speech recognition ended");
};

function start_speech() {
  recognition.lang = 'en-IN'; // 'en-US' works too, as do many others
  recognition.start();
}

I call "start_speech" from a button ! thats it

Upvotes: 7

Views: 9434

Answers (3)

John T
John T

Reputation: 11

recognition.onend = function(){
recognition.start();

// sets off a beep/noise each time it is accessed from a cell phone (Andoid).

// does NOT if accessed from a desktop (Windows using Chrome).
};

Upvotes: 1

ultramoka
ultramoka

Reputation: 326

I know this is an old thread, but I had this problem too. I found that, even with the continuous flag set, if there are pauses in the input speech, a "no-speech" error gets thrown (triggers the onerror event) and the engine is shut down. I just added code in the onend to restart the engine:

recognition.onend = function() {
    recognition.start();
};

The next problem you might get is, every time the engine restarts, the user has to re-grant permission to let the browser use the microphone. The only solution at this time seems to be to make sure you connect to your site over HTTPS (source: http://updates.html5rocks.com/2013/01/Voice-Driven-Web-Apps-Introduction-to-the-Web-Speech-API bottom of post in bold)

Upvotes: 12

Tait Brown
Tait Brown

Reputation: 79

Perhaps the typo on this line:

recognition.continuos = true;

Should equal:

recognition.continuous = true;

Upvotes: 7

Related Questions