我正在尝试使用HTML5 Web Speech API的语音识别。
我无法弄清楚为什么这段代码不起作用。它触发了请求访问麦克风的权限,但是当我说话时,没有任何内容被转录。
当我查看控制台时,没有错误,但触发语音识别时发生的console.log。
我认为它过早地停止了。
有谁知道发生了什么以及它为什么不起作用?
这是JS:
它取决于webspeech.js,它包含在jsfiddle中。
这是JS小提琴:http://jsfiddle.net/2sMXZ/3/
以下是实施代码:
var reco = new WebSpeechRecognition;
$('#mic').click(function(){
$(this).toggleClass('red');
reco.toggleStartStop();
});
var interim_transcript = '';
reco.recognition.onresult = function(event){
for(var i = event.resultIndex; i<event.results.length; ++i){
if(event.results[i].isFinal) reco.stop();
else interim_transcript += event.results[i][0].transcript;
}
}
$('#interim_span').html(interim_transcript);
console.log(interim_transcript);
reco.recognition.onend = function(e){
//$('#mic').removeClass('red');
console.log('done');
}
答案 0 :(得分:1)
首先,每个中间结果都会调用$('#interim_span')。html(interim_transcript)。
其次,当event.results [i] .isFinal为true时,它也有结果。
尝试
var reco = new WebSpeechRecognition;
$('#mic').click(function(){
$(this).toggleClass('red');
reco.toggleStartStop();
});
var interim_transcript = '';
reco.recognition.onresult = function(event){
for(var i = event.resultIndex; i<event.results.length; ++i){
if(event.results[i].isFinal) reco.stop();
interim_transcript += event.results[i][0].transcript;
}
$('#interim_span').html(interim_transcript);
console.log(interim_transcript);
}
reco.recognition.onend = function(e){
//$('#mic').removeClass('red');
console.log('done');
}