【发布时间】:2018-08-18 01:51:54
【问题描述】:
我的 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”,并在 Settings:General:Accessibility:Speech:Voices:Italian;Luca 中将其设置为默认值
注意:
我已于 2018 年 7 月 26 日向 Apple Safari 和 Web Development Forum 发布了查询,结果截至目前没有回复:(422 次浏览,0 次回复)。
我还于 2018 年 8 月 16 日提交了 Apple 开发者技术支持 (DTS) 请求,但被拒绝,并建议发帖至 Web Development Forum。
虽然这可能被视为离题,但请考虑我已尝试调试并请求 Apple 提供帮助,但已被忽略和拒绝。
日期:
这似乎是一个 iOS 测试版问题,甚至 Chrome 和 Firefox 应用程序都有英文发音。我已提交一份关于此问题的 Beta 版错误报告。
【问题讨论】:
-
也许在 iOS 中您需要使用 SpeechSynthesisUtterance.voice 准确指定您想要的声音?您可以使用SpeechSynthesis.getVoices 获取可用语音列表,SpeechSynthesisVoice.lang 可用于查看哪些语音适用于哪种语言。
-
我已经尝试指定一个声音并留下该代码以制作一个更简单的示例,但可能代码不好,这是我使用的:
msg.voice = speechSynthesis.getVoices().filter(function(voice) { return voice.name == 'Luca'; })[0]; -
您使用的是什么版本的 iOS Safari?
-
iOS 版本:iPhone 6s 11.4.1 (15G77)、iPad mini 12.0 (16A5357b)、iPhone 6+ (16A5357b)。意大利语发音都失败了。
-
更新:其他三个 iDevices 工作正常。
标签: javascript html safari mobile-safari