繁体   English   中英

发布修改Web Speech API的问题?

[英]Issue To Modify Web Speech API?

感谢Matthew Terentjev的出色工作, 在这里我们可以使用Articulate Storyline中的javascript在线进行语音识别。 下面的代码是通过按钮触发的。 它简单干净,这让我更困惑,我尝试做一些修改,其中两个让我觉得自己是人生的大失败:(

1)第一个是即使您添加以下代码:

Identification.continuous = true;

...当用户讲话时暂停时,识别不会继续。 即使我将这部分更改为:

recognition.onspeechend = function() {
recognition.start(); // I changed this line from recognition.stop(); 
console.log('Speech ended!');
}

2)我没有成功尝试的另一件事是:每次用户单击以开始新的识别时,最后识别的文本应消失(不是用户开始讲话时而是单击按钮时)。 在过去的24小时内,我一直在寻找解决方案,但没有成功。

Storyline项目中有一个按钮可以触发代码。 以及附加到文本框的变量,该文本框负责显示名为SpeechReceived的用户的结果。

这是代码:

  var SpeechRecognition = SpeechRecognition || webkitSpeechRecognition;
  var SpeechGrammarList = SpeechGrammarList || webkitSpeechGrammarList;
  var SpeechRecognitionEvent = SpeechRecognitionEvent || webkitSpeechRecognitionEvent;

  var recognition = new SpeechRecognition();
  var speechRecognitionList = new SpeechGrammarList();
  recognition.grammars = speechRecognitionList;
  recognition.lang = 'en-GB';
  recognition.interimResults = false;
  recognition.maxAlternatives = 1;

  recognition.start();

  recognition.onresult = function(event) {

    var speechResult = event.results[0][0].transcript;
 //return speech and change storyline variable with a result
    var player = GetPlayer();
    player.SetVar("SpeechReceived",speechResult);  
    console.log('Confidence: ' + event.results[0][0].confidence);
  }

  recognition.onspeechend = function() {
    recognition.stop();
    console.log('Speech ended!');
  }

  recognition.onerror = function(event) {
 console.log('Error occurred in recognition: ' + event.error);
  }

  recognition.onaudiostart = function(event) {
      //Fired when the user agent has started to capture audio.
      console.log('SpeechRecognition.onaudiostart');
  }

  recognition.onaudioend = function(event) {
      //Fired when the user agent has finished capturing audio.
      console.log('SpeechRecognition.onaudioend');
  }

  recognition.onend = function(event) {
      //Fired when the speech recognition service has disconnected.
      console.log('SpeechRecognition.onend');
  }

  recognition.onnomatch = function(event) {
      //Fired when the speech recognition can't recognise speech
      console.log('SpeechRecognition.onnomatch');
  }

  recognition.onsoundstart = function(event) {
      //Fired when any sound — recognisable speech or not — has been detected.
      console.log('SpeechRecognition.onsoundstart');
  }

  recognition.onsoundend = function(event) {
      //Fired when no sound present
      console.log('SpeechRecognition.onsoundend');
  }

  recognition.onspeechstart = function (event) {
      //Fired when speech starts
      console.log('SpeechRecognition.onspeechstart');
  }
  recognition.onstart = function(event) {
      //Fired when the speech recognition service has begun listening
      console.log('SpeechRecognition.onstart');
  }

在第一个代码示例中,您可能不希望使用recognition.stop() 并听取result而不是speechend 您可以将结果拼接在一起,以获取完整内容。

对于第一个问题,不要使用onspeechend,而要使用onend继续收听

recognition.onend = function(event) {
  recognition.start();
  console.log('SpeechRecognition.onend');
}

这将使麦克风不断收听。

至于第二个问题,我不知道。 希望这至少对第一个问题有所帮助!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM