科技行者

行者学院 转型私董会 科技行者专题报道 网红大战科技行者

知识库

知识库 安全导航

至顶网软件频道精华推荐:让Linux“开口”讲英语

精华推荐:让Linux“开口”讲英语

  • 扫一扫
    分享文章到微信

  • 扫一扫
    关注官方公众号
    至顶头条

计算机的输入输出界面不仅包括传统意义上的键盘、鼠标、手写识别、显示器等等,还应能听懂“语言”,即语音识别,然后能发“声”,即语音合成

2007年9月10日

关键字: 英语 操作系统 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运行一下,你就可以享受标准的单词语音了!

    • 评论
    • 分享微博
    • 分享邮件
    邮件订阅

    如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。

    重磅专题
    往期文章
    最新文章