Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2118828
  • 博文数量: 1647
  • 博客积分: 80000
  • 博客等级: 元帅
  • 技术积分: 9980
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-13 15:15
文章分类

全部博文(1647)

文章存档

2011年(1)

2008年(1646)

我的朋友

分类:

2008-10-28 18:22:11


  作者:康芊  
  
  计算机的输入输出界面不仅包括传统意义上的键盘、鼠标、手写识别、显示器等等,还应能听懂“语言”,即语音识别,然后能发“声”,即语音合成。这方面的研究及应用正迅速开展起来。世界上进行语音识别和合成研究的公司很多,如: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下很受欢迎的面向对象编程软件开发包,同时也支持和Unix,可在 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文件?请高手指教,我的电子邮件地址:kangqian@21cn.com。
  
  
  
  
  
  
【责编:admin】

--------------------next---------------------

阅读(317) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~