Javascript 无法检测响应语音是否正在播放()
关于Javascript 无法检测响应语音是否正在播放(),javascript,jquery,responsivevoice,Javascript,Jquery,Responsivevoice,关于isplay()的信息不多 这是我试过的,但不起作用。我无法获取控制台.log() setInterval(函数(){//连续检查是否正在播放音频 if(responsiveVoice.isPlaying()){ console.log('playing..'); }, 100 ); 你好,世界! 音频标签有一个paused属性。如果它没有暂停,那么它正在播放。因此: function isPlaying(audelem) { return !audelem.paused
isplay()
的信息不多
这是我试过的,但不起作用。我无法获取控制台.log()
setInterval(函数(){//连续检查是否正在播放音频
if(responsiveVoice.isPlaying()){
console.log('playing..');
},
100
);
你好,世界!
音频标签有一个paused
属性。如果它没有暂停,那么它正在播放。因此:
function isPlaying(audelem) {
return !audelem.paused;
}
$('audio').on('play ended',function() {
setInterval(function(){
if(isPlaying(this)){
console.log('playing...');
}
}, 100);
});
iSplay方法似乎并不存在。我可以使用responsiveVoice.OnFinishedPlaying钩子创建一个解决方案。这是一个可以设置的函数,在说话完成时将被调用。这有点麻烦,但可以按如下方式包装,以便在文本完成时触发回调。当然,如果您在上一篇课文结束之前,试着再次开始讲话
function speak(text, voice, callback) {
if (callback) {
responsiveVoice.OnFinishedPlaying = function () {
responsiveVoice.OnFinishedPlaying = null;
callback();
};
}
responsiveVoice.speak(text, voice);
}
他们实际上正在使用SpeechAPI的
窗口.speechSynthesis
对象。
因此,您可以检查它的播放布尔值
//他们的代码
var voicelist=responsiveVoice.getVoices();
var vselect=$(“#语音选择”);
$.each(语音列表,函数(){
vselect.append($(“”).val(this.name).text(this.name));
});
//你的
$('#isplay')。在('单击',函数()上){
$('#r').text(window.speechSynthesis.speaking)
})
你好,世界这是一些文字说
玩:
?
“音频播放完毕后,是否有方法获得回调?”
是的!!
在研究了responsiveVoice代码之后,以下是对我有效的解决方案:
responsiveVoice.speak(text, voice, {"onend": function() { msgonend(text); }});
当:
感谢您使用ResponsiveVoice
从v1.3.4开始,我们在ResponsiveVoice中添加了函数isplay(),并更新了API文档
您现在可以使用:
responsiveVoice.isPlaying()
适用于本地语音合成和回退音频TTS
你可以在这里找到它:
(指向1.3.x周期中的最新版本)
另外,要获取特定版本,请执行以下操作:
抱歉,我无法让您的代码在此小提琴中工作:。我缺少什么?检查后,似乎
不在HTML中。
responsiveVoice.isPlaying()