我一直在我的应用中使用W3C Speech Synthesizer网页。我喜欢在我说话时开始出现的话。这是因为我希望用户对他们说的当前单词有近乎即时的反馈。目前,规范中的result
事件在等待一段时间后等待追加整个数组。
我已经查看了标准,但我发现它只是等待从结果事件构建最终结果列表:
5.1.3 SpeechRecognition Events
结果事件:语音识别器返回结果时触发
5.1.8 SpeechRecognitionEvent
结果属性:此会话的所有当前识别结果的数组。
我还尝试使用onstart
和onpause
方法检索结果:
recognition = new webkitSpeechRecognition()
recognition.onstart = function (event) {
//append word
};
recognition.onpause = function (event) {
//append word
};
任何人都知道如何实现这一目标"输入"你说话时的效果如何?
另一个问题是,如果用户停止讲话一秒钟,并且编译结果列表(IE,result event
被触发),并且他们再次发言,结果列表不会更新。
即使我设置了recognition.continuous = true;
答案 0 :(得分:0)
从Google Developers Introduction Video找到它。
除recognition.continuous = true
外,您还需要recognition.interimResults = true;
。
然后需要在onresult
处理程序中略微修改您的逻辑以考虑中间结果:
recognition.onresult = function (event) {
var final = "";
var interim = "";
for (var i = 0; i < event.results.length; ++i) {
if (event.results[i].final) {
final += event.results[i][0].transcript;
} else {
interim += event.results[i][0].transcript;
}
}
final_span.innerHTML = final;
interim_span.innerHTML = interim;
}