Javascript 如何在单击start按钮后启动API进行侦听

Javascript 如何在单击start按钮后启动API进行侦听,javascript,jquery,html,annyang,Javascript,Jquery,Html,Annyang,我不确定这是否是一个错误。我试着在开始底部做一个均匀的“onclick”,然后开始听任何单词来启动程序。但是现在,每次我在3秒钟后刷新页面时,都会自动播放第一个音频。我做错什么了吗?任何帮助都会有帮助。先谢谢你 <script> if (annyang) { function playFirstAudio() { audio.src = dir + playL

我不确定这是否是一个错误。我试着在开始底部做一个均匀的“onclick”,然后开始听任何单词来启动程序。但是现在,每次我在3秒钟后刷新页面时,都会自动播放第一个音频。我做错什么了吗?任何帮助都会有帮助。先谢谢你

<script>                          
    if (annyang) 
    {
        function playFirstAudio()
        {
            audio.src = dir + playList[audioIndex] + extention;
            audio.load();
            setTimeout(function(){audio.play();}, 3000);
        }

        var playList = ["1_hello", "2_how_old", "3_what_did_you_make"];
        var dir = "sound/";
        var extention = ".wav";

        var audioIndex = 0;
        audio = new Audio();

        //annyang.addCallback('start', playFirstAudio);

        audio.onended = playFirstAudio();

        annyang.debug(true);
    };
</script>

<div class="container">
    <button id="runProgram" onclick='annyang.start();' class="runProgrambutton">Start</button>
</div>

如果(安阳)
{
函数playFirstAudio()
{
audio.src=dir+播放列表[audioIndex]+扩展;
load();
setTimeout(函数(){audio.play();},3000);
}
var playList=[“1你好”、“2多大”、“3你做了什么”];
var dir=“sound/”;
变量扩展=“.wav”;
var听力指数=0;
音频=新音频();
//annyang.addCallback('start',playFirstAudio);
audio.onended=playFirstAudio();
调试(true);
};
开始

尝试设置audio.ended回调时,您正在调用
playFirstAudio()
。注意:audio.ended不是audio.onended

否则,请将其包装在匿名函数中,如下所示:

 audio.onended = playFirstAudio;
 audio.onended = function() { playFirstAudio(); };
您的按钮点击启动语音识别

但是,当语音识别引擎听到声音时,您还需要注册对fire的回拨:

<script>  
    var audio = new Audio();                        
    if (annyang) 
    {
        annyang.addCallback('start', function() {console.log('started listening');});
        annyang.addCallback('soundstart', function {onSoundDetected();});            

        function onSoundDetected() {
            console.log('sound was detected');
            playNextAudio();
        }
        var playList = ["sound/1_hello.wav", "sound/2_how_old.wav", "sound/3_what_did_you_make.wav"];
        var audioIndex = 0;

        function playNextAudio()
        {
            audio.src = playList[audioIndex++];
            audio.load();
            audioIndex= audioIndex % playList.Length;// start at zero when we reach the end.

        }
        audio.ended = function() {playNextAudio()};
        audio.oncanplay = function() {audio.play();}
        annyang.debug(true);
    };
</script>

<div class="container">
    <button id="runProgram" onclick='annyang.start();' class="runProgrambutton">Start</button>
</div>

var audio=新音频();
如果(安阳)
{
addCallback('start',function(){console.log('started listing');});
addCallback('soundstart',函数{onSoundDetected();});
函数onSoundDetected(){
console.log(“检测到声音”);
playNextAudio();
}
var playList=[“sound/1_hello.wav”、“sound/2_how_old.wav”、“sound/3_what_do_make.wav”];
var听力指数=0;
函数playNextAudio()
{
audio.src=播放列表[audioIndex++];
load();
audioIndex=audioIndex%playList.Length;//到达终点时从零开始。
}
audio.end=function(){playNextAudio()};
audio.oncanplay=函数(){audio.play();}
调试(true);
};
开始

尝试设置audio.ended回调时,您正在调用
playFirstAudio()
。注意:audio.ended不是audio.onended

否则,请将其包装在匿名函数中,如下所示:

 audio.onended = playFirstAudio;
 audio.onended = function() { playFirstAudio(); };
您的按钮点击启动语音识别

但是,当语音识别引擎听到声音时,您还需要注册对fire的回拨:

<script>  
    var audio = new Audio();                        
    if (annyang) 
    {
        annyang.addCallback('start', function() {console.log('started listening');});
        annyang.addCallback('soundstart', function {onSoundDetected();});            

        function onSoundDetected() {
            console.log('sound was detected');
            playNextAudio();
        }
        var playList = ["sound/1_hello.wav", "sound/2_how_old.wav", "sound/3_what_did_you_make.wav"];
        var audioIndex = 0;

        function playNextAudio()
        {
            audio.src = playList[audioIndex++];
            audio.load();
            audioIndex= audioIndex % playList.Length;// start at zero when we reach the end.

        }
        audio.ended = function() {playNextAudio()};
        audio.oncanplay = function() {audio.play();}
        annyang.debug(true);
    };
</script>

<div class="container">
    <button id="runProgram" onclick='annyang.start();' class="runProgrambutton">Start</button>
</div>

var audio=新音频();
如果(安阳)
{
addCallback('start',function(){console.log('started listing');});
addCallback('soundstart',函数{onSoundDetected();});
函数onSoundDetected(){
console.log(“检测到声音”);
playNextAudio();
}
var playList=[“sound/1_hello.wav”、“sound/2_how_old.wav”、“sound/3_what_do_make.wav”];
var听力指数=0;
函数playNextAudio()
{
audio.src=播放列表[audioIndex++];
load();
audioIndex=audioIndex%playList.Length;//到达终点时从零开始。
}
audio.end=function(){playNextAudio()};
audio.oncanplay=函数(){audio.play();}
调试(true);
};
开始

感谢您的回复。但是如果我做了audio.onended=playirstaudio;它会尝试收听,但不会播放音频文件。如果我执行匿名函数,它也会尝试侦听,但不会播放音频文件;有各种各样的语义,但这并没有说明什么:
var myScript=function(){console.log('hello world');};var d=[];d、 onended=function(){myScript};d、 onended()var myScript=function(){console.log('hello world');};var d=[];d、 onended=function(){myScript()};d、 onended()它输出
你好世界
。你可以做一些研究来了解差异。你是对的。我刚测试过。那么,即使我使用audio.oneded=function(){playFirstAudio();};,代码的问题是什么,它开始听声音,但在我说了一个之后,它仍然不播放音频?您没有连接到API的事件来触发音频播放。另外,
onended
不是正确的功能。请参阅更新感谢以获取回复。但是如果我做了audio.onended=playirstaudio;它会尝试收听,但不会播放音频文件。如果我执行匿名函数,它也会尝试侦听,但不会播放音频文件;有各种各样的语义,但这并没有说明什么:
var myScript=function(){console.log('hello world');};var d=[];d、 onended=function(){myScript};d、 onended()var myScript=function(){console.log('hello world');};var d=[];d、 onended=function(){myScript()};d、 onended()它输出
你好世界
。你可以做一些研究来了解差异。你是对的。我刚测试过。那么,即使我使用audio.oneded=function(){playFirstAudio();};,代码的问题是什么,它开始听声音,但在我说了一个之后,它仍然不播放音频?您没有连接到API的事件来触发音频播放。另外,
onended
不是正确的功能。查看更新