以下代码在Chrome桌面上可以正常运行,但在Chrome Android中,它未使用指定的msg.lang。像美国英语一样读出法语文本,就好像是英语一样。手机的默认语言是英语,这有关系吗?无论用户在手机上进行了什么设置,我都希望页面以选定的语言读出。
const msg = new SpeechSynthesisUtterance();
msg.volume = 1;
msg.text = text; // these words are in French
msg.lang = 'fr-FR';
speechSynthesis.speak(msg);
答案 0 :(得分:0)
将破折号更改为下划线即可解决问题,即将其从“ fr-FR”更改为“ fr_FR”。
文档https://w3c.github.io/speech-api/#tts-section声明代码应为“ BCP 47”,并指定破折号。
但是,本文指出在某些移动实现中使用了下划线: https://manu.ninja/using-the-speech-synthesis-interface-of-the-web-speech-api
因此下划线将其修复。下划线也适用于台式机Chrome。
如果有更好的答案,我不会将此答案标记为已接受。