当前位置:Linux教程 - Linux - 让Linux“开口”讲英语

让Linux“开口”讲英语

  计算机的输入输出界面不仅包括传统意义上的键盘、鼠标、手写识别、显示器等等,还应能听懂“语言”,即语音识别,然后能发“声”,即语音合成。这方面的研究及应用正迅速开展起来。世界上进行语音识别和合成研究的公司很多,如:IBM、微软、AT&&T、L&&H、朗讯、Lesstif等等。如今,这些研究成果已经走出实验室,在社会生产服务的各个方面推出了产品,如:语音电子邮件、语音输入方法、电话银行、客户服务中心、智能机器人等等。我喜欢使用Linux,就应用IBM的语音解决方案定制出一个可以让Linux讲英语的方案。

  由于我用的是RedHat Linux6.0,而且又经常使用英汉词典工具Xdict,所以首当其冲的就是对它进行改进。首先,先得到Xdict的源程序文件,可在其它Linux系统(如:Turbo Linux 4.0 )的源程序光盘或网络上下载。我得到的版本是xdict-0.1-3.src.rpm。然后在File Manager 或 gmc中将上述源文件包打开,解压出xdict-0.1.tgz。

  (1)拷贝到根目录进行解压:

  # tar -xzvf xdict-0.1.tgz

  (2)进入xdict-0.1目录:

  # cd xdict-0.1

  (3)用gEdit打开xdict-0.1目录中的Makefile文件,把INCPATH = -I$(QTDIR)/include/qt 改为INCPATH = -I$(QTDIR)/usr/include/qt(或根据实际上QT所在目录进行修改)。

  (4) 进行编译,联接:

  # make

  这样就产生了可执行文件Xdict。但是,要执行此文件还要将库文件xdict.lib和索引文件xdicten.idx 拷贝目录/usr/lib/ xdict下:

  # mkdir -p/usr/lib/xdict

  找到xdict.lib和xdicten.idx 拷贝目录/usr/lib/xdict下:

  #cp xdict.lib xdicten.idx /usr/lib/xdict

  (5)启动X-Window并运行xdict:

  # startx

  #./xdict

  在此简单介绍一下QT。QT是Linux下很受欢迎的面向对象编程C++软件开发包,同时也支持Windows和Unix,可在www.troll.no/dl/qtfree_dl.html下载QT Free Edition。RedHat Linux 6.0中的是Qt devel-1.44-6的版本。include文件安装在/usr/include/qt下。例子、文档及一系列教程安装在 /usr/lib/qt下的不同目录。我们可以访问本地文档file:/usr/lib/qt/html/index.html,其中包括图形GUI控件、OpenGL 3D图形支持、面向对象编程的类层次、用于IE和Netscape的Qt-based插件和用于熟悉编程语言的14节教程。

  下面,我们来简单分析一下Xdict的源程序。类Xdict由QT的子类QDialog派生而来,对话框类QDialog的详细信息可在file:/usr/lib/qt/html/qdialog.html中查到,其继承关系如图1所示。


  图1 QDialog的继承关系

  Xdict的主界面是对话框类型的,包含一个单词输入编辑框input,由QLineEdit类派生而来,详细信息参见file:/usr/lib/qt/html/qlineedit.html。四个按钮reloadBtn、prevBtn、nextBtn、aboutBtn都从QAutoButton派生,详细信息参见autobt.h和autobt.cpp。两个列表框Wordlist和Showlist用来显示英语单词及其汉语解释。它们都从QListBox类派生,详细信息参见file:/usr/lib/qt/html/qlistbox.html。

  在xdict.h源文件中定义了主要的功能函数:初始化函数xdict()、按任意键处理函数keyPressEvent()、单词列表框显示处理inputWord()、“关于”按钮处理aboutBtnclick()、“重装”按钮处理reloadBtnclick()、“向前”按钮处理prevBtnclick()、“向后”按钮处理nextBtnclick()、在wordlist中选中某词处理函数wordHighlight()、在wordlist中双击选中某词处理函数wordSelected()、单词输入结束处理inputReturn()。

  在xdict.cpp中有这些函数的详细结构,下面仅简要分析初始化函数xdict(),如图2所示。其它函数可依此类推。

  要使字典发音,只需在输入单词回车后,在显示单词汉字译文的同时调用发音函数,即在xdict.cpp中的按下回车键处理函数中添加eciSpeakText函数即可。


  图2 简要分析初始化函数Xdict()

  Void xdict : : inputReturn( )

  { ecispeakText ( input -> text ( ),false);

  ……

  }

  需要注意的是,重新编译,联接前要在Makefile文件中加入ibmeci50库 LIBS = -L$( QTDIR)/ lib -lqt -libmeci50 ......(-l 是命令行参数)

  然后在make. 运行一下,你就可以享受标准的单词语音了!

  另外,我想知道在Linux系统下如何进行文件的打包,即如何制作.rpm文件?请高手指教,我的电子邮件地址:[email protected]