【问题标题】:iOS Safari SpeechSynthesisUtterance can not set languageiOS Safari SpeechSynthesisUtterance 无法设置语言
【发布时间】: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


【解决方案1】:

我需要很少的代表才能在 cmets 中发布此内容,因此我会将其发布为答案。 我看到你正在运行 iphone 6s,但我在我的 iphone X 和我的 Mac 上用不同的浏览器使用英语和意大利语进行了尝试。

问题可能在您的手机或操作系统中仍然存在,因为它似乎在我的设备上运行良好,您是否尝试过除 iphone 6s 以外的任何其他设备?

【讨论】:

  • 你是对的,也是错的。我在我的三台设备上尝试了意大利语示例,但失败了,我在我妻子的两台设备上尝试了它,它和 5S 一样好用。现在想弄清楚为什么。如有必要,我将擦除 iPhone 6 并从头开始设置。
  • 你有没有试过检查 safari 版本,也许某些版本不支持不同的 t2s 语言? lifewire.com/check-the-version-number-of-safari-446563
  • 来自上述网站的评论:因为Safari是iOS操作系统的一部分,所以它的版本和iOS是一样的。我在6S iPhone 又重新开机,发音不正确。稍后我将使用其他两个 iOS 设备。
  • 所以你基本上找到了“故障”?
  • 不确定,可能是iOS Beta问题,我已经提交了Beta错误报告。如果这继续证明或似乎是问题所在,除非有特定的正确答案,否则我会将赏金奖励给您。
【解决方案2】:

这个问题似乎纯粹是针对测试版的。相同的 HTML 在 iOS 11.4.1 上适用于 iPhone 6、7 和 8 Plus。但是,通过将语言更改为西班牙语,它可以完美运行。

<html lang='es' class=''>

当然,这意味着您的整个网站都被视为西班牙语,但如果您坚持使用测试版,它似乎是其中之一。

【讨论】:

    【解决方案3】:

    我遇到了这个问题(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)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-04-30
      • 2012-08-30
      • 2022-12-17
      • 1970-01-01
      • 2013-10-30
      • 1970-01-01
      • 2019-03-21
      • 1970-01-01
      相关资源
      最近更新 更多