iOS Safari SpeechSynthesisUtterance无法设置语言

时间:2018-08-18 01:51:54

标签: javascript html safari mobile-safari

我有使用我的母语(英语)工作的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寻求帮助,但该帮助已被忽略和拒绝。

Udate:

因此,这似乎是iOS测试版问题,即使Chrome和Firefox应用程序也具有英语发音。我已经提交了有关此问题的Beta错误报告。

3 个答案:

答案 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)