我在Chrome上使用谷歌的Javascript SDK语音识别(webkitSpeechRecognition),我会自动打开recognition
进程,然后它会在以下事件中将用户所说的内容提交到我的应用程序的提交表单中:
recognition.onend = function(){}
问题是onend
需要很长时间才能到达。
我尝试使用onspeechend
或onsoundend
,但它会与onend
同时启动。
我需要一种在对方说完后或之后不久就能点燃的东西。
有人能推荐我在这个JS SDK或解决方案中缺少的设置吗?
谢谢!
如果你不想等到浏览器检测到用户停止通话,由于背景噪音可能需要几秒钟的时间,你可以尝试使用部分(临时)结果:
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