1

Google TTS API の 100 文字の文字数制限を克服するために、100 文字ごとにループして API から新しい mp3 を取得し、シームレスに再生しようとしました。複数の方法を試しましたが、.play() と canplay/onended のようなイベント リスナーは、ループ内で機能していないようです! 達成できる最善の方法は、ダウンロードしたすべてのトラックを次々に再生するのではなく、同時に再生することです。以下はいくつかのコードです:-

if ($("#theinput").attr("value").length > 100){
var len = $("#theinput").attr("value").length;
alert(len);
var audioPlayer = document.getElementById("spokenmemory");    
for (var i=0; i < (len / 100); i++) {
var stl=i*100;
var str = $("#theinput").attr("value").substr(stl, 100);
$("#spokenmemory").attr("src", "http://translate.google.com/translate_tts? tl=en&q="+str);
alert(str);
audioPlayer.load();  
audioPlayer.addEventListener('canplay', function () {
              alert('Loaded');
              audioPlayer.play();
            } );
//audioPlayer.play(); 

            }

どんな助けでも大歓迎です。

4

1 に答える 1

0

代わりにトリガー関数を使用してみてください

fadeInAudio : function(audio){
//      audio.play();
    audio.trigger("play");
},

fadeOutAudio : function(audio){
//      audio.pause();
    audio.trigger("pause");
},
于 2011-12-23T21:34:19.037 に答える