Linux中国 Linux中国门户站!
设为主页 设为主页
收藏本站 收藏本站
 
当前位置 :首页 ->Linux技术 ->系统管理 ->正文

让Linux“开口”讲英语

来源:Linux-cn.com 作者:Webmaster 时间:2007-05-05 点击: [收藏] [投稿]

  计算机的输入输出界面不仅包括传统意义上的键盘、鼠标、手写识别、显示器等等,还应能听懂“语言”,即语音识别,然后能发“声”,即语音合成。这方面的研究及应用正迅速开展起来。世界上进行语音识别和合成研究的公司很多,如: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所示。

QDialog的继承关系

  图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函数即可。

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

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

   
  Void xdict : : inputReturn( ) 
  { ecispeakText ( input -> text ( ),false); 
  …… 
  } 

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

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




 如果您对本文有任何疑问或者建议,请到讨论区发表您的意见: >> 论坛入口 <<



上一篇:Linux下网络分析例解   下一篇:使用JNLP和Java Web Start发布软件

文章评论】 【收藏本文】 【推荐好友】 【打印本文】 【我要投稿】 【论坛讨论
更多相关文章
Power by linux-cn.com 粤ICP备05006655号