Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 无法检测响应语音是否正在播放()_Javascript_Jquery_Responsivevoice - Fatal编程技术网

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()