如何让屏幕 reader 说出任意文本?

How can I tell a screen reader to speak arbitrary text?

我正在开发一款 swing 游戏,我想在按下某个键时显示一些信息,例如角色的生命值。有没有一种方法可以让屏幕 reader 在不移动焦点的情况下读取此信息,从而中断游戏? 提前谢谢你。

使用屏幕 reader 优于单独的 TTS

作为我自己的盲人,我可以有效地确认,让屏幕 reader 说话比使用单独的 TTS 引擎更好。 优势包括:

  • 使用用户已配置的语音朗读文字
  • 您一定不会遇到两个声音同时说话的烦人问题(屏幕 reader 和 TTS)

使用单独的 TTS 引擎时,使用的语音可能与用户设置有很大差异,尤其是可能会说错语言,太慢或太快。

让屏幕reader在网络上说话

在网络上,使屏幕 reader 说出一些文本是通过 ARIA live region

实现的

让屏幕reader在桌面或本机应用程序中说话

对于桌面或本机应用程序,基本上,存在与屏幕 reader 一样多的不同 API。根本没有共同的标准。 您必须检测使用的屏幕 reader(如果有),然后使用其特定的 API.

与其通信

幸运的是,有图书馆可以帮助您做到这一点:

  • 我是其中之一的作者,UniversalSpeech(仅 windows 支持 7 屏幕 reader)
  • 还有一个,tolk(仅windows支持6屏reader)
  • 对于python 3,您还有无障碍输出2

请注意,desktop/native 应用程序的几个 UI 工具包也实现了与 ARIA 实时区域非常相似的功能。如果要说的文本也必须同时显示,您最好使用它而不是上面列出的库。所有相当新的屏幕 reader 都支持它。请注意,ARIA 实时区域和类似系统通常比直接调用 screen readers API 稍慢;这对游戏来说可能很重要。