使用Webkit语音api进行连续语音识别

时间:2013-06-11 17:06:22

标签: html5 google-chrome webkit speech-recognition

我开始使用此浏览器(Chrome)功能。 我已经基于此编写了一个JS,但问题是甚至,它只识别一次和结束的演讲。它不会持续,我需要一次又一次按下按钮开始语音识别。告诉我应该在哪里调整。我设置“recognition.continuous = true”仍然没有帮助?

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

我从一个按钮叫“start_speech”!多数民众赞成

3 个答案:

答案 0 :(得分:8)

也许是这一行的拼写错误:

recognition.continuos = true;

应该相等:

recognition.continuous = true;

答案 1 :(得分:8)

我知道这是一个老线程,但我也有这个问题。我发现,即使设置了连续标志,如果输入语音中有暂停,则会抛出“无语音”错误(触发onerror事件)并关闭引擎。我只是在一端添加了代码来重启引擎:

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

您可能会遇到的下一个问题是,每次引擎重新启动时,用户都必须重新授予浏览器使用麦克风的权限。目前唯一的解决方案似乎是确保您通过HTTPS连接到您的网站(来源:http://updates.html5rocks.com/2013/01/Voice-Driven-Web-Apps-Introduction-to-the-Web-Speech-API以粗体显示的帖子底部)

答案 2 :(得分:0)

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