2. 云南民族大学 电气信息工程学院, 昆明 650500
2. School of Electrical & Information Engineering, Yunnan Minzu University, Kunming 650500, China
自Google在2008年正式发布Android手机操作系统, 并公开其所有原始码之后, Android便成为手机第一个完整的开放开发平台[1]. 而由于其开源的特性, Android操作系统已成为智能手机的主流. 全球众多的开发者支持Android应用开发, 越来越多的软、硬件厂商, 也竞相投入Android相关研发计划. 可以预见的是, 未来越来越多的用户将使用Android智能手机, 各种功能的Android手机应用软件将供不应求.
与此同时, 自中国国家主席习近平提出“一带一路”重大倡议以来, 得到国际社会高度关注. 而云南省在其中的定位是, 发挥区域桥头堡的优势, 打造大湄公河次区域经济合作新高地, 建设成为面向南亚、东南亚的辐射中心. 云南省是中国离泰国距离最短的省份, 作为中国和泰国交流的排头兵, 云南通过自身与泰国的合作, 不断推动着中泰经贸的发展. 近年来, 中泰经贸关系持续稳定增长, 中国是泰国最大贸易伙伴, 泰国是中国在东盟国家中第四大贸易伙伴. 在旅游方面, 中国已成为泰国第一大入境旅游客源国. 在人员交流方面, 目前有2万多泰国留学生在中国学习, 人数在东盟国家中是最多的, 而中国则是泰国最大的留学生生源国. 未来, 中泰两国还将共同推进“一带一路”建设, 打造亚洲命运共同体, 成为国家发展睦邻友好与互利共赢的典范.
语言作为人们沟通的工具, 在中泰双边往来当中发挥着重要作用. 随着汉语与泰语翻译的需求量急剧增加, 如何快速且方便地翻译两国语言, 对于中泰两国人民来说十分重要. 传统的翻译方式大多是采用纸质词典, 不能快速便捷地翻译, 而聘请翻译官费用又十分昂贵, 并且专业的中泰翻译人员有限, 不能满足大众的需求. 而移动互联网的崛起和Android智能手机的普及, 为电子词典的发展提供了契机, 正好可以解决以上的问题. 设计一款基于Android智能手机的汉-英-泰电子词典, 最大限度的满足了人们随时随地查询词典的需要, 成为人们查询词典及移动学习的首选. 本设计虽然是一个个案, 但对于其他语种(如彝文等)信息处理的理论指导, 以及泰语机器翻译系统相关领域的研究具有广泛而深远的意义.
1 电子词典现状分析 1.1 Android平台上的电子词典目前Android应用市场上的电子词典应用软件非常之多, 常见的电子词典涉及中、英、韩、日、德、法、西等主流语言的翻译, 例如金山词霸、沪江小D词典、网易有道词典、欧路词典等应用. 而像百度翻译、有道翻译官、微软必应词典等应用可选择更多语种翻译, 包括爱沙尼亚语、泰语、越南语等小语种的翻译. 市场上的这些应用词典基本具有查词、生词本、语音发音、句子翻译等功能, 但这些客户端通常占用空间和资源较大, 并且需要联网才能翻译一些小语种语言, 使用语音发音功能也需联网, 使用网络流量较大, 对用户的网络流量和网络传输速率要求较高.
1.2 汉-英-泰电子词典发展现状当前存在一些涉及泰语翻译的Android词典软件, 如微软必应词典、百度翻译等都可以在众多语种中选择泰语翻译, 但这些应用只能汉译泰或英译泰的双向互译, 并不能汉-英-泰三语同时互译, 有的应用不能翻译泰语, 有的可以翻译包括泰语的众多语种, 但专门翻译汉-英-泰的软件少之又少. 这些涉及泰语的电子词典使用其相关功能时需要网络流量, 而且几乎没有能从图片中识别泰文的应用. 而本文设计的汉-英-泰互译有声电子词典是一款专门针对汉-英-泰互译的词典APP, 可实现汉-英-泰三语同时互译功能, 能准确翻译泰语, 具有原汁原味泰语真人发音功能, 有丰富的本地词库, 实现真正意义上的随时随地汉-英-泰查询互译, 还具有对话翻译和拍照翻译功能, 填补了泰语电子词典应用市场的空白.
2 系统相关技术介绍 2.1 Android系统简介Android是Google于2007年11月推出的一款基于Linux平台的开源手机操作系统. 它是一种基于Linux的自由及开放源代码的操作系统, 主要使用于移动设备. 如今Android已成为市场占有率最高的手机操作系统[2]. Android系统架构粗略地可分为以下5个部分: Linux内核层、系统库、Dalvik/Art、应用框架层、应用程序层[3], Android系统架构如图1所示. 在Android Studio开发环境下开发Android应用, 官方推荐采用视图和逻辑分离的原则, 也就是使用XML文件来控制界面布局, 然后通过Java代码来控制这些布局和组件的功能[4].
2.2 Android开发环境搭建文章设计的汉-英-泰电子词典是在Android Studio开发环境下完成实现的. 搭建Android Studio开发环境, 首先要下载并配置Java JDK, 在Oracle官方网站下载最新的JDK后, 将其安装至电脑上, 然后配置计算机的JAVA_HOME、CLASSPATH、Path三个环境变量. 其次在Android开发者官网, 下载并安装Android Studio, 至此, Android开发环境便搭建好了. Android Studio集成开发工具界面如图2所示.
2.3 Android数据持久化技术
数据持久化技术就是将数据保存至存储设备中, 保存在存储设备中的数据是处于持久状态的. Android系统内置了SQLite数据库, SQLite是一款轻量级的关系型数据库, 它的运算速度非常快, 占用资源很少. SQLite不仅支持标准的SQL语法, 还遵循了数据库的ACID事务, 文章设计的基于Android平台的汉-英-泰电子词典APP的本地词库, 就是通过SQLite数据库实现的.
3 电子词典客户端研究概括 3.1 系统功能结构总体设计本系统主要可分为五大功能模块: 词典模块、单词本模块、百科模块、翻译模块和更多模块. 本系统的各功能模块的组成如图3所示.
(1)词典模块
此模块为本系统的关键模块, 主要是实现汉-英-泰互相查询的功能, 用户根据实际需要, 输入汉英泰任意一种语言的单词或词组, 点击查询按钮后, 便可查询检索出其对应的其他两种语言的释义, 并且可实现对应的泰语的发音, 还可将生词添加至单词本中.
(2)单词本模块
主要是方便个人学习的, 在此模块可以查看生词, 添加或删除生词, 以达到复习生词的目的.
(3)百科模块
主要包含了一些泰国人文信息, 例如泰国旅游实用口语、泰国名言警句、泰语基础知识等, 都可在此模块查看.
(4)翻译模块
针对长语句翻译, 在此模块可自动检测输入的语言类型, 也可手动选择翻译类型, 包括对话翻译和拍照翻译功能.
(5)更多模块
主要是一些其它的功能, 包括作者介绍和意见反馈等.
3.2 语料库建设本课题组在工程中心机构的支持下, 结合我校东南亚语言学科的优势, 发挥少数民族语言文字、自然语言处理、电子信息等文理交叉、多学科交融综合研究的特色, 建立了泰语语料库. 语料库的建设是在我校国际交流学院留学生, 民族文化学院研究生等协助下, 通过收集高等学校泰语专业教材等方法, 在对语料纠正、翻译和标注后完成的[5]. 最终的泰语语料库是以Excel表形式呈现的, 语料库共包含29945条泰语词汇及其汉语和英语的释义, 这将为后续泰语词汇数据库建设提供帮助. 部分泰文词汇表如图4所示.
3.3 词汇数据库建设计
本设计的目的是在Android智能手机的环境下, 实现具有汉-英-泰词汇相互查询功能的电子词典, 其核心是关于汉-英-泰词汇查询检索的功能, 本设计决定采用本地词库的方式实现上述功能, 因此建立汉-英-泰词汇数据库是必要的. 此外, 生词本的建立以及显示历史查询记录等功能, 也需要将数据储存至数据库表中. 以上提到的功能, 是依托建立相关的SQLite数据库来实现的.
(1)建立汉-英-泰词汇数据库
经仔细分析, 对于在Android Studio开发环境下创建的项目, 当项目中创建一个SQLite数据库时, SQLite数据库就是一个后缀为“.db”的文件, 它是保存在data/data/包名/databases目录下的, 其中包名是指当前已经创建数据库的项目的包名. 操作SQLite数据库是通过Java语句实现的, 每当在数据库表中添加一个词汇就要编写一条Java语句, 如果有很多词汇的话, 创建数据库时就要编写大量的Java语句, 这是不现实的也是十分耗费项目编译时间的. 因此需要在另一个项目中创建好所需的SQLite数据库, 然后将此SQLite数据库导入所需的项目中.
由此可知, 把汉-英-泰词汇数据库做成“.db”文件, 再将其导入至项目的data/data/包名/databases目录下, 项目就可以不用创建数据库, 而直接使用SQLite数据库了, 本设计就是通过在项目中导入数据库实现的.
本课题的泰语语料库是Excel表格形式的, 表格中有29945条泰语词汇及其对应的英汉释义, 将Excel表格转化成后缀为.db的SQLite数据库文件, 通常的做法是利用可视化的SQLite操作工具(如SQLite Expert Professor、Navicat等), 但在实际操作过程中, Excel转换为CSV格式后, 无论是编码方式改为UTF-8还是用记事本打开文档, 泰文都出现了乱码的情况, 故不采用上述的方法. 我们创造性地想出了一个新的方法, 此方法的流程如图5所示, 其基本思路是: 在Android Studio中另外建一个项目用于构建汉-英-泰词汇的SQLite数据库, 首先在这个新建的项目app/libs文件夹中导入操作Excel表格的jar包; 其次, 将泰语词库的Excel表格复制至项目的assets文件夹中; 再次, 在项目的Java代码中编写循环语句, 使得项目可读取Excel表格每一行的内容然后添加至SQLite数据库表中; 最后, 在File Explorer中将创建好的SQLite数据库(“.db”文件)拷贝至电脑上. 之后便可将这个已经创建好的汉-英-泰词汇SQLite数据库, 导入至所需要的项目中, 就可以在项目中使用词汇数据库了.
(2)其它数据库表的建立
本设计除了需要汉-英-泰词汇SQLite数据库之外, 为了实现生词本及历史查询记录的功能, 还需要在SQLite数据库中建立两张表. 在项目中新建MyDatabaseHelper类继承自SQLiteOpenHelper, 在这个类中建立words表和history表, 用于存放生词和历史查询记录的数据, 它们的结构如表1和表2所示.
3.4 语音库建设
我们利用构建好的泰语语料库, 以泰语文字和标注序号作为录音的依据, 采用前期工作开发的原音录音软件, 在安静的实验室里完成了整个泰语录音过程. 录音人员是我校汉语国际教育专业的泰国留学生, 能够保证泰语录音的原汁原味. 最终我们得到了以. WAV为后缀的泰语录音文件, 录音成果如图6所示. 至此, 课题组建立了泰语语音库, 这将为后续汉-英-泰电子词典应用的泰语发音功能提供支撑.
数据库中我们只存储声音音频文件的路径, 具体的声音文件则是存储于手机SD卡中, 当需要播放某泰语录音文件时, 只要通过数据库读取其录音文件的路径, 然后通过路径将音频文件取出, 然后交给媒体播放器播放, 就实现了软件中朗读泰文的目的.
4 电子词典客户端功能实现 4.1 项目结构
在Android Studio中创建一个名为ThaiWangDic的项目, 以此项目来开发汉-英-泰电子词典, Android模式下的项目目录结构如图7所示. 其中asstes文件夹中存放的是已经创建好的汉-英-泰词汇SQLite数据库文件, 当安装此应用时, 程序会将此词库导入至相关目录中. 而res/layout文件夹中存放的是应用各种界面布局的XML文件[6]. Java/com.ymu.thaiwangdic中存放的则是包含各种界面逻辑功能的Java代码[7]. Android Manifest. xml文件则是整个Android项目的配置文件, Activity等组件需要在这个文件里注册, 另外还有一些权限申明要在其中添加[8].
4.2 本地词库的实现将之前创建好的汉-英-泰词汇SQLite数据库(.db文件) 导入项目中, 在安装应用程序时词库会加载至对应路径上, 这就实现了词库的本地化. 在安装应用时, 程序会检查是否存在数据库文件的目录, 若不存在则创建目录, 若存在则将项目assets文件夹中的.db文件加载到该目录中.
4.3 系统主界面系统主界面采用的是底部导航栏的形式, 实现界面的切换. 底部的导航栏存放了多个选项卡, 包括: 词典、单词本、百科、翻译和更多五个部分, 点击选项卡可切换至相关的界面. 系统主界面默认一开始是停留在词典界面的, 主界面如图8所示.
4.4 词典界面
词典界面主要是实现汉-英-泰相互查询的功能, 这个功能也是应用软件的核心功能. 当安装应用程序时, 该软件会使用openDatabase()的方法在词典界面的onCreate方法中导入汉-英-泰词汇SQLite数据库, 代码如下: db=openDatabase();其中db是定义的SQLiteDatabase类型变量. 当用户点击界面上方的文本输入框, 输入汉泰英任意一种语言的单词或词组, 点击查询按钮后, 在查询按钮的单击事件中, 会调用db的query方法在数据库中查找相应的单词释义, 并将查询结果显示出来. 运行界面如图9所示. 该界面的文本输入框由AutoCompleteTextView组件实现, 当用户输入两个字符后, 将进行模糊查询, 检索到与前两个字符相同的单词, 以下拉菜单的形式显示出来, 实现模糊查询. 其整个流程如图10所示.
部分关键Java代码如下(以查询英文为例):
Cursor cursor = db.query("chinathai", null,
"english=?", new String[]{word.getText().toString()}
, null, null, null); //调用query()方法查找单词释义
if(cursor.getCount() > 0) { //若查询有结果
cursor.moveToFirst(); //数据的指针移到第一行
…
result =cursor.getString
(cursor.getColumnIndex("taiwen")); //取出泰语释义
…
cursor.close(); //关闭数据的指针
txv_word.setText(result); } //显示释义
else{txv_word.setText("抱歉, 没有本地释义"); }
基于Android平台的电子词典除实用性与便捷性之外, 与传统纸质词典最大的区别在于可以实现单词语音发音. 在词典界面中, 当查询结果显示出来后, 界面的右上角有一个像喇叭一样的按钮, 点击此按钮, 将会播放此单词对应的泰语真人发音. 还有一个类似五角星的按钮, 点击此按钮可将当前查询到的单词及其相关的释义保存至单词本中, 以便日后查看和复习使用.
(1)泰语真人发音模块
此软件使用Android中的MediaPlayer类来实现音频的播放, 将所有词汇的泰语真人发音资料保存于手机的SD卡当中, 项目中首先创建一个MediaPlayer对象, 当查询检索单词有结果时, 调用setDataSource()方法来设置对应词的泰语音频文件的路径, 再调用prepare()方法使MediaPlayer进入到准备状态, 当播放按钮按下时, 便会调用start()方法播放相关音频了. 最后当播放完音频后需调用reset()方法, 这样下次播放才会正常. 还要注意的是, 要在项目中加入访问SD卡的权限, 才能成功读取SD卡中的音频文件并播放.
(2)添加生词模块
点击添加生词按钮, 系统便会将查询到的单词添加至之前创建好的数据库的words表中, 以便在单词本界面中查看.
4.5 单词本界面单词本界面主要是显示用户添加的生词, 方便用户浏览, 点击一个生词会显示其详细的释义. 在此界面, 用户可以添加或删除生词, 管理生词十分方便, 通过单词本界面, 用户可以及时复习未掌握的生词. 在此界面, 系统运用的是ListView组件显示生词的, 当界面启动时, 系统用cur = db2.rawQuery("SELECT * FROM words", null);语句查询数据库words表中的所有词汇数据, 然后通过SimpleCursorAdapter配置器将生词显示于ListView组件中. 此界面如图11所示.
4.6 百科界面在百科界面, 介绍了一些泰国实用信息, 如泰国旅游实用口语、泰国名言警句、泰语基础知识等. 界面如图12所示. 此界面运用了ScrollView组件嵌套一个TextView组件来显示泰国的实用信息, 之所以实用ScrollView组件是因为它很方便, 它可以允许用户通过滚动的方式查看屏幕以外的内容.
4.7 翻译界面
翻译界面的功能和词典界面的类似, 只是在此界面我们可以翻译较长的语句, 界面顶部有一个下拉选项框, 可以选择翻译的类型, 默认是语言自动检测, 即自动识别输入的语言类型, 然后将其翻译出来. 右上角有对话翻译和拍照翻译按钮. 界面如图13所示.
4.8 更多界面
更多界面是为了实现一些其它更多的功能, 以更好地迎合用户的需要. 此界面包含了设置、意见反馈、检测新版本、关于等模块. 其中关于模块是对软件的作者介绍及申明版权所属的. 此界面如图14所示.
5 系统特色 5.1 特色一: 调用百度语音技术实现对话翻译
对话翻译是指用户对着应用说话(中文或英文)后, 应用立即翻译出对应的释义并播放相应的泰语真人发音, 实现即听、即译、即说的效果. 而利用百度语音识别技术可将用户的声音转化为文字, 运用百度语音识别技术, 首先要在项目的AndroidManifest.xml文件中添加使用麦克风录音等权限; 其次在百度语音开放平台上注册申请API Key和Secret Key, 并下载相关jar包和so库; 然后在项目的app/libs中添加jar包, 在armeabi和mips中添加so库; 最后在对话翻译dialogueActivity.java的onCreate方法中设置API Key和Secret Key等相关参数, 并实例化百度语音识别对话框. 在百度语音识别回调接口中重写onResults方法, 使其用识别的文字查询SQLite词汇数据库, 将释义显示出来并由MediaPlayer播放泰语发音, 便可实现对话翻译功能. 对话翻译界面的activity_dialogue布局主要运用了强大的滚动控件RecyclerView, 它定义在support库当中, 在项目的build.gradle中添加相应的依赖库便可使用, 添加后需点击Sync Now来进行同步.对话翻译界面如图15所示, 百度语音识别对话框如图16所示.
5.2 特色二: 运用Tesseract-OCR引擎实现拍照翻译Tesseract是开源的OCR(Optical Character Recognition) 引擎, 可识别多种格式的图像并将其转换成文本, 目前已支持60多种语言. 本系统利用Tesseract-OCR引擎识别图片中的文字, 然后翻译实现拍照翻译功能. 由于Tesseract是以C++实现的, 在Android上运用需要封装Java API, 而tess-two是Tesseract Tools for Android的一个Git分支, 在Android项目的build.gradle中添加tess-two的依赖库便可运用Tesseract技术.
为了运用Tesseract-OCR引擎识别图片中的文字, 还需将Tesseract识别文字的字库(中英泰字库)放入项目的assets/tessdata文件夹中, 应用安装时会将字库复制至SD卡中, AndroidManifest.xml文件也要加入调用相机等权限. 拍照界面如图17所示, 其布局activity_take_photo中添加了自定义的相机CameraPreview并在TakePhotoActivity.java的onCreate方法中实例化自定义相机、拍照按钮和顶部Spinner组件, Spinner组件用于选择文字识别类型, 当用户点击拍照按钮或从相册中选择一副图后, 系统会设置Visibility属性值使拍照界面消失, 而将截图界面显示出来, 如图18所示. 在截图界面确定按钮的监听器中, 新建Intent对象的startActivity方法会开启识别界面, 如图19所示. 在识别界面ShowCropperedActivity.java中, 为了提高识别的准确性, 图片先进行灰度化处理, 再由新建TessBaseAPI对象baseApi的init方法设置字库SD卡路径、语言类型等相关参数后, 在子线程中执行getUTF8Text方法即可以UTF-8编码类型识别灰度化图像的文本, 翻译此文本即可实现拍照翻译功能.
6 系统测试
测试系统, 可以检测其整体性能和运行效率是否符合设计需求. 软件测试需要一个运行的载体, 可以是一部Android手机, 也可以是Android模拟器(Android Virtual Device, AVD). 在本软件开发完成后, 我们在Android Studio上创建的Android模拟器(Android 5.1, API Level为22)和一台华为KIW-TLOOH型号的Android手机(Android 5.1.1)上, 分别进行了软件测试. 测试结果为: 软件各项性能, 均达到预期效果, 软件的界面和功能实现比较理想, 系统运行稳定流畅, 易于操作, 具备一定的便利性和实用性.
7 结束语目前, Android在移动领域已经得到广泛应用, Android手机应用软件发展迅猛, 几乎各行各业的企业和公司都推出了与其服务相关的Android版移动客户端[9]. 本文利用Android Studio开发平台, 使用Java语言及SQLite数据库设计并开发了在Android平台下的汉-英-泰互译有声电子词典应用软件, 实现了关于汉-英-泰的单词查询、生词本录入、语音输入、泰语真人朗读、句子翻译、对话翻译、拍照翻译、百科知识等功能. 系统界面美观大方, 贴近用户, 运行稳定流畅, 易于操作, 具备一定的便利性和实用性.
在中泰两国经贸交流越发频繁的背景下, 软件可提供给赴泰的游客、泰国留学生以及其他的泰文学习者使用, 使用者可以随时随地学习泰语并且能及时应用泰语与他人进行交流, 相信此软件将会对他们的泰语和汉语学习起到较好的促进作用.
[1] |
郭霖. 第一行代码. 2版. 北京: 人民邮电出版社, 2016.
|
[2] |
施威铭. Android APP开发入门. 北京: 机械工业出版社, 2016.
|
[3] |
郭金尚. Android经典项目案例开发实战宝典. 北京: 清华大学出版社, 2013.
|
[4] |
黄艺锋, 闫巧. 基于Android平台电子词典的设计与实现. 计算机应用, 2011, 31(S2): 228-232. |
[5] |
胡刚, 王嘉梅, 李炳泽, 等. 汉英-泰互译有声语料的数据库研究. 计算机系统应用, 2016, 25(9): 223-229. DOI:10.15888/j.cnki.csa.005242 |
[6] |
李肖. 基于Android的电子词典系统设计与实现[硕士学位论文]. 长春: 吉林大学, 2013.
|
[7] |
王佳顼. 基于Android的电子词典手机客户端的设计与实现[硕士学位论文]. 北京: 北京交通大学, 2012.
|
[8] |
周宇, 尹生强, 王冬青, 等. 基于Eclipse和Android系统的App开发平台搭建研究. 青岛大学学报, 2016, 31(3): 49-53. |
[9] |
赵志成. 基于Android平台的维汉多媒体电子词典的设计与实现[硕士学位论文]. 乌鲁木齐: 新疆大学, 2013.
|