5

I have a problem with playing audio from a dynamically created javascript audio object one after another. The Audio comes from Google over an array of strings.

for (i = 0; i < Txt_array.length; i++) {
audio.src ='http://translate.google.com/translate_tts?&tl=en&q='+Txt_array[i];
audio.play();};

I would like to do this by an event listener, or is there any other way? It is not just about Google, so I would like to ask you for a general solution, not a ready made google speech script.

Could you help me? How can I play the audio one after another?

Update:

audio.src='http://translate.google.com/translate_tts?&tl=en&q=' + Txt_array[0];
audio.play();

audio.addEventListener('ended', function(){
for (i = 1; i < Txt_array.length; i++) {
audio.src ='http://translate.google.com/translate_tts?&tl=en&q='+Txt_array[i];
audio.play();};
}, false);

I added the Eventlistener, I guess it should work like this, but I still hae a problem that the Eentlistener does not fire if this is the first file played, right?

I would be happy for further support.

Thank you in advance.

Owenir
  • 53
  • 1
  • 4

1 Answers1

12

There is an ended event, you can change the src property in a listener for it.

var strings = "Hello how are you".split(" ");
var index = 1;

audio.src='http://translate.google.com/translate_tts?&tl=en&q=' + strings[0];
audio.play();

audio.onended = function() {
    if(index < strings.length){
        audio.src='http://translate.google.com/translate_tts?&tl=en&q=' + strings[index];
        audio.play();
        index++;
    }
};
tachyonflux
  • 20,103
  • 7
  • 48
  • 67
  • Thank you very much sir, for your support. I think the updated version should work, but it does not. Do you hav any adice for me? Thank you in advance. – Owenir Dec 08 '14 at 18:49
  • You can't loop through the audio in your on ended. You have to keep track of the audio and index outside of the function and load them one by one after the previous one ends. – tachyonflux Dec 08 '14 at 18:51