Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/362.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_Ajax_Html5 Audio - Fatal编程技术网

Javascript 文本到语音音频在浏览器中不同步工作

Javascript 文本到语音音频在浏览器中不同步工作,javascript,jquery,ajax,html5-audio,Javascript,Jquery,Ajax,Html5 Audio,我使用的是队列管理系统。我的问题是音频重叠。如何解决这个问题 $.ajax({ url: 'DisplayDataRead', type: 'post', dataType: 'json', headers: { 'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content') }, async: false, data: { counter: user

我使用的是队列管理系统。我的问题是音频重叠。如何解决这个问题

$.ajax({
    url: 'DisplayDataRead',
    type: 'post',
    dataType: 'json',
    headers: {
        'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
    },
    async: false,
    data: {
        counter: userCounter,
        command: 'tokensCxr'
    },
    success: function(data) {

        $(data.result).each(function(key, val) {

            var tokenUpdate = $this.next().text();

            if (tokenUpdate != val.temp_token_no) {

                var audio = new Audio(path);
                audio.play();

                audio.onended = function() {
                    responsiveVoice.speak("Token Number " + val.temp_token_no + " - Please Proceed to Counter " + userCounter + "", "US English Female");
                };

            }

            $this.next().html('');
            $this.next().html('<h2 style=" font-size: 1.2em; font-weight: bold; ">' + val.temp_token_no + '</h2>');
        });
    }
});
$.ajax({
url:“DisplayDataRead”,
键入:“post”,
数据类型:“json”,
标题:{
'X-CSRF-TOKEN':$('meta[name=“CSRF-TOKEN”]).attr('content'))
},
async:false,
数据:{
计数器:userCounter,
命令:“tokensCxr”
},
成功:功能(数据){
$(data.result)。每个(函数(键,值){
var tokenUpdate=$this.next().text();
如果(令牌更新!=val.temp_令牌编号){
var audio=新音频(路径);
音频播放();
audio.onended=函数(){
回答语音。说(“令牌号”+val.temp\u令牌号+”-请转到计数器“+userCounter+”,“美英女性”);
};
}
$this.next().html(“”);
$this.next().html(“”+val.temp_-token_-no+“”);
});
}
});

在结束语音之前加载每个函数。

JavaScript不是一种同步编程语言,因此您可以使用回调方法来实现这一点,例如,当某些内容完成时,您必须运行一些东西

使用谷歌官方的文本到语音API

const ut = new SpeechSynthesisUtterance('Hello');
speechSynthesis.speak(ut);
请记住,如果没有用户交互(如用户单击按钮或用户启动的某些函数触发),脚本无法自动调用语音API

示例:

函数callAjax(){
$.ajax({
url:“https://reqres.in/api/users",
键入:“获取”,
成功:功能(响应){
$.each(response.data、函数(索引、元素){
const ut=新的语音合成(元素名);
ut.onend=函数(){
警报(元素名称);
console.log(元素名);
};
演讲综合(ut);
});
}
});
}


调用Ajax <代码>尝试谷歌API,让我知道是否有任何问题:请参阅EddiDeF此工作,考虑接受答案。