Web语音识别代码不转录语音

时间:2014-04-03 19:29:47

标签: javascript html5 speech-recognition speech-to-text

我正在尝试使用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');
}

1 个答案:

答案 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');
}