iOS13 Safari WebSpeechApi 错误:SpeechSynthesisUtterance 不会使用提供的语言环境
iOS13 Safari WebSpeechApi Bug: SpeechSynthesisUtterance won't use provided locale
iOS 13(Safari 和 WkWebView)中似乎存在一个错误,使得 iOS 使用设备语言语音并且无法通过查看 'lang' 找到合适的语音在 SpeechSynthesisUtterance 中提供。
我通过自己设置合适的声音解决了这个问题。
这在其他 browsers/platforms 中不需要(例如 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 上明确设置语音,因为语言环境未用于查找语音。
iOS 13(Safari 和 WkWebView)中似乎存在一个错误,使得 iOS 使用设备语言语音并且无法通过查看 'lang' 找到合适的语音在 SpeechSynthesisUtterance 中提供。
我通过自己设置合适的声音解决了这个问题。
这在其他 browsers/platforms 中不需要(例如 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 上明确设置语音,因为语言环境未用于查找语音。