基于Tesseract和TTS的朗读App的设计与实现

2018-11-26 09:32高陆川
电脑知识与技术 2018年22期
关键词:图像增强深度学习

高陆川

摘要:智能朗读App有巨大的市场空间和实用价值。该文主要通过融合文字识别和语音合成技术,设计并实现了一款基于Tesseract和TTS的智能朗读App。通过系统功能测试实验验证了其功能性、兼容性和稳定性,达到了上线发布的标准,可以较好满足用户的使用需求。

关键词:文字识别;Tesseract;图像增强;TTS;深度学习;Android

中图分类号:TP391 文献标识码:A 文章编号:1009-3044(2018)22-0054-04

Abstract:Smart reading App has a huge market space and practical value. This article mainly designs and implements a smart reading application based on Tesseract and TTS through fusion text recognition and speech synthesis technology. Through system function test experiments, its functionality, compatibility and stability have been verified, and the standards released on the line have been met, which can better meet the user's requirements.

Key words:Text Recognition; Tesseract; Image Enhancement; TTS; Deep Learning; Android

1 综述

随着移动互联网的发展,移动音频开始流行,并开始逐渐替代传统的纸质阅读。人工智能相关技术的发展,使“智能化”朗读成为可能。通过结合文字识别和语音合成技术[1],可以实现手机随手一拍,App自动识别纸质书的内容,并将内容朗读出来。这种全新的阅读方式具有很大的市场空间和实用价值。根据新华网的统计数据,目前全球因视力障碍而无法正常阅读的人数大约有1.35亿,智能朗读App为这些人带来了福音[2],所以说研究智能朗读App具有非常重要的现实意义。

2 系统设计

2.1 总体设计方案

本文设计的基于Tesseract和TTS的朗读App融合了文字识别技术和语音合成技术,包含5个核心模块:图像采集模块、图像预处理模块、文字识别模块、语音合成模块和内容输出模块。整个App的设计基于Android平台,系统结构如下图所示。

图像采集模块实现纸质文本图像的拍照采集;图像预处理模块对采集到的原始图像进行去噪、增强、二值化、倾斜矫正等处理,以提高后续文字识别过程的准确率;文字识别模块采用Tesseract引擎进行OCR识别;语音合成模块利用TTS技术将文字转换为音频数据;内容输出模块调用Android系统的音频服务,播放合成好的音频数据。App的开发平台为Android Studio 3.0。

2.2 图像采集和预处理

在进行文字识别之前,要先进行图像采集。为了提高文字识别环节的识别率,我们对采集到的原始图像进行一系列的预处理操作[3]。

图像采集模块的开发主要包括:拍照功能封装、图像压缩、图像文字部分裁剪。拍照功能调用Android系统的相机服务并进行封装,实现图像的拍摄。图像采集界面如图2所示。

为了提高文字识别速度、降低手机内存消耗,对原始图像进行压缩处理,核心代码如下:

Matrix matrix = new Matrix();

matrix.postScale(scaleWidth, scaleHeight);

Bitmap compressBitmap = Bitmap.createBitmap(bitmap, 0, 0, width, height, matrix, true);

精确地定位图像中的文字部分可以有效提高文字识别的效率和识别率,所以本文开发了图像裁剪功能,用户可以根据实际情况裁剪需要识别的文字部分,如图3所示。

图像预处理模块主要包括图像去噪、图像增强、图像二值化、图像倾斜矫正,如图4所示。

图像处理使用的是开源计算机视觉库OpenCV的android-sdk,保证了预处理的速度和效果。

2.3 基于Tesseract的文字识别

Tesseract是一款开源的文字识别引擎,最早是由惠普公司研发并投入商用,在20世纪90年代是业内最准确的OCR引擎之一。后来惠普放弃了OCR业务,将Tesseract开源,并由Google接手进行改进和优化[4]。

Tesseract核心步骤包括:字符定位与分割、字符识别。对于一整段文本,Tesseract会先分割成單个字符,然后对每个字符逐个识别。目前Tesseract已经更新到4.0版本,基于LSTM(Long Short-Term Memory)深度学习框架,在中文字符识别率上有了较大的提升。但是由于中文字体繁多且比较复杂,比较于英文和数字,在识别效果上仍然不够理想。为了解决这个问题,Tesseract专门提供了字符库训练方法和训练工具,可以通过针对性地训练来提高特定字体的识别率。

Tesseract引擎是基于C++语言实现,但是Android应用是基于Java语言开发的。为解决这个问题,Google提出了NDK机制来支持Android开发中调用C++代码[5]。只要将C++语言编写的Tesseract编译成.so文件,存放到Android工程的jniLibs目录中,就可以在Android平台使用Tesseract引擎。具体设置如图5所示。根据手机处理器架构的不同,需要将编译好的.so文件存放到对应目录中。

本文设计的App支持中文、英文和数字识别,所以还需要将相应字符集数据文件存放到手机存储卡中的tessdata目录。

经过开发和调试,最终实现的识別效果如图6所示。

