我正在为项目使用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,但我无法找到解决方案。
与我想要做的类似的例子是,如果它正在侦听任何单词序列。但当它听到“取消”这个词时,它会忘记它刚才听到的一切。
我希望这是有道理的,非常感谢任何帮助。
答案 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>