我有使用我的母语(英语)工作的SpeechSynthesisUtterance,但是我需要将语言设置为意大利语才能正确发音。
该代码在Mac Safari中可以正常工作,但在iOS Safari中,发音是英语而不是意大利语。
意大利语是一个简单的测试:“ Ho i soldi”,“ h”在意大利语中保持沉默。
<!DOCTYPE html><html lang='en' class=''>
<head><meta charset='UTF-8'></head>
<body>
<button id="Ho una prenotazione." onclick=speak(id)>Ho una prenotazione.</button>
I have a reservation
<script >
function speak(text) {
var msg = new SpeechSynthesisUtterance(text);
msg.lang = 'it-IT';
window.speechSynthesis.speak(msg);
}
</script>
</body></html>
这是上面代码的测试example。
我已经下载了意大利语“ Luca”,并将其设置为“设置”:“常规”:“辅助功能”:“语音”:“语音”:意大利语;“ Luca”
我于2018年7月26日向Apple Safari和Web Development Forum发布了一个查询,结果至今无人回应:( 422次查看,0条回复)。
我还提交了Apple开发者技术支持(DTS)请求,该请求于2018年8月16日被拒绝,并建议张贴到Web Development Forum。
尽管这可能被认为是题外话,但请考虑我已尝试调试并向Apple寻求帮助,但该帮助已被忽略和拒绝。
因此,这似乎是iOS测试版问题,即使Chrome和Firefox应用程序也具有英语发音。我已经提交了有关此问题的Beta错误报告。
答案 0 :(得分:5)
我几乎没有代表要在评论中发布此内容,因此我将其作为答案发布。 我看到您正在运行iphone 6s,但是我在iphone X和Mac上都尝试了它,并在不同的浏览器中同时使用了英语和意大利语。
您的手机或操作系统中的问题仍然存在,因为它似乎可以在我的设备上正常工作,您是否尝试过iphone 6s以外的其他设备?
答案 1 :(得分:3)
此问题似乎纯粹是针对beta版本。在iPhone 6、7和8 Plus的iOS 11.4.1上,相同的HTML可以正常工作。但是,通过将语言更改为西班牙语,它可以完美运行。
<html lang='es' class=''>
当然,这意味着您的整个网站都被视为西班牙语,但是如果您坚持使用Beta,则似乎是一个网站。
答案 2 :(得分:1)
我遇到了这个问题(iOS 14.3)。
在iOS中,设置lang属性是不够的。您还需要设置语音属性。
示例:
const utterance = new SpeechSynthesisUtterance('156')
const lang = 'zh-CN'
// Without the following line, voice remains in English on iOS
// voicesList is here the retured value of speechSynthesis.getVoices()
utterance.voice = voicesList.find((voice) => voice.lang === 'zh-CN')
utterance.lang = 'zh-CN'
speechSynthesis.speak(utterance)