【问题标题】:Web Speech Recognition code not transcribing speech网络语音识别代码不转录语音
【发布时间】:2014-04-04 11:01:39
【问题描述】:

我正在尝试使用 HTML5 Web Speech API 的语音识别。

我无法弄清楚为什么这段代码不起作用。它正在触发请求访问麦克风的权限,但是当我说话时,没有任何内容被转录。

当我查看控制台时,没有错误,但是触发了语音识别停止时发生的console.log。

我认为它过早地停止了。

有谁知道发生了什么以及为什么它不起作用?

这里是 JS:

依赖于 jsfiddle 中包含的 webspeech.js。

这里是 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');
}

【问题讨论】:

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


    【解决方案1】:

    首先,每次发出中间结果时都会调用 $('#interim_span').html(interim_transcript)。

    其次,当 event.results[i].isFinal 为真时,也有结果。

    试试

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

    【讨论】:

    • 非常感谢。我在这里尝试:jsfiddle.net/2sMXZ/11 interim_transcript 最终记录在控制台中,甚至单击#mic,但它没有被写入 interim_span 的 html。知道为什么吗?或者我该如何解决?
    • final_span 和 interim_span 是结果的子级。我认为它们已被 reco.statusText("results");
    • 谢谢,现在它写入跨度,但它是重复的。我怎样才能让它只写一次演讲,就在演讲之后? jsfiddle.net/2sMXZ/14
    • interimResults 已启用。所以你必须在附加transcript之前初始化interim_transcript。我在这里更新了代码:jsfiddle.net/2sMXZ/15
    猜你喜欢
    • 2021-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-18
    • 2011-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多