使用Perl让残疾人士重获自由
我们使用Perl做各种事情。网页开发、数据处理、系统管理,甚至是生物信息学;我们大多数人至少在一种情况下使用过Perl。有些人用Perl构建带有图形用户界面(GUI)的最终用户应用程序。据我所知,在这个世界上只有两个人使用Perl来让残疾人生活得更加轻松:Jon Bjornstad 和我。有些人认为我们使用Perl的方式很特别,但我的故事会告诉你,我只是像任何其他能够编写软件的父亲一样,为我的孩子做了我应该做的事。
过去
1995年,我的大女儿Krista出生。她来得太早了,怀孕只有27.5周。这次早产导致她在生命的前三个月里出现了许多并发症。幸运的是,她活了下来,但在不能自主呼吸的情况下患肺炎三次,会导致严重的窒息,进而导致严重的脑损伤。几个月后,当她离开医院时,很明显,脑损伤导致她患有痉挛性四肢麻痹。
随着Krista的成长,她能做什么,不能做什么变得越来越清楚。痉挛意味着你不能像你想的那样移动身体中的肌肉。有些人不能走路,但可以做其他所有事情。在Krista的情况下,她不能走路,不能坐着,不能用她的手拿任何东西,甚至保持头部竖直都很困难。说话是使用嘴巴和喉咙的肌肉,所以你可以想象,对她来说说话几乎是不可行的。
到2000年底,Krista去了鹿特丹的一所特殊学校。但是,如果不能说话或不能写下你想说的话,上学对老师和学生的难度都是很大的。我们必须找到一种方法让Krista能够进行交流。
我和Krista的言语病理学家和矫形外科医生一起开始寻找她可以用来自我表达的设备。这些设备应该允许她从符号中选择,这样就可以发音一个词或一个句子。测试了多种设备,但所有这些设备要么需要她用手或脚进行一些她无法完成的动作,要么给她提供的词汇选择太少了。
然后我们研究了可用的通讯软件,以便她可以使用适配的输入设备(在她的情况下是一个内置开关的头靠)来控制应用程序。的确,有一些软件可以用来,但最佳匹配的是一款自动扫描屏幕上符号的程序,当所需的符号被突出显示时,她必须移动头部来选择它。问题是时间。如果你移动头部左右两边本身就非常困难,那么在期望的时刻采取这一行动几乎是不可能的。
pVoice
我们必须做些什么。没有合适的设备或软件应用程序可用。我想了这个建议,并建议我可以尝试自己编写一个简单的应用程序。它将基于我们找到的最佳匹配(自动扫描软件)的想法,但这个软件将没有自动扫描。相反,用头部向右移动意味着“转到下一个项目”,而向左移动则意味着“选择突出显示的项目”。这意味着她需要很多时间才能到达想要的单词,但比完全无法选择正确的单词要好。
符号需要被分类,这样在她电脑上的词汇库中就会有一些逻辑。她最初从“家庭”这一类别开始,包含了一些家庭成员的照片,“学校”类别包含了学校里的几个活动,还有“照顾”类别,其中包含诸如“上厕所”、“洗澡”等短语。
到2001年1月底,我开始编程。使用Perl。也许Perl不是为残疾人编写GUI应用程序的最佳选择,但它是我的首选语言。事实证明它非常适合这项工作!使用Tk,我迅速搭建了一个美观的界面。Win32::Sound(在Linux上使用Play命令)使我能够“发音”预先录制的单词。两周内,我就完成了pVoice的第一个版本(这个名字是我给这个应用程序取的,而且每个人都会问我‘p’代表什么:‘p’代表Perl)。Krista开始尝试这个应用程序,非常高兴。她终于有了一种表达自己想法的方法!
当然,在最开始她词汇量并不多。主要想法是让她学会如何使用它。但每周或两周我们就会添加更多的符号或照片,扩展她的词汇。
到2001年4月底,我把这个第一个pVoice版本的代码发布在PerlMonks上,并为需要的人设立了一个下载网页。反响非常热烈。每个人都喜欢这个想法,并且提出了改进代码或增加功能的建议。Krista的治疗师也非常热情,并要求添加新功能。
不幸的是,原始的pVoice只是一个快速编写的程序,以便让事情开始运转。它并没有设计来添加人们所要求的所有功能。所以我决定我必须重写整个程序。
这一次,它必须是一个设计精良的应用程序。我想用wxPerl代替Tk的(在我看来)丑陋的Motif外观,我想使用语音合成器而不是预先录制的.wav文件,最重要的是,我想让它更容易使用。原始应用程序不易安装,修改词汇库是基于你熟悉你选择的操作系统:你必须自己将文件放入正确的目录并手动修改文本文件。对于程序员来说这是一个简单的任务,但对于最终用户来说却相当困难。
直到2002年夏天,我才开始着手下一个pVoice版本的开发。由于我个人生活中发生了一些事情,我几乎一年没有工作。由于Krista正在学习阅读和写作,没有方法表达她能写的东西,我决定不立即开始重写pVoice,而是先构建pType。
pType将允许她在屏幕上选择单个字母,在屏幕底部的文本输入字段中形成单词——如果需要的话,还可以为她发音。pType是我对pVoice 2.0将会是什么样子的尝试:它使用了wxPerl、Microsoft Agent进行语音合成,并且更易于使用。2002年10月,pType完成,我最终可以开始开发pVoice 2.0。在复制粘贴我为pType编写的很多代码的同时,我尽量使pVoice尽可能模块化。我还尝试使设计可扩展,这样我将来就能添加功能——甚至是我之前没有想过的功能。
今年三月,终于到了发布pVoice 2.0的时候。安装它非常简单:使用PerlApp将其编译为独立的可执行文件,并使用InnoSetup创建了一个看起来不错的安装程序。应用程序看起来更有吸引力,因为我使用了wxPerl,它可以让你的应用程序看起来像它运行的操作系统。它对用户友好,因为用户不需要修改任何文件就可以使用该应用程序:所有对词汇的修改和添加都可以通过易于理解的对话框窗口在应用程序内部完成。我对结果相当满意,尽管我已知道在未来版本中还有一些功能要添加。
现状
此刻,重写在线帮助文件是我可以发布pVoice 2.1的最后一步。那个版本将支持所有与Microsoft SAPI 4兼容的语音引擎,更好的国际化支持,可以在类别内拥有无限深度的类别(在pVoice 2.0之前,您只有一层类别的单词和句子),可以自己定义图像的行数和列数,以及许多小改进。几乎所有这些改进和功能添加都是由尝试过pVoice 2.0的人提出的。这是个好消息,因为它意味着需要这类软件的人正在发现开源替代品,以替代那些极为昂贵的商业应用程序。
许多人问我pVoice有多少用户。这是一个我无法回答的问题。你怎么衡量开源软件的使用量呢?自2003年1月1日起,大约有400人下载了pVoice。另一方面,邮件列表有大约50名订阅者。那么,有多少人实际上在使用pVoice呢?我说不出来。
未来
我希望能在这接下来的12个月内增加用户数量。Perl基金会(TPF)提供了一项它的补助金,用于推广pVoice。我将用这笔钱去参加明年的OSCON,并希望在那里谈论pVoice。在波特兰期间,我将尝试在该地区获得其他演讲机会,试图说服人们,他们不必总是花很多钱购买商业软件,而是有SueCenter和pVoice这样的替代品。在听到TPF补助金的消息后不久,我还听说我将收到一笔来自某人的大量捐款(此人希望保持匿名),这笔捐款也可以用于推广pVoice或用于其他目的,如添加到pVoice的功能可能产生的费用。
尽管如此,pVoice本身还有很多可以改进的地方。我希望让它对我的女儿之外的其他残疾人更有用,我希望有更多的程序翻译(目前我有荷兰语和英语,有热心人提出将其翻译成德语、西班牙语、法语和瑞典语),我希望支持比Microsoft的语音API更多的文本到语音技术(如Festival),并且我想找到时间让pVoice平台再次实现跨平台,因为目前它只能在Windows上运行。我希望编写其他类似于pVoice的程序,如pHouse,这将基于MisterHouse项目的努力,以能够控制家中及周围的电器,但为此我主要需要的是时间。而有了全职工作,时间就变得有限了。
也许,在阅读了所有这些之后,你会想,“我该如何帮忙?”好吧,你可以做很多事情。首先,如果你认识任何与残疾人士工作的人,告诉他们关于pVoice的事。除了SueCenter外,pVoice是我所知的这个领域的唯一开源项目。许多需要这类软件的人无法从保险公司支付软件费用,而不得不支付一大笔钱。有了pVoice,他们有了一个免费的选择。
当然,你也可以帮助我们进行开发。由于pVoice与任何特定的自然语言无关,你可以通过将pVoice翻译成你的母语来提供帮助。由于我在pVoice上的时间有限,如果有更多的开发者加入pVoice将是非常好的。有关pVoice的更多信息,请访问网站。
标签
反馈
这篇文章有什么问题吗?请在GitHub上打开一个问题或拉取请求,帮助我们。