有两个问题
1)在手机上,你需要一个用户手势来开始播放文本。将它添加到一个onclick处理程序请参见下面的demo:
Play
function playSentence(text) {
var msg = new SpeechSynthesisUtterance();
msg.text = text;
window.speechSynthesis.speak(msg);
}
$("#btnPlay").click(function() {
playSentence("Hello world");
});
2)该演示也断:\但也有您需要照顾的两个关键部分。
i。 getVoices是asynchronus(在Spec勘误中提到),你需要听voiceschanged event,推理有点令人沮丧,但是有道理,语音系统被延迟加载,并且第一次调用getVoices将阻止主线程,所以第一次调用在android上返回0结果,然后在声音可用时触发onvoiceschanged。
ii。 linked demo错误地在话语上设置voice属性。这不存在,您需要更改lang和可选的voiceURI以更改默认使用的语音,如下面和new demo中所示。
if (voiceSelect.value) {
var selectedVoice = speechSynthesis.getVoices().filter(function(voice) { return voice.voiceURI == voiceSelect.value; })[0];
msg.voiceURI = selectedVoice.voiceURI;
msg.lang = selectedVoice.lang;
}