如何在单击开始按钮后启动 annyang API 收听

How to start annyang API to listen after one click on a start botton

我不确定这是否是一个错误。我尝试在开始底部制作一个偶数 '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>

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

audio.onended = playFirstAudio(); //<-- this is calling playFirstAudio();

你通过指定不带()的方法名称来分配一个回调函数,像这样:

 audio.onended = playFirstAudio;

否则,将其包装在这样的匿名函数中:

 audio.onended = function() { playFirstAudio(); };

您的按钮点击正在启动语音识别。

但您还需要注册一个回调,以便在语音识别引擎听到声音时触发:

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