如何在单击开始按钮后启动 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>
我不确定这是否是一个错误。我尝试在开始底部制作一个偶数 '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>