SpeechSynthesis - 在讲话结束之前发生的一次火灾

问题描述:

我想从几天后的时间里创建一个类似GoBarbara.com的页面。 有一个文本字段的内容将从文本到语音转换。SpeechSynthesis - 在讲话结束之前发生的一次火灾

因此,我想使用SpeechSynthesis API(javaScript),它会在触发intro.mp3之后进行文本发言。播放完演讲后,应播放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,我想用SpeechSynthesis拥有onend事件。 但是在实际的演讲结束之前,一个人会发出结尾.mp3!?

看来这可能是一个错误。但除此之外,如何在正文结束之前将文本正确启动?注意:语音部分的长度可能不同。

+1

之前,我不得不借助onStart类似的问题这是通过反转事件和说话线解决 - 尝试? – Frazer

正确的代码是

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); 
} 

onendspeak

+0

嘿尼古拉,我尝试过,但不幸的是,当使用更长的字符串时,我得到了语音和mp3开始的重叠... – Kaibear