1

我正在为 Chrome 使用 Google 的 Javascript SDK 语音识别 (webkitSpeechRecognition),我会在其中自动打开该recognition过程,然后它将用户所说的任何内容提交到我的应用程序提交表单中的以下事件:

            recognition.onend = function(){}

问题是它需要很长时间onend才能到达。

我尝试使用onspeechendoronsoundend但它会与onend.

我需要一些能在对方说完话后立即触发的东西,或者之后不久就会触发的东西。

任何人都可以推荐我在这个 JS SDK 中缺少的设置或解决方案吗?

谢谢!

4

1 回答 1

3

如果您不想等到浏览器检测到用户停止说话,由于背景噪音可能需要几秒钟,您可以尝试使用部分(中间)结果:

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

recognition.onresult = function(event) {
    var interim_transcript = '';
    for (var i = event.resultIndex; i < event.results.length; ++i) {
      if (event.results[i].isFinal) {
        final_transcript += event.results[i][0].transcript;
      } else {
        interim_transcript += event.results[i][0].transcript;
      }
    }

     document.querySelector('input').value = interim_transcript;  
  };

document.querySelector('button').addEventListener('click', function(){
    recognition.start();  
});

http://jsfiddle.net/2o1xjtud/

这是摘自https://github.com/GoogleChrome/webplatform-samples/blob/master/webspeechdemo/webspeechdemo.html

于 2015-04-10T11:36:46.857 回答