javascript - SpeechSynthesis - Onend 在语音结束前触发

标签 javascript text-to-speech

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

因此,我想使用 SpeechSynthesis API (javaScript),它在触发 intro.mp3 后执行文本到语音转换。播放完语音后,应播放 end.mp3。 这是由 intro.mp3 和演讲末尾的“onend”类型的事件监听器处理的。

播放音频的基本触发方案是 1 -> 2 -> 3。 其中1是intro.mp3,2是speech,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);
}

speak之前使用onend

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

相关文章:

javascript - 如何使用 JavaScript 创建语音?

javascript - 将一个表的数据复制到另一个表时切换按钮

Javascript:将链接插入鼠标右键单击?

c# - 如何转换使用行为的 WebService 调用?

android - 修改 TTS 读一串大写字母的方式

javascript - 使用语音合成说出字符串数组,中间有停顿

speech-recognition - Microsoft.Speech.Synthesis 不适用于文本转语音但 System.Speech.Synthesis 有效。为什么?

javascript - 如果条件警报,JS 会出现问题

javascript - 更改 jQuery 导致某些自定义小部件停止正常运行或根本停止运行

windows-phone-8 - windows phone 8 TTS - 如何将语音保存到 wav 文件