Bob*_*ley 5 javascript html5 google-chrome speech-synthesis
我正在使用HTML5 SpeechSynthesis API编写一个简单的拼写测试应用程序.我希望我的应用程序说出来的文字如下:"拼写单词是Cat.猫追着狗."
从第一句到第二句,API往往没有太多停顿.我想知道是否有办法在两个句子之间插入一点暂停.我意识到我可以创建2个单独的话语并使用pause()调用.但是,如果我可以简单地插入语法提示,代码将更简单,更简单.
通常在英语口语中,人们倾向于在段落间停留一段时间.所以我在文本中插入了换行符,但没有明显的影响.
我也试过使用省略号.
有没有办法做到这一点,还是我把一切都分成了不同的话语?
使用逗号(或自定义分隔符)分割文本,并使用超时添加您自己的空格。
这是一个作为概念验证的简单示例。扩展它,您可以自定义文本以包含有关暂停多长时间的提示。
function speakMessage(message, PAUSE_MS = 500) {
try {
const messageParts = message.split(',')
let currentIndex = 0
const speak = (textToSpeak) => {
const msg = new SpeechSynthesisUtterance();
const voices = window.speechSynthesis.getVoices();
msg.voice = voices[0];
msg.volume = 1; // 0 to 1
msg.rate = 1; // 0.1 to 10
msg.pitch = .1; // 0 to 2
msg.text = textToSpeak;
msg.lang = 'en-US';
msg.onend = function() {
currentIndex++;
if (currentIndex < messageParts.length) {
setTimeout(() => {
speak(messageParts[currentIndex])
}, PAUSE_MS)
}
};
speechSynthesis.speak(msg);
}
speak(messageParts[0])
} catch (e) {
console.error(e)
}
}
function run(pause) {
speakMessage('Testing 1,2,3', pause)
}
Run Code Online (Sandbox Code Playgroud)
<button onclick='run(0)'>Speak No Pause</button>
<button onclick='run(500)'>Speak Pause</button>
<button onclick='run(1000)'>Speak Pause Longer</button>
Run Code Online (Sandbox Code Playgroud)
小智 5
使用感叹号“!” 由于某种原因增加了一个很好的延迟。
您可以将它们与句点连接在一起以延长停顿时间。
"Example text! . ! . ! . !"
Run Code Online (Sandbox Code Playgroud)
只需插入
<silence msec="5000" />
Run Code Online (Sandbox Code Playgroud)
在文本中等待 5 秒(来源)。
免责声明:此代码仅适用于适当的用户代理。
<silence msec="5000" />
Run Code Online (Sandbox Code Playgroud)
// code taken from https://richjenks.com/dev/speechsynthesis/
var utterance = new SpeechSynthesisUtterance(),
speak = document.getElementById("speak"),
text = document.getElementById("text");
// Delay links and events because speechSynthesis is funny
speechSynthesis.getVoices();
setTimeout(function () {
// Add event listeners
var voiceLinks = document.querySelectorAll(".voice");
for (var i = 0; i < voiceLinks.length; i++) {
voiceLinks[i].addEventListener("click", function (event) {
utterance.voice = speechSynthesis.getVoices()[this.dataset.voice];
});
}
}, 100);
// Say text when button is clicked
speak.addEventListener("click", function (event) {
utterance.text = text.value;
speechSynthesis.speak(utterance);
});
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2973 次 |
最近记录: |