Javascript 语音文字转换在iOS上使用的语言不正确

Javascript 语音文字转换在iOS上使用的语言不正确,javascript,text-to-speech,Javascript,Text To Speech,问题就在这里。 我需要在我的网站上的法语文本到语音功能 这是我使用的代码 使用API: 使用内置SpeechSynthesistTerance: let msg = new SpeechSynthesisUtterance(); msg.text = text; msg.volume = 1; msg.rate = 1; msg.pitch = 1; msg.lang = 'fr-FR'; msg.voice = window.speechSynthesis.getVoices()[9]; wi

问题就在这里。 我需要在我的网站上的法语文本到语音功能

这是我使用的代码

使用API:

使用内置SpeechSynthesistTerance:

let msg = new SpeechSynthesisUtterance();
msg.text = text;
msg.volume = 1;
msg.rate = 1;
msg.pitch = 1;
msg.lang = 'fr-FR';
msg.voice = window.speechSynthesis.getVoices()[9];
window.speechSynthesis.speak(msg);
它在Windows笔记本电脑上的Google Chrome和iOS上的Opera中都能正常工作

但在我的iPhone上,这两种浏览器在Google Chrome和Safari浏览器中都不能正常工作。 它用英语而不是法语说话

以前,它工作正常,我没有任何改变。 我不确定,但这个问题似乎是在最近的iOS更新之后开始出现的。 也许它试图用我默认的语言而不是选择的语言说话。但我不知道如何修复它

感谢您的帮助

UPD 默认语言确实存在一些bug。 我把iPhone的语言改成了法语,它开始说法语了。
但我仍然不知道如何让它说我想要的语言。

我面临着确切的问题。它在台式机上运行得非常好,但在iPhone上,iOS可以阅读英语的德语文本

msg.voice = window.speechSynthesis.getVoices()[9];
每个浏览器/操作系统的语音数量和顺序不同,因此请求语音9将给出不同的结果

可能是,如果msg.voice和msg.lang不匹配,则使用默认语音,例如,如果将lang设置为fr fr,但所选语音的lang属性为es

要测试此功能,请尝试:

msg.voice = speechSynthesis.getVoices().find(voice => /fr(-|_)FR/.test(voice.lang));
这将选择找到的第一个法语/法语语音

有必要使用(-|)部分,因为一些浏览器使用破折号,而另一些浏览器使用下划线

(无需在演讲合成前键入window。我还建议您在开始使用之前,对音量、速率和音高行进行注释。)

msg.voice = speechSynthesis.getVoices().find(voice => /fr(-|_)FR/.test(voice.lang));