【问题标题】:Chrome's webkitSpeechRecognition ends randomlyChrome 的 webkitSpeechRecognition 随机结束
【发布时间】:2016-11-07 21:21:06
【问题描述】:

我正在使用Web Speech API 在我的网页上捕获语音命令,但识别器会在一段时间后结束(它停止侦听并触发 onend 事件)。

为什么会这样?我可以预防吗?

这里是拥有语音识别页面(40 行)并重现错误所需的所有代码。当识别器停止监听时,它会提示“结束”。

<h1>Voice Recognizer</h1>

<script>

if (!('webkitSpeechRecognition' in window)) {
    alert('Your browser does not support speech recognition.');
} else {
    var recognition = new webkitSpeechRecognition();

    recognition.continuous = true;
    recognition.interimResults = true;

    recognition.onstart = function() {
        console.log('started');
    }

    recognition.onresult = function() { 
        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;
            }
        }

        console.log('interim result:', interim_transcript);
        console.log('final reuslt:', final_transcript);
    }

    recognition.onerror = function() { alert('error'); }

    recognition.onend = function() { alert('end'); }

    function startListening(e){
        final_transcript = '';
        recognition.start();
    }

    startListening();
}

</script>

【问题讨论】:

    标签: google-chrome webkit speech-recognition


    【解决方案1】:

    Google 会尝试限制处理的数据量,因为它会加载他们的服务器。语音识别结束后重启语音识别或使用一些离线处理,如Pocketsphinx.JS

    【讨论】:

      【解决方案2】:

      首先google目前已经给出了60秒的录音时间,而且听力效率很高,所以建议你提高口语速度。如果您的演讲时间超过 60 秒,那么 webkit 将触发 onspeechend() 函数,从而导致您的代码停止。无论哪种方式,如果您可以为 onspeechend() 编写自己的触发器并再次从内部调用您的函数,那么它应该适合您,因为它将启动一个新实例并继续您的文本,除非您清除它。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-02-06
        • 2013-04-22
        • 2023-01-26
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多