我一直在使用W3C语音合成器的web在我的应用程序。我想的话开始出现,因为我说他们。这是因为我想让用户对他们正在说的单词有近乎即时的反馈。目前,规范中的result
事件等待在不说话的一秒钟左右后追加整个数组。
我已经查看了标准,但我只发现它等待了一段时间才能从结果事件构造最终结果列表:
5.1.3语音识别事件result事件:当语音识别器返回结果
时触发5.1.8 SpeechRecognitionEvent
results属性:当前会话所有识别结果的数组。
我还尝试检索onstart
和onpause
方法的结果:
recognition = new webkitSpeechRecognition()
recognition.onstart = function (event) {
//append word
};
recognition.onpause = function (event) {
//append word
};
有谁知道一种方法可以实现你说话时的"打字"效果吗?
另一个问题是,如果用户停止说话一秒钟,并且结果列表被编译(IE, result event
被触发),并且他们再次说话,结果列表不更新。
即使我设置了recognition.continuous = true;
从Google开发者介绍视频中找到的。
除了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;
}