由上图的识别结果可以看出,本文最终实现的文字识别效果比较理想,只漏识别了一个“一”字,其他文字均正确识别了出来。

2.4 基于TTS的语音朗读

TTS (Text To Speech)技术是人工智能领域的一个基础性技术,借助TTS可以实现“从文本到语音”的转换[6],相当于给机器装上了说话的“嘴巴”。

Android系统中内置了TTS服务,可以实现对指定文本内容进行朗读。通过调用TextToSpeech类来实现朗读,具体步骤如下:

1) 创建TextToSpeech实例对象,绑定OnInitListener监听器监来处理各种事件。

2) 设置TextToSpeech实例的相关参数,包括语言设置、阅读效果设置等。

3) 调用speak方法开始朗读或者调用synthesizeToFile方法保存为音频文件。

4) 关闭TextToSpeech实例,并回收资源。

Android系统内置TTS服务的朗读效果较为单一,为了提供更加人性化的朗读体验,本文使用科大讯飞研发的TTS-SDK进行二次开发,支持包括朗读人声、朗读语速等设置[7],实现了更为丰富的朗读效果。具体设置界面如图7所示。

前文提到可以通过调用speak方法直接朗读或者调用synthesizeToFile保存为音频文件后再调用Android系统的音频播放服务进行朗读。本文采用后一种方式,这样可以更好地控制朗读过程,实现朗读暂停和继续。如图8所示,界面底部的红色按钮可以控制朗读过程。当朗读开始后可以点击暂停按钮停止朗读,当朗读暂停后点击继续按钮后可以继续进行朗读。

3 系统测试及分析

为了验证本文设计开发的朗读App的功能和稳定性,我们进行了系统测试实验。

首先,我们在百度MTC平台对App的兼容性和稳定性进行了测试[8]。测试设备选取了10款手机终端,基本覆盖了常用的Android系统版本。测试结果如表1所示。

通过表1的结果可以看出,App的安装、启动、运行、卸载、UI渲染等各项指标均正常,未出现应用程序崩溃(FC),具有良好的兼容性和稳定性,达到了上线发布的标准。

为了验证App的完整功能,我们还进行了完整的系统功能测试,朗读App的主界面如图9所示。

具体操作实现步骤如下:

1) 点击“拍照朗读”按钮,拍摄图像并裁剪文字所在区域。

2) 原始图像预处理完成后进入文字识别过程,界面显示等待提示。

3) 文字识别完成后开始合成语音并进行朗读,用户可以暂停或继续朗读。

通过实际的功能测试,验证了本文设计开发的朗读App能够正常稳定地实现朗读功能,且具有较好的用户体验和人机交互。

4 结论

移动音频的流行和视力障碍群体正常阅读需求的增长,为智能化朗读App创造了巨大的市场空间。本文设计并实现了一款基于Tesseract和TTS的智能朗读App,主要包含图像采集、图像预处理、文字识别、语音合成和内容输出5个模块,整个App的设计基于Android平台。通过系统功能测试实验,验证了本文设计的朗读App功能正常,具有良好的兼容性和稳定性。

但是,本文设计的App仍然存在一些不足和值得改进的地方。对于篇幅较长的文本,合成语音数据需要耗费较长的时间,用户体验有待提升。另外,引入中英文互译功能,可以更好地扩充App的使用场景。针对这两个问题,我们在今后的研究中会继续改进。一是通过设计多线程并行处理,实现边合成边朗读,提升用户体验;二是加入翻译功能,实现中英文互译。

参考文献:

[1] ALAN P. An optical real-world text to speech reader[C]. International Congress Series, 2005, 12(18): 1056-1060.

[2] 蔡禾,周林刚. 关注弱势群体-城市残疾人群体研究[M].北京:社会科学文献出版社,2008.

[3] 蒋弘毅,朱丽平,欧樟鹏.基于MSER和Tesseract的自然场景图像文字识别[J].电脑知识与技术,2017,13(33):213-216.

[4] 洪涛龙. 基于Android平台的图像文字识别及语音播放系统[D].南京:南京邮电大学,2017.

[5] 赵宏伟.Android NDK开发环境实现与应用[J].电脑知识与技术,2010,6(35):55-60.

[6] Zirari F, Ennaji A, Nicolas S, et al. A Document Image Segmentation System Using Analysis of Connected Components[C]// International Conference on Document Analysis and Recognition. IEEE, 2013:753-757.

[7] 郭晓辉. 基于Android平台的视障辅助应用的研究与实现[D].北京:北方工业大学,2017.

[8] 李冬睿,邱尚明,刘琳.基于Robotium的移动应用自动化测试的实现[J].数字技术与应用,2018,36(1):92-93.

【通联编辑:唐一东】

猜你喜欢
图像增强深度学习
图像增强技术在超跨声叶栅纹影试验中的应用
水下视觉SLAM图像增强研究
虚拟内窥镜图像增强膝关节镜手术导航系统
基于图像增强的无人机侦察图像去雾方法
MOOC与翻转课堂融合的深度学习场域建构
大数据技术在反恐怖主义中的应用展望