W3C Speech To Text:说话时输出值
W3C Speech To Text: output values as you speak
我一直在我的应用程序中使用 W3C Speech Synthesizer 网络版。我希望这些词在我说话时开始出现。这是因为我希望用户对他们正在说的当前单词有近乎即时的反馈。目前,规范中的 result
事件会在一秒左右不说话后等待附加整个数组。
我查看了标准,但我只发现它需要等待一段时间才能从结果事件构建最终结果列表:
5.1.3 语音识别事件
result 事件:当语音识别器 returns 结果
时触发
5.1.8 SpeechRecognitionEvent
results属性:本次session当前所有识别结果数组
我也尝试过在 onstart
和 onpause
方法中检索结果:
recognition = new webkitSpeechRecognition()
recognition.onstart = function (event) {
//append word
};
recognition.onpause = function (event) {
//append word
};
有谁知道实现这种"typing"说话效果的方法吗?
另一个问题是,如果用户停止说话一秒钟,结果列表被编译(IE,result event
被触发),然后他们再次说话,结果列表不是已更新。
即使我设置 recognition.continuous = true;
也会发生这种情况
从 Google 开发人员 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;
}
我一直在我的应用程序中使用 W3C Speech Synthesizer 网络版。我希望这些词在我说话时开始出现。这是因为我希望用户对他们正在说的当前单词有近乎即时的反馈。目前,规范中的 result
事件会在一秒左右不说话后等待附加整个数组。
我查看了标准,但我只发现它需要等待一段时间才能从结果事件构建最终结果列表:
5.1.3 语音识别事件
result 事件:当语音识别器 returns 结果
时触发5.1.8 SpeechRecognitionEvent
results属性:本次session当前所有识别结果数组
我也尝试过在 onstart
和 onpause
方法中检索结果:
recognition = new webkitSpeechRecognition()
recognition.onstart = function (event) {
//append word
};
recognition.onpause = function (event) {
//append word
};
有谁知道实现这种"typing"说话效果的方法吗?
另一个问题是,如果用户停止说话一秒钟,结果列表被编译(IE,result event
被触发),然后他们再次说话,结果列表不是已更新。
即使我设置 recognition.continuous = true;
从 Google 开发人员 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;
}