我想从过去创建与GoBarbara.com类似的页面。
文本字段的内容将从文本转换为语音。

因此,我想使用SpeechSynthesis API(javaScript),它会在触发intro.mp3之后执行文本到语音的转换。播放语音后,应播放end.mp3。
这由intro.mp3和语音结尾处的“ onend”类型的Eventlisteners处理。

播放音频的基本触发方案是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,我想使用SpeechSynthesis拥有的onend事件。
但是onend在实际语音结束之前触发end.mp3!

看来这可能是一个错误。但是,否则,在说出文字直到结束时,我如何才能正确启动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];
   speech.onend = playEnd();
   speechSynthesis.speak(speech);
}


onend之前使用speak

关于javascript - SpeechSynthesis-在语音结束之前触发Onend,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44279458/

10-12 00:00
查看更多