SpeechSynthesis - 在演讲结束前一眨眼

时间:2017-05-31 08:25:44

标签: javascript text-to-speech

我想从后面创建一个类似于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 事件。 但是在实际讲话结束之前,一端就会结束.mp3!

这似乎是一个错误。但除此之外,如何在文本发出结束之后才能正常启动mp3?注意:语音部分的长度可以不同。

1 个答案:

答案 0 :(得分:1)

正确的代码是

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