计算机的输入输出界面不仅包括传统意义上的键盘、鼠标、手写识别、显示器等等,还应能听懂“语言”,即语音识别,然后能发“声”,即语音合成。这方面的研究及应用正迅速开展起来。世界上进行语音识别和合成研究的公司很多,如: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运行一下,你就可以享受标准的单词语音了!
欢迎访问最专业的网吧论坛,无盘论坛,网吧经营,网咖管理,网吧专业论坛https://bbs.txwb.com |
关注天下网吧微信,了解网吧网咖经营管理,安装维护:
本文来源:赛迪网 作者:佚名