我正试图在iOS Safari上获得支持的语音合成语音列表.
根据API,我应该能够通过调用以获得一系列声音:
window.speechSynthesis.getVoices();
Run Code Online (Sandbox Code Playgroud)
有时这会给我一些声音列表,有时却没有.请参阅以下jsfiddle:https://jsfiddle.net/sq7xf327/
如果我在iPhone 5(iOS 8.1.3)上打开它,我不会得到一致的结果.有时我会收回所有37个声音,有时我会收到0个声音.如果你继续刷新它偶尔会显示37或0.
我知道在Chrome中你可以添加一个事件监听器
window.speechSynthesis.voiceschanged
Run Code Online (Sandbox Code Playgroud)
事件以了解语音何时加载,但Safari中不支持此事件.
我试过的一个技巧是定期检查:
var timer = setInterval(function () {
window.voices_ = window.speechSynthesis.getVoices();
if (window.voices_.length > 0) {
clearInterval(timer);
}
}, 1000);
Run Code Online (Sandbox Code Playgroud)
这也没有给我一致的结果.
知道如何在iOS Safari上可靠且始终如一地获得支持的语音合成语音吗?