2017-05-31 13 views
0

私はGoBarbara.comと同様のページをバックに作成したいと考えています。 テキストフィールドの内容はテキスト読み上げから変換されます。SpeechSynthesis - 発言が終了する前に火災が発生する

したがって、私はintro.mp3が発動した後にテキストを音声変換するSpeechSynthesis API(javaScript)を使いたいと思います。演奏後、end.mp3を再生する必要があります。 これはによって処理されます。イベントリスナー intro.mp3と音声の最後に「onend」のタイプです。

オーディオを再生する基本的なトリガ方式は、1 - > 2 - > 3です。 ここで、1はintro.mp3、2はスピーチ、3はend.mp3です。

function doSpeech() { 
    var speech = new SpeechSynthesisUtterance(); 
    speech.text = getText(); 
    speech.lang = "en-US"; 
    speech.voice = speechSynthesis.getVoices().filter(function(voice) {return voice.name == 'Google UK English Male'; })[0];  
    speechSynthesis.speak(speech); 
    speech.onend = playEnd(); 
} 

end.mp3をトリガーするために、私は、音声合成がonendイベント所有使いたい:

私の現在のコードは次のようです。 しかしonendは実際の音声が終了する前にend.mp3を起動します!

これはバグかもしれません。しかし、そうでなければ、テキストが最後まで話された後に、どのようにmp3を適切に始めることができますか?注意:音声部分は長さが異なる場合があります。

+1

speak前と

function doSpeech() { var speech = new SpeechSynthesisUtterance(); speech.text = getText(); speech.lang = "en-US"; speech.voice = speechSynthesis.getVoices().filter(function(voice) {return voice.name == 'Google UK English Male'; })[0]; speech.onend = playEnd(); speechSynthesis.speak(speech); } 

である - それを試してみてください? – Frazer

答えて

1

適切なコードは、イベントや線を話すを逆にすることによって解決された私はONSTARTと同様の問題があったonend

+0

ちょっとニコライ、私はそれを試みたが、残念ながら私は長い文字列を使用するとスピーチとmp3の開始の重複を取得... – Kaibear

関連する問題