作者康芊
计算机的输入输出界面不仅包括传统意义上的键盘鼠标手写识别显示器等等还应能听懂语言即语音识别然后能发声即语音合成这方面的研究及应用正迅速开展起来世界上进行语音识别和合成研究的公司很多如IBM微软AT&&TL&&H朗讯Lesstif等等如今这些研究成果已经走出实验室在社会生产服务的各个方面推出了产品如语音电子邮件语音输入方法电话银行客户服务中心智能机器人等等我喜欢使用Linux就应用IBM的语音解决方案定制出一个可以让Linux讲英语的方案
由于我用的是RedHat Linux而且又经常使用英汉词典工具Xdict所以首当其沖的就是对它进行改进首先先得到Xdict的源程序文件可在其它Linux系统(如Turbo Linux )的源程序光盘或网络上下载我得到的版本是xdictsrcrpm然后在File Manager 或 gmc中将上述源文件包打开解压出xdicttgz
()拷贝到根目录进行解压
# tar xzvf xdicttgz
()进入xdict目录
# cd xdict
()用gEdit打开xdict目录中的Makefile文件把INCPATH = I$(QTDIR)/include/qt 改为INCPATH = I$(QTDIR)/usr/include/qt(或根据实际上QT所在目录进行修改)
() 进行编译联接
# make
这样就产生了可执行文件Xdict但是要执行此文件还要将库文件xdictlib和索引文件xdictenidx 拷贝目录/usr/lib/ xdict下
# mkdir p/usr/lib/xdict
找到xdictlib和xdictenidx 拷贝目录/usr/lib/xdict下
#cp xdictlib xdictenidx /usr/lib/xdict
()启动XWindow并运行xdict
# startx
#/xdict
在此简单介绍一下QTQT是Linux下很受欢迎的面向对象编程C++软件开发包同时也支持Windows和Unix可在wwwtrollno/dl/l下载QT Free EditionRedHat Linux 中的是Qt devel的版本include文件安装在/usr/include/qt下例子文档及一系列教程安装在 /usr/lib/qt下的不同目录我们可以访问本地文档file:/usr/lib/qt/html/l其中包括图形GUI控件OpenGL D图形支持面向对象编程的类层次用于IE和Netscape的Qtbased插件和用于熟悉编程语言的节教程
下面我们来简单分析一下Xdict的源程序类Xdict由QT的子类QDialog派生而来对话框类QDialog的详细信息可在file:/usr/lib/qt/html/l中查到其继承关系如图所示
图 QDialog的继承关系
Xdict的主界面是对话框类型的包含一个单词输入编辑框input由QLineEdit类派生而来详细信息参见file:/usr/lib/qt/html/l四个按钮reloadBtnprevBtnnextBtnaboutBtn都从QAutoButton派生详细信息参见autobth和autobtcpp两个列表框Wordlist和Showlist用来显示英语单词及其汉语解释它们都从QListBox类派生详细信息参见file:/usr/lib/qt/html/l
在xdicth源文件中定义了主要的功能函数初始化函数xdict()按任意键处理函数keyPressEvent()单词列表框显示处理inputWord()关于按钮处理aboutBtnclick()重装按钮处理reloadBtnclick()向前按钮处理prevBtnclick()向后按钮处理nextBtnclick()在wordlist中选中某词处理函数wordHighlight()在wordlist中双击选中某词处理函数wordSelected()单词输入结束处理inputReturn()
在xdictcpp中有这些函数的详细结构下面仅简要分析初始化函数xdict()如图所示其它函数可依此类推
要使字典发音只需在输入单词回车后在显示单词汉字译文的同时调用发音函数即在xdictcpp中的按下回车键处理函数中添加eciSpeakText函数即可
图 简要分析初始化函数Xdict()
Void xdict : : inputReturn( )
{ ecispeakText ( input > text ( )false);
……
}
需要注意的是重新编译联接前要在Makefile文件中加入ibmeci库 LIBS = L$( QTDIR)/ lib lqt libmeci (l 是命令行参数)
然后在make 运行一下你就可以享受标准的单词语音了!
另外我想知道在Linux系统下如何进行文件的打包即如何制作rpm文件?请高手指教我的电子邮件地址