HTML5语音API - 重置结果数组

时间:2014-12-10 13:16:08

标签: javascript html5 voice-recognition

我正在为项目使用HTML5语音API。我在尝试设置结果数组时遇到了麻烦:event.results

我在听'[A-H] [0-9]“INTO”[A-H] [0-9]“GO”'。当我听到“GO”时,我想重置events.result数组。我必须再次监听相同的输入,但无法从event.results数组中删除第一个输入。

我试过了:

event.results = [];
event.results.length = 0;

这些都不起作用。我也查找了API,但我无法找到解决方案。

与我想要做的类似的例子是,如果它正在侦听任何单词序列。但当它听到“取消”这个词时,它会忘记它刚才听到的一切。

我希望这是有道理的,非常感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

似乎结果保存在SpeechRecognitionList中,但我找不到任何操作列表本身的api。 停止和重新启动识别的工作是什么,但如果您不使用https站点,则会出现问题(在普通的http站点上,浏览器在重新启动识别时始终要求权限)。

以下是一个例子:

<html>
<head>
    <title>voice api test</title>
</head>
<body>
    <h1>voice api test</h1>
    <main></main>
    <script>
    (function startRecognizing() {
        var main = document.querySelector('main');
        var recognition = new webkitSpeechRecognition();
        recognition.continuous = true;
        recognition.addEventListener('result', function (event) {
            var lastResult = event.results[event.results.length - 1];
            if (lastResult[0].transcript.indexOf('cancel') > -1) {
                recognition.stop();
                while (main.children.length) main.removeChild(main.children[0]);
                startRecognizing();
            } else {
                var p = document.createElement('p');
                p.appendChild(document.createTextNode(lastResult[0].transcript));
                main.appendChild(p);
            }
        });
        recognition.start();
    }());
    </script>
</body>
</html>