使用 Speakup 让视障人士也能访问 Linux

作者:Ameer Armaly

在过去的十年中,许多技术领域的进步影响了我们所有人的生活,尤其是全球盲人群体。语音合成技术的进步使得许多不同的操作系统(包括 Linux)都变得可用。其中一个程序,也是迄今为止最好的程序之一,是由 Kirk Reiser 编写并在用户社区的协助下完成的屏幕查看软件包,名为 Speakup。Speakup 的独特之处在于它与内核无缝集成,使其能够从启动到关机进行语音输出,甚至可以调试内核错误,这是我个人可以证明的。它还使 Linux 系统的安装变得更加容易,因为通常不需要串行控制台或有视力的人员协助即可完成安装过程。

屏幕查看软件包是一个程序,它获取屏幕上显示的文本,并将其以口语单词的形式输出。实际的语音输出由语音合成器完成,语音合成器可以是硬件版本或软件版本。硬件合成器要么是带有耳机插孔和音量旋钮的外部盒子,通过串行或 USB 端口插入您的计算机,要么是带有扬声器或耳机输出插孔的 ISA 或 PCI 卡。软件合成器是实际的软件程序,它处理将文本转换为口语单词的所有处理过程,并通过计算机的声卡输出。Speakup 支持硬件和软件合成器,尽管软件合成器需要用户空间程序,因此无法在内核启动时加载,我们稍后将讨论这一点。Speakup 的主要功能包括无缝集成、逻辑按键布局、对笔记本电脑键盘的支持、语音设置的轻松调整以及对软件合成器的支持。

功能

Speakup 充满了功能,其中一些功能在任何其他屏幕阅读器中都找不到。为了阅读文本,Speakup 使用一个不可见的查看光标。然而,与此同时,Speakup 跟踪系统光标,以方便在菜单、编辑器和类似情况下的导航。为了执行诸如移动查看光标之类的任务,Speakup 使用数字小键盘,以下简称小键盘。

小键盘 Enter 键使语音静音,直到下一次按键,这对于使启动消息和/或频繁听到的文本静音非常有用。它还可以同步查看光标与系统光标的位置,方便许多不同的操作。Insert 加小键盘 Enter 键使新文本的阅读静音,直到再次按下此组合键,但仍然允许您在屏幕上移动。

小键盘加号键读取整个屏幕。小键盘 0 或 Insert 键用作类似于 Alt、Ctrl 或 Shift 的修饰键。Speakup 也尊重 NumLock 键,仍然允许用户在必要时从小键盘输入数字。小键盘键 7-9 分别向上移动一行、读取当前行和向下移动一行。类似的安排用于小键盘 4-6 上的单词,以及小键盘 1-3 上的字符。小键盘斜杠标记屏幕上的一个点,如果已经标记了一个点,则将文本复制到内存中。Insert 加小键盘斜杠输入任何先前复制的文本,这通常会导致将其粘贴到系统光标的位置。

小键盘减号键停放查看光标。停放意味着除非用户移动查看光标,否则查看光标的位置不会移动;这对于跟踪文本很有用,这些文本会发生变化,但不在光标处,需要您不断移动到它。此功能也存在于窗口系统中,稍后将介绍。小键盘星号键切换光标跟踪的开启和关闭。这与停放查看光标不同,因为停放不会影响实际发出的语音,只会影响查看光标的位置。光标跟踪始终说出光标所在位置的内容,这对于菜单和编辑器来说是最佳的,但有时您可能需要将其关闭。

笔记本电脑

对于笔记本电脑,Speakup 也有一组按键分配。这些按键分配以 Caps Lock 键或 Windows 徽标键(如果键盘上存在)为中心。当 Caps Lock 键按下时,字母 I、O 和 U 的作用类似于小键盘 7-9。因此,您的安排与小键盘上的安排非常相似。有些地方有所不同——例如,Caps Lock 加 Enter 键的作用类似于小键盘 Enter 键,但总的来说,它非常相似且易于学习。当同时引用 Caps Lock/Windows 键或小键盘 Insert 键时,它们被称为 Speakup 键。

调整设置

调整语音设置(例如音量、语速、音调和音色)可以通过两种方式完成。

第一种方法,也可能是最简单的方法,是使用 Speakup 键加上数字行上的数字。Speakup 键加 1 和 2 分别递减和递增音量;3 和 4 对音调执行相同的操作;最后,5 和 6 对语速执行相同的操作。Speakup 键加 F9 和 F10 控制标点符号,Speakup 键加 F11 和 F12 仅控制阅读时的标点符号。

Speakup 键加 F5 允许您编辑“一些”标点符号级别。它的工作原理是切换您按下的标点符号,以确定是否在指定的级别中发出语音。Speakup 键加 F6 对“大多数”标点符号级别执行相同的操作,Speakup 键加 F7 允许您编辑按单词移动时使用的分隔符;通常是空格和某些标点符号。

另一种更改语音设置的方法是使用 /proc 下的 Speakup 条目。在 /proc/speakup 下,有常见的项目,例如音量、语速、音调、声音、版本和 synth_name,以及一些更高级的项目,涉及定时和其他事项。其中一些值是读/写的,而另一些值是只读的。例如,version 提供 Speakup 的当前修订版,包括 CVS 构建日期(如果适用),但 synth_name 既可以用于获取也可以用于设置正在使用的合成器。synth_direct 是一个只写条目,它将所有文本直接发送到合成器。甚至可以在系统运行时加载新的按键映射,而不必重建内核。还有 punct_some、punct_most 和 delimiters 的值,它们的功能与上述按键功能相同。还有一个名为 speakupconfig 的脚本,它将您在 /proc/speakup 中的所有条目保存下来,用于特定的合成器,并允许您稍后恢复这些设置,从而实现设置的自动加载。

窗口

Speakup 有一个窗口系统,在某些程序中,屏幕的特定区域(未被光标跟踪)频繁更新时,窗口系统非常有用。Speakup 键加 F2 用于设置窗口尺寸;Speakup 键加 F3 清除窗口设置,允许您设置新的窗口设置;Speakup 键加 F4 使窗口静音,阻止其自动读取。但是,您可以使用 Speakup 键加小键盘加号键手动读取窗口。

现在正在进行颜色和高亮识别方面的工作,这将使基于 ncurses 的程序比现在更好地运行,尤其是在菜单中。这意味着与周围文本颜色不同的文本将获得更高的优先级,因此首先被读取。

帮助

有几种方法可以获得有关 Speakup 的帮助。首先,您可以加载名为 speakup_keyhelp 的模块,然后按 Speakup 键加 F1。这将使您进入按键识别模式,可以通过按空格键退出该模式。在此模式下,Speakup 会说出分配给 Speakup 功能的任何按键的描述,并允许您使用箭头键浏览分配列表。获得帮助的另一种方法是查阅内核树的 Documentation 下或网站上提供的 Speakup 指南。本文档包含许多有用的说明,可以帮助新用户开始使用 Speakup,并刷新现有用户的记忆。

安装

Speakup 与其他屏幕阅读器程序最大的不同之处在于,它实际上是内核的一部分。安装脚本将一些补丁应用于一些内核源文件,并将相关的 Speakup 源文件复制到内核树中的 drivers/char 中。然后,当make config执行时,会有一个用于控制台语音输出和 Speakup 的部分。在那里,您可以选择要直接构建到内核中还是作为模块构建的合成器,尽管软件语音支持只能作为模块构建。

您还可以选择要在启动时作为默认合成器的合成器。因此,如果您将所有内容都构建到内核中,您将拥有一个从启动到关机完全可以发声的 Linux 系统。这使得盲人无需任何有视力的人员的协助即可安装 Linux,因为安装过程中的每一步都会发声。

Debian、Fedora 和 Slackware 这三个主要发行版都有 Speakup 修改过的 ISO 镜像。Slackware 实际上已将 Speakup 纳入其官方安装设置中,从而进一步简化了操作。还有一个启用 Speakup 的 Knoppix 版本,这是一个基于 CD 的基本 Linux 发行版。这使得想要快速了解 Linux 系统的人只需启动 CD,就可以让系统发出声音,而无需担心安装,除非他们有兴趣安装。它对于崩溃恢复也非常有用。

软件语音

如前所述,Speakup 支持带有某些用户空间支持的软件语音合成器。一些更著名的软件合成器包括 Festival、Flite、Freetts 和 IBM 的 VivaVoice Outloud(已不再受支持)。Speakup 中的软件语音以另一个名为 Speech Dispatcher 的程序为中心。Speech Dispatcher 是一个框架,用于为多个软件合成器提供单一接口。它通过一系列程序来实现这一点,这些程序为 Emacs 等元素提供 Speech Dispatcher 接口,并为多种语言提供库。它还具有 tcp 协议,用于将语音从服务器传输到执行实际输出的客户端。

Speakup 有一个通用的软件合成器驱动程序,名为 /dev/softsynth,它输出通常会发送到硬件合成器的文本。Speech Dispatcher 的一个模块,名为 speechd-up,从 /dev/softsynth 获取文本并将其发送到 Speech Dispatcher 和用户选择的软件合成器。支持 Festival、Flite、Dectalk 软件和通用合成器。您还可以通过调整配置文件来集成其他合成器。从性能上看,与硬件合成器相比,软件合成器的响应速度略有滞后,但考虑到实际情况,总体结果还不错。

第一步是让 Speech Dispatcher 正常工作,这根本不难;只需编译它即可。您必须编辑配置文件以告知它您要使用的合成器;默认情况下它使用 Flite。然后,编译并安装 speechd-up。要启动软件语音,如果您尚未加载 speakup_sftsyn 模块,请加载它,然后运行 speechd-up。如果您通过 init 脚本执行此操作,您仍然会获得一个早期发声的系统,尽管不是完全在内核中。

未来

Speakup 未来计划了很多事情。正如之前提到的,由于美国盲人印刷所的一些人员的帮助,颜色识别和高亮跟踪工作已经开始。这将使许多基于菜单的程序能够更流畅地发声。

计划中的另一个新功能是键盘宏,允许用户通过按一个键完成许多不同的任务。我们最终希望拥有屏幕内存查找功能,以及转到功能以转到屏幕上的特定坐标集。

另一个正在考虑和分析的问题是配置文件。这些文件将以某种方式在执行其相应的程序时加载,并将包含该程序运行所需的声音、宏和其他信息。

所有这些以及更多的功能都计划在未来的 Speakup 中实现,前提是人们愿意帮助并贡献他们的时间,为使 Linux 对全球盲人群体无障碍做出努力。

结论

今天,技术彻底改变了全球盲人群体的生活。计算机使我们比以往任何时候都更容易访问数据,互联网进入主流使得每个人之间的交流和联系比以往任何时候都更加容易。Linux 系统本质上是经济的,不需要最新的硬件即可良好运行。这对于可能无法获得理想资金的世界盲人群体尤其有帮助。现在,对于这些人来说,有一个廉价且可行的解决方案,即带有 Speakup 的完全发声的 Linux 系统;随着软件语音和 Speech Dispatcher 的引入,它变得更加便宜了。

本文的资源: /article/8586

Ameer Armaly 是一名 16 岁的高中三年级学生。他出生时就失明,喜欢编程、美食和科幻小说。他借助大声朗读文本的语音程序使用计算机,有时速度高达每分钟 550 个单词。

加载 Disqus 评论