繁体   English   中英

如何更改 swift 中的 VoiceOver 发音?

[英]How to change the VoiceOver pronunciation in swift?

我正在尝试实现对我的 ios 项目的可访问性。

有没有办法在打开画外音时纠正某些特定单词的发音? 例如,“speech”的正确发音是 [spiːtʃ],但我希望画外音在整个项目期间将所有单词 'speech' 与 'speak' [spiːk] 相同。

我知道有一种方法可以设置我想将发音更改为“说话”的任何 UIElements 的可访问性 label。 但是,有些元素是动态的。 例如,我们从后端获取 label 文本,但我们永远不会知道 label 文本何时会是“语音”。 如果我从后端得到“speech”这个词,我想听到画外音将它读作“speak”。

因此,我想更改画外音的设置。 每次,如果单词是“speech”,画外音将读作“speak”。

我可以做吗?

简短的回答。

是的,您可以这样做,但请不要这样做。

长答案

我可以做吗?

是的,当然可以。

只需从后端获取数据,并使用要替换的单词字典对字符串进行查找替换,然后将新版本的字符串添加为可访问性 label。

你应该这样做吗?

绝对不。

每次有人试图“修复”发音时,都会让事情变得更糟。

我什至不明白为什么您希望屏幕阅读器用户在其他人看到“讲话”时听到“讲话”,这没有意义并且可能会破坏句子的含义:

“我参加了昨晚的演讲,内容非常丰富”。

将转变为:

“我参加了昨晚的演讲,内容非常丰富”

屏幕阅读器用户已经习惯了。

屏幕阅读器用户习惯于听到不同的说法(并且不正确)。 我的猜测是您使用屏幕阅读器的时间还不够长,无法习惯屏幕阅读器语音的特性。

与帮助屏幕阅读器用户相去甚远,您实际上最终会让事情变得更糟。

我只重写了两次屏幕阅读器默认行为,一次是版本号被读取为日期,一次是密码管理器读取密码并尝试将内容读取为单词。

除了那些非常狭窄的例子之外,我还没有遇到过为屏幕阅读器更改内容的理由。

盲文用户呢?

你可以改变一些事情,因为它们听起来不正确。 但是盲文用户也使用屏幕阅读器,并且为他们更改内容可能会非常混乱(根据上面的“语音”示例)。

最佳实践怎么样

“为辅助技术用户提供与非辅助技术用户尽可能相似的体验”。 这是可访问性的第一指导原则,第二个你改变发音和单词,你可能会改变句子的含义,从而提供不同的体验。

加起来

无论如何,这在不应该成为的时候变成了咆哮(我很抱歉,我只是想明白这一点,因为我经常回答类似的问题,),希望你明白这个想法,别管它提供相同的信息,我什至没有介绍不同的语音合成器。 语言翻译以及使用“非自然”语言可能会干扰的更多内容。

最简单的解决方案是从后端返回第二个字符串,该字符串仅用于accessibilityLabel。

如果您需要更多控制,可以将 AttributedString 作为accessibilityLabel 传递,其中包含许多用于控制发音的不同选项

https://medium.com/macoclock/ios-attributed-accessibility-labels-f54b8dcbf9fa

我可以做吗?

是的,你可以,我推荐它。

以下是我将遵循的里程碑:

  • 当你从后端收到文本时,编写一种正则表达式来查找发音不正确的单词。
  • 将它们替换为属性字符串并使用accessibilitySpeechIPANotation为 VoiceOver 定义适当的语音(自 iOS11 起可用)

如果需要,可提供有关此主题的更多信息:

按照这个原理,您只是调整了您认为 VoiceOver 错误读出的单词的声音:对盲文功能没有影响。

在我看来,必须执行这种操作,因为您的应用程序必须适应用户,而不是相反

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM