Linux的语音识别软件
作者:丁大勇很久以来,与计算机进行交谈一直是科幻小说惯用的故事情节,直到今天真正的交谈也只有在小说中才能实现。但是在过去的十年中,语音识别软件的发展速度非常迅速。目前,市面上出现了多种支持不同操作系统的语音识别控制软件。也许许多人并没有意识到Linux桌面系统也完全可以用声音来控制,并且软件开发人员们已经取得了一定的成果。下面我们就对Linux系统下的语音识别软件进行分析概括,以便帮助大家了解其优势和缺陷。
Linux上的语音识别软件
Linux系统下的语音控制软件可以为身患残疾或由于过度使用计算机而患计算机综合症的人提供使用Linux系统的机会。此前他们不得不改装其它的操作系统,以获得语音识别技术支持。即使不考虑特殊因素,普通人也可以通过使用语音识别软件,使操作计算机变得更为简单有趣。尽管本文对语音识别系统未来的发展趋势深表忧虑(原因是它们并不能完全把手解放出来),但是它们的确可以分担一部分手的工作。
目前已经有两种套装软件中含有支持Linux系统的语音控制软件。一种是IBM 开发的支持Linux的ViaVoice,它可以提供一些基本的语音识别功能;另一种是GPL下的Xvoice,它通过ViaVoice库来为桌面系统和应用程序提供语音控制功能。
IBM 的Linux ViaVoice是美语版本,目前只在美国和加拿大销售。它的售价大约是40美元,包括送货费和一副耳机。用户也可以从IBM的网站上下载ViaVoice,并可享受一定的价格优惠。新版本的ViaVoice在Mandrake 8.0 PowerPack和ProSuite中也可以找到。目前,Mandrake ViaVoice既可以支持英国英语,也可以支持美国英语、法语和德语。Mandrake 8.0以后的版本将不再包含ViaVoice。本文将着重介绍IBM ViaVoice的安装和使用。
应用ViaVoice
Linux ViaVoice需要机器的配置为:Pentium MMX 233以上的CPU、128MB的内存,以及16位的声卡。实际上,ViaVoice是专门为Red Hat 6.2设计开发的,但是用户在Red Hat 7.3环境和其它Linux版本中也可以正常地运行ViaVoice。当然用户也有可能在安装过程中遇到一些问题。
在安装ViaVoice语音识别软件前,要首先安装Java运行环境。ViaVoice 1.0和1.1版本是在JRE-1.2.2环境下进行测试的。使用正确的版本可以避免在不同JRE环境下的不兼容。
JRE安装完毕后,将安装盘放入光驱并运行根目录下的vvsetup,然后再运行vvstartuser将自己设为ViaVoice用户,并且设置好适当的音量,最后便是反复练习,使软件适应自己的声音。切记安装顺序决不能颠倒。
“易做图”ViaVoice
与其它语音识别软件一样,第一次安装的ViaVoice并不能对用户的声音识别得十分准确。使用者必须对它进行一番“易做图”,然后才能使它识别使用者的声音。
“易做图”ViaVoice的一种方法就是按照用户手册中的词语反复的朗读。对于大多数用户来说,这一点并不难,但是手册中的词语也许并不是用户经常用到的,因此这个方法的效率并不是很高。
比较好的方法是在工作时利用ViaVoice的Dictation应用软件。它是用Java语言写成的。当用户进行口述时,一些词语也许不能被正确识别,当这种情况发生时,用户可以使用Dictation中的适当工具对其进行修改。这样ViaVoice便可以对识别工具进行修正,以便更精确地识别用户的声音。这种方法也许会花费较多的力气,但是类似的修改可以用语音命令来完成。不过请注意随时存盘,因为Dictation并不十分稳定。
曾经有一位专家说,目前的语音识别软件只要经过10到60小时的“易做图”,便可以达到98%的正确率。但是到目前为止,对Linux环境下的ViaVoice进行测试的结果是,它的正确率只有92%到95%,绝大多数的语音命令都可以被正确识别。即使用户只花费几个小时进行练习,也可以发现ViaVoice的正确率明显提高。不过用户在使用时要特别注意,词语的发音、麦克风的质量和周围环境都会影响语音识别的正确率。
XVoice控制Linux桌面
当用户完成ViaVoice的安装并训练了一段时间后,便可以安装Xvoice了。Xvoice的作用是对桌面系统及应用软件进行控制。ViaVoice则没有这些功能。用户可以到xvoice.sourceforge.net去下载Xvoice软件,注意一定要事先安装RPM,因为源程序需要Linux SDK中的ViaVoice中断运行。
安装完成后,在最后出现的窗口中输入xvoice m,注意不要运行Dictation。这时用户可以做一个简单的测试,口述命令“下一窗口”,桌面上应该出现另一个窗口。
Xvoice允许用户事先设定好一些操作的口述命令。一套口述命令被称为一个语法组。语法组可以与确定的应用程序、窗口或者应用程序中的某一模块联系在一起,也可以由上下文产生。由口述命令调用的操作可以包括敲键盘、鼠标事件、运行外部命令或三者的任意结合。
Xvoice使用ViaVoice语音库来识别命令和常规文字。xvoice.xml配置文件可以对命令进行定义。Xvoice使用标准的配置文件,其位置是/usr/share/xvoice/xvoice.xml。当然用户也可以对其位置进行修改,例如可以改为~/.xvoice/xvoice.xml。
Xvoice的窗口可以显示哪一个命令语法是被击活的,并且窗口中还包括一个面板可以显示最近口述的命令。如果Xvoice认为用户口述的一些词语与某个命令十分相似难以识别,那么在面板中显示的这一命令将是灰色的,以便提醒用户,并且这条命令不会被执行。
对于任何应用程序窗口,Xvoice都有4种不同的状态。在命令模式下,Xvoice只对命令进行识别;在听写模式下,Xvoice不识别特定的应用程序命令,只是显示出它能识别的词语;在空闲模式下,只有一般命令可以被识别;最后,在命令和听写模式下,口述词语和命令都可以被识别,这时用户需要在命令的前后稍加停顿,以便与文本相区别。
当用户第一次运行某一应用程序时,Xvoice会自动启动命令模式。如果用户想同时打开听写模式,只需要说“听写模式”便可以了;如果想关闭听写模式,也只需要说“停止听写模式”就万事大吉了。
当然,最好的方法是将Xvoice窗口置于系统的窗口管理器中,这样你就可以随时了解它的工作情况了。如果你想在开机时便自动运行Xvoice,只要将xvoice m 放入窗口管理器的启动程序中就行了。
声控应用程序
下面来看一看如何为应用程序定义语法。首先,将要定义语法的软件定义为一个可读的名字,然后为程序的窗口命名一个语句,这样Xvoice便可以识别哪个语法命令是要激活的。在第一行,可以看到一个特殊的固定应用程序名,而它并不是窗口标题。这一特殊的应用程序名必须上下文统一。
应用程序的标签中包含有听写属性。如果条件为真,则首次运行语句时,Xvoice自动进入听写模式。语句的第二行包含有一些在<define name='numbers'>区中已经定义过的值。用户可以在定义区中自行定义标记,并应用于整个配置文件中。
语句的第3行举例说明定义区内可以包含的内容,而这里的命令标记只能在本命令范围内使用。这一行的主要作用是通过语音命令各自的箭头键将彼此互联系起来。当执行命令时,系统会将语音命令与相应的键盘命令对应起来。语音命令的识别转换过程从第4行语句开始。第4行到第8行都是与键盘操作相关的语句,与鼠标相关的语句在第9行到第15行,第16行到第22行是与其它应用程序相关的命令语句,第23行是结束行。
通过对个人配置文件的编辑,用户几乎可以自动完成过去需要键盘和鼠标才能完成的所有操作过程。许多普通应用软件的语法组,事先已经包含在缺省的配置文件中了,成为用户良好的范例。
语音识别的发展
Xvoice无法控制一些特殊的应用软件和一些主流游戏软件。对于一些诸如GIMP和Netscape软件来说,虽然Xvoice可以对其进行控制,但是由于此类软件需要大量的鼠标操作,用户会对用语音控制鼠标感到十分厌烦。
虽然语音识别软件对于大多数命令和一般的文本都可以正确地识别,但是在某些情况下,即使是一个微小的错误也是不允许。语音软件的使用者必须使自已的声音保持稳定。
另外,虽然XVoice 和ViaVoice可以完成大量的工作,但是用户却无法通过声音控制整个Linux桌面环境。
IBM公司已经发布了新的ViaVoice,但是只支持Mac 和Windows,未来是否能支持Linux目前尚不确定。Xvoice的开发人员们正在努力寻找一种能支持开放系统的替代产品,而不希望再为Xvoice增加新的功能了。