编注:本文是「我的 2018 年度关键词」年度征文活动的第 4 篇入围文章,本文仅代表作者本人观点,少数派对标题和排版略作调整。
想了解如何参与本次征文,赢取各种丰厚奖品,你可以 点此查看 活动规则和奖品清单。
盲人能用电脑吗?
没问题。盲人使用电脑需要借助一类名为「屏幕朗读器」(简称「读屏」)的软件,软件携带的语音库能对键盘的动作给出语音反馈:当用 Tab 或光标等按键移动焦点时,读屏能朗读焦点所在处的文字;当输入字母和数字时读屏会读出按下的字符;当输入汉字时,如果读屏和输入法都条件具备,读屏就能读出经过组词解释的候选字词(如「多少的少,数字的数,派别的派」这样),从而帮助我们选字。
Windows 系统的读屏软件需要另行安装,苹果的 macOS 和 iOS 系统则有内置的这种辅助功能,叫做「旁白(VoiceOver)」。
什么是「软件无障碍设计」?什么叫「支持读屏」?符合什么条件的应用才能称为「盲人友好型应用」?苹果的 macOS 和 iOS、微软的 Windows 以及谷歌的 Android 系统都有各自的软件无障碍设计规范(Accessibility),旨在让开发者设计出便于视力等残障人士使用的 App。一款软件只有遵循了无障碍规范的设计才能支持读屏,在此基础上根据盲人的实际操作进一步完善细节体验,才可成为「盲人友好型应用」。
简言之,支持了读屏叫做「能用」,对盲人友好叫做「好用」。一般来说,无障碍设计并不会增加程序员太多的开发成本,只要对它有所了解,在编写过程中细心留意便可做好。
向开发者请缨
去年 9 月,我的台式机由于年老体弱出现了多器官功能衰竭,我想与其消费一两千块更换核心部件,倒不如先花上一两百给我的 MacBook 装上外骨骼——蓝牙键盘,看看它能否替代我业已驾轻就熟的微软生态,满足我的日常需要再说。
几天下来总体感觉良好,唯一遗憾的就是汉字输入跟不上,因为苹果的自带输入法旁白跟读太慢了,无法在按下字母后立即读出选中的字词,经常是快速敲下了 7、8 个字母后,读屏还要花上 3-5 秒才能读完候选字词。以前在 Mac 上打字不多还无所谓,而现在它成了主力设备,这种慢了好几拍的反应速度对于每天要输入大量文字的我简直是无法忍受的。怎么办?
这时,我想起了不久前听说落格输入法正在开发的 Mac 第 2 版支持读屏,便立马找到官网,下载了测试版装上,一用之下发现它的旁白跟读速度很快,基本上是按下即读,太好了!之前用过这位开发者制作的 iOS 版的落格输入法,他优秀的软件无障碍设计水准让我有理由相信,这个 Mac 版也很可能会成为另一款出色的盲人友好型应用。
打字的读屏反应速度上来了,另一个问题又出现了。前面我们介绍过,盲人打字的时候需要对候选字进行组词解释,这种包含了大量汉字及其解释词的键值对数据库俗称为「解释库」,一个解释库的优劣直接决定了我们选字的效率。落格采用的解释库不同于苹果,是国内的微软读屏软件所通用的解释库,这个库的优点是我们非常熟悉,但也存在着诸如多音字解释冗余、一些解释词指向的汉字不明确等比较严重的弊端,这些弊端在很大程度上制约了我们输入的速度。
面对着这些复杂多样、无法通过自动化程序批量优化的弊病和总数超过 10000 条的解释库规模,我背着手在房间里踱起了步,思考是否要向开发者请缨完善这个解释库。一方面,这是个大工程,需要很多的时间和精力;另一方面,不知道解释库文件是什么格式,读屏能否方便地支持修改?再者,开发者能信任我去尝试吗?
最后是我去年编写 Mac 上用于组词解释汉字的脚本程序的经历激励了我。那时我不是就花了整整一个月的时间来整理这个解释库吗?在那以后,它现在每天给我带来了多少的便利啊!这是磨刀砍柴、一劳永逸的事情,值得去做。至于读屏能否支持对解释库文件的修改,得先有这个文件再说,而想拿到这个文件,就必须获得开发者的信任。那么他态度如何,我不争取一下又怎么知道他不信任我呢?
思量既定,立马写信。我陈述了所有可能说服作者的理由,从中文专业到当过教师,从读屏使用历史到解释存在弊端,从去年的整理原则到现在愿意提供优化。敲下了回车后,我便开始了紧张忐忑的等待。熬了大半天,QQ 的叮咚声响了,是他回复了,他支持我的想法!反复地听着这几条消息,我的手都有些颤抖了,真是太棒了!很快地,他便给我发来了输入法的解释库文件。
全面优化解释库
对比了打开文件的几个程序后,我选择了一种支持读屏最好、最便于修改的方式。按捺不住兴奋的心情,我在手机播报 0 点的时候拿起了「手术刀」。对象:一万条简繁体汉字的解释,方法:逐条检查修正,开工!
在接下来的这些日夜里,优化解释库这项工作已经超越了我的本职–按摩,成为了我生活中的首要任务。我根据问题解释的不同类型,分别采取了对应的处理方法,主要是以下这些方面。
科学精简多音字的多个解释
对于约占汉字总量 20% 的多音字,这个解释库给它们的每个读音都分别组了词,比如「落」字,它的解释是「落(là)下的落,落(luò)后的落,落(lào)架的落」,这样当我们想打「落格」的时候,双拼按下 LOGE 候选栏出现了「落个」和「落格」,我们只能先听完「落」的这3个解释才能听到当前选中的这个词后面的字是「个」还是「格」,这将会浪费我们多少不必要的时间啊?
我按照这些读音出现的频率,只留下一个最常见的读音的解释,其余的全部删掉。有的多音字两个读音都比较常见,难以取舍,就根据婷婷音库的读法来确定,这样会让听觉感到比较自然。比如「重」的解释「重复的重,重量的重」都很常用,而婷婷读 zhòng
,那就留下「重量的重」,如果留下「重复的重」,那听到的将是「重(chóng)复的重(zhòng)」,不顺耳。
通过加字明确和更换新词两种方法实现解释词指向汉字的唯一性
遇到解释词指向的汉字不明确的,我首先考虑的是能否通过加上一两个字来使其明确,因为这样能最大限度地接近已经习惯了国内读屏解释的用户的记忆。
比如「纪」字,解释是「纪录的纪」,这容易让人误以为是「记」,但可以给它加上一个「片」字变成「纪录片的纪」,就不会和「记」混淆了;「枇」和「琵」的解释是「枇杷的枇」和「琵琶的琵」,读音相同无法选择,可以分别加上「膏」字和「弹」字变成「枇杷膏的枇」和「弹琵琶的琵」,这就能够选择了;「璧」和「株」从成语中不当地取字,以「完璧的璧」和「株守的株」来作为解释,让人难以分辨和不知所云。如果想更换成别的解释词,也没有太好的简短、通俗的组词,于是我就分别将它们直接补全为「完璧归赵的璧」和「守株待兔的株」。
我想,多花这零点几秒的时间来听一个明确的解释要比在无法确定的情况下先加上一两个字打一个词,然后等上了屏在来删掉多余的字要快捷得多。
确实不适合通过加字明确的,我才采用更换新的解释词的方式。
例如「锋」组词「尖锋的锋」,而「峰」也同样可以组词「尖峰的峰」,所以不好分辨。虽然加上「刀剑」二字变成「刀剑尖锋的锋」可以和「峰」区分,但这样的话就是 4 个字了,有些冗长,更重要的是,「锋」字完全有更简短、更通俗的组词,并不是非「刀剑尖锋」不可,那就干脆将它改为「先锋的锋」吧;「盲」和「忙」的解释分别是「盲目的盲」和「忙碌的忙」,读音太过接近,在嘈杂的环境中难以听清,就将「盲目的盲」改成了「盲人的盲」。
不过这种换用新词的方式会让人觉得陌生,所以除非迫不得已,我一般不采用,常见字也就 10 个左右。
完善繁体字的解释。
繁体字的解释夹杂在简体字中,约有 3000 多条,数量庞大。这个库对繁体字的解释是繁体的说明在前、组词在后,像「繁体的鍵,鍵盘的鍵」这样。其实我们最先想听到的是组词,其次才是繁体的说明,应该是「鍵盘的鍵,繁体的鍵」这样才合理,所以,我便将它们的前后这两部分都逐一颠倒了过来。
有的繁体字解释和简体字不同,如「许多的许」繁体字解释成了「言午的許」,「词组的词」繁体字解释成了「詞素的詞」,这势必会引起一些不识字的盲人的茫然和疑惑,因而有必要参照它们简体字的解释,全部统一过来。
婷婷音库发音异常的字,用同音字进行纠正
「琵」的解释词是「弹琵琶」,婷婷读的是 dàn pípá
,不正确,就用「谈」字将「弹」换掉,这样我们听到的才是 tán pípá
,正确;「确定的确」由于「的」会和后面的「确」连成词语,读为 díqué
,让人感觉奇怪,把「确」改为「却」,不可能和前面的「的」组词了,听起来也就正常了……
另外,大量繁体字婷婷音库都有莫名其妙的读音,也需要一一校正。不用担心,我们需要的只是听到的读音,替换同音字并不会对识字形成误导。
每小时处理 200-250 条,每天累计工作 4 小时,急性子的我几天下来,肩膀开始僵硬了,有时也头晕脑胀,好在有同事可以帮忙按摩。奋战了 10 天后,赶在这个第 2 版正式发售之前,我的第一次全库优化终于完工了!长长地舒了一口气,转转酸痛的颈项,我把热腾腾的解释库文件发给了作者。不料他居然也是个效率党,只过了一天,新增了落格解释库这一选项的测试版就出来了。
正出门在外的我迫不及待地用手机热点让 Mac 下载了更新。现在快速按键的同时旁白也迅速地读出了经过我辛苦完善的清爽、准确的解释,长久以来国内视障者在 Mac 上高效录入汉字的梦想变成了现实!我情不自禁地举起了双手大声欢呼「耶」!这可真是一份在国际盲人日来临之际给自己最好的礼物啊!
软件发售的那一天,我一大早就拍下了,紧接着便一鼓作气,立即开始了对整个解释库的第二轮逐条过筛,查漏补缺。像上次那样,又夜以继日地劳动了 5 天,第二轮优化完成。两次总计删除多余的解释 2000 多条,通过加字明确指向的 140 条,更换解释词的 30 余条,繁体说明后移的超过 3000 条,繁体字解释和简体统一的 200 条以上,纠正读音的不计其数。
随着使用的深入,我从自己和盲人用户的需要出发,对输入法提出了一些完善功能的建议,比如现在三个字以上的候选词读屏是先读出词组再逐字解释,我希望能增加一个不先读词直接解释的选项,让像我这样不喜欢整句输入的人能减少听读时间、加快输入效率;比如中英文切换的时候没有提示,想要有个音效。这些建议作者都很快地就在软件中添加了功能,这让我很是感动,因为很少有开发者能对如此小众的视障用户的需求有这样高度的重视!
12 月初,为了更加精致,我又对一些专业用字的解释进行了重点优化:对 40 多个偏旁部首,去掉原来「手旁的扌」、「宝盖的冖」这样不规范的解释,代之以「提手旁」、「秃宝盖」等完整的名称;对几十个非常用字的金属和气体元素名称的解释,也全部进行了统一。
至此,落格解释库的优化可以说是画上了一个圆满的逗号。
「Log」作为年度关键字,妙不可言
站在 2019 年的晨曦中,回顾过去的 365 天,最让我觉得有成就感的是为我自己,也为其他落格输入法的盲人用户贡献出了这套听读更省时、选字更精准的解释库,有效地支持了 Mac 上的汉字高速录入,大大便利了日常办公。这个年度关键字,我觉得没有比「Log」这个单词更准确、更巧妙的了!
首先, 「Log」本身就是「落格」的英文名;其次,在编程领域它是指事件日志,我的整个优化工作,其实就特别类似于在代码出错的时候逐条查看事件日志,并一一加以修正的过程。
看到一则新闻,说在今年悉尼烟花秀的最后,大屏幕打出了「新年快乐 2018!」的问候,我想,如果我是主办方的发言人,我会这样回答:「是的,这是我们故意为之,因为我们相信这可以警醒人们时光飞逝,切勿虚度,要珍惜好当下,让生活更有价值,焕发光彩!」
> 下载少数派 客户端、关注 少数派公众号,找到数字时代更好的生活方式 🥳
> 特惠、好用的硬件产品,尽在 少数派sspai官方店铺 🛒
今年,你除了可以参加年度征文活动,赢取 iPad Pro、Kindle Oasis、戴森吸尘器、HomePod 等丰厚奖品,也可以去微博参与「我的 2018 年度瞬间」有奖摄影活动,从今年拍摄的照片里,选出令你印象最深刻的一张。我们同样准备了 GoPro Hero 7 Black、富士 instax 照片打印机等奖品等你来拿。