iOS13(Safari和WkWebView(中似乎有一个错误,使iOS使用设备语言语音,并且通过查看SpeechSynthesisUtterance中提供的"lang"找不到合适的语音。
我通过自己设置合适的声音来解决这个问题。
这在其他浏览器/平台(例如macOS Safari,iOS <13,Chrome等(中不需要。
this._getUtteranceRate().then((rate) => {
let utterance = new SpeechSynthesisUtterance(words);
utterance.rate = rate;
utterance.lang = 'sv-SE';
utterance.voice = this.voice; //IOS13 fix
window.speechSynthesis.speak(utterance);
});
window.speechSynthesis.onvoiceschanged = () => {
this.setVoice();
}
setVoice() {
this.voice = window.speechSynthesis.getVoices().find((voice) => {
return voice.lang === 'sv-SE';
});
}
似乎需要在iOS13的SpeechSynthesisUtterance上明确设置语音,因为区域设置不用于查找语音。