高陸川
摘要:智能朗讀App有巨大的市場空間和實(shí)用價(jià)值。該文主要通過融合文字識別和語音合成技術(shù),設(shè)計(jì)并實(shí)現(xiàn)了一款基于Tesseract和TTS的智能朗讀App。通過系統(tǒng)功能測試實(shí)驗(yàn)驗(yàn)證了其功能性、兼容性和穩(wěn)定性,達(dá)到了上線發(fā)布的標(biāo)準(zhǔn),可以較好滿足用戶的使用需求。
關(guān)鍵詞:文字識別;Tesseract;圖像增強(qiáng);TTS;深度學(xué)習(xí);Android
中圖分類號:TP391 文獻(xiàn)標(biāo)識碼: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 綜述
隨著移動(dòng)互聯(lián)網(wǎng)的發(fā)展,移動(dòng)音頻開始流行,并開始逐漸替代傳統(tǒng)的紙質(zhì)閱讀。人工智能相關(guān)技術(shù)的發(fā)展,使“智能化”朗讀成為可能。通過結(jié)合文字識別和語音合成技術(shù)[1],可以實(shí)現(xiàn)手機(jī)隨手一拍,App自動(dòng)識別紙質(zhì)書的內(nèi)容,并將內(nèi)容朗讀出來。這種全新的閱讀方式具有很大的市場空間和實(shí)用價(jià)值。根據(jù)新華網(wǎng)的統(tǒng)計(jì)數(shù)據(jù),目前全球因視力障礙而無法正常閱讀的人數(shù)大約有1.35億,智能朗讀App為這些人帶來了福音[2],所以說研究智能朗讀App具有非常重要的現(xiàn)實(shí)意義。
2 系統(tǒng)設(shè)計(jì)
2.1 總體設(shè)計(jì)方案
本文設(shè)計(jì)的基于Tesseract和TTS的朗讀App融合了文字識別技術(shù)和語音合成技術(shù),包含5個(gè)核心模塊:圖像采集模塊、圖像預(yù)處理模塊、文字識別模塊、語音合成模塊和內(nèi)容輸出模塊。整個(gè)App的設(shè)計(jì)基于Android平臺,系統(tǒng)結(jié)構(gòu)如下圖所示。
圖像采集模塊實(shí)現(xiàn)紙質(zhì)文本圖像的拍照采集;圖像預(yù)處理模塊對采集到的原始圖像進(jìn)行去噪、增強(qiáng)、二值化、傾斜矯正等處理,以提高后續(xù)文字識別過程的準(zhǔn)確率;文字識別模塊采用Tesseract引擎進(jìn)行OCR識別;語音合成模塊利用TTS技術(shù)將文字轉(zhuǎn)換為音頻數(shù)據(jù);內(nèi)容輸出模塊調(diào)用Android系統(tǒng)的音頻服務(wù),播放合成好的音頻數(shù)據(jù)。App的開發(fā)平臺為Android Studio 3.0。
2.2 圖像采集和預(yù)處理
在進(jìn)行文字識別之前,要先進(jìn)行圖像采集。為了提高文字識別環(huán)節(jié)的識別率,我們對采集到的原始圖像進(jìn)行一系列的預(yù)處理操作[3]。
圖像采集模塊的開發(fā)主要包括:拍照功能封裝、圖像壓縮、圖像文字部分裁剪。拍照功能調(diào)用Android系統(tǒng)的相機(jī)服務(wù)并進(jìn)行封裝,實(shí)現(xiàn)圖像的拍攝。圖像采集界面如圖2所示。
為了提高文字識別速度、降低手機(jī)內(nèi)存消耗,對原始圖像進(jìn)行壓縮處理,核心代碼如下:
Matrix matrix = new Matrix();
matrix.postScale(scaleWidth, scaleHeight);
Bitmap compressBitmap = Bitmap.createBitmap(bitmap, 0, 0, width, height, matrix, true);
精確地定位圖像中的文字部分可以有效提高文字識別的效率和識別率,所以本文開發(fā)了圖像裁剪功能,用戶可以根據(jù)實(shí)際情況裁剪需要識別的文字部分,如圖3所示。
圖像預(yù)處理模塊主要包括圖像去噪、圖像增強(qiáng)、圖像二值化、圖像傾斜矯正,如圖4所示。
圖像處理使用的是開源計(jì)算機(jī)視覺庫OpenCV的android-sdk,保證了預(yù)處理的速度和效果。
2.3 基于Tesseract的文字識別
Tesseract是一款開源的文字識別引擎,最早是由惠普公司研發(fā)并投入商用,在20世紀(jì)90年代是業(yè)內(nèi)最準(zhǔn)確的OCR引擎之一。后來惠普放棄了OCR業(yè)務(wù),將Tesseract開源,并由Google接手進(jìn)行改進(jìn)和優(yōu)化[4]。
Tesseract核心步驟包括:字符定位與分割、字符識別。對于一整段文本,Tesseract會先分割成單個(gè)字符,然后對每個(gè)字符逐個(gè)識別。目前Tesseract已經(jīng)更新到4.0版本,基于LSTM(Long Short-Term Memory)深度學(xué)習(xí)框架,在中文字符識別率上有了較大的提升。但是由于中文字體繁多且比較復(fù)雜,比較于英文和數(shù)字,在識別效果上仍然不夠理想。為了解決這個(gè)問題,Tesseract專門提供了字符庫訓(xùn)練方法和訓(xùn)練工具,可以通過針對性地訓(xùn)練來提高特定字體的識別率。
Tesseract引擎是基于C++語言實(shí)現(xiàn),但是Android應(yīng)用是基于Java語言開發(fā)的。為解決這個(gè)問題,Google提出了NDK機(jī)制來支持Android開發(fā)中調(diào)用C++代碼[5]。只要將C++語言編寫的Tesseract編譯成.so文件,存放到Android工程的jniLibs目錄中,就可以在Android平臺使用Tesseract引擎。具體設(shè)置如圖5所示。根據(jù)手機(jī)處理器架構(gòu)的不同,需要將編譯好的.so文件存放到對應(yīng)目錄中。
本文設(shè)計(jì)的App支持中文、英文和數(shù)字識別,所以還需要將相應(yīng)字符集數(shù)據(jù)文件存放到手機(jī)存儲卡中的tessdata目錄。
經(jīng)過開發(fā)和調(diào)試,最終實(shí)現(xiàn)的識別效果如圖6所示。
由上圖的識別結(jié)果可以看出,本文最終實(shí)現(xiàn)的文字識別效果比較理想,只漏識別了一個(gè)“一”字,其他文字均正確識別了出來。
2.4 基于TTS的語音朗讀
TTS (Text To Speech)技術(shù)是人工智能領(lǐng)域的一個(gè)基礎(chǔ)性技術(shù),借助TTS可以實(shí)現(xiàn)“從文本到語音”的轉(zhuǎn)換[6],相當(dāng)于給機(jī)器裝上了說話的“嘴巴”。
Android系統(tǒng)中內(nèi)置了TTS服務(wù),可以實(shí)現(xiàn)對指定文本內(nèi)容進(jìn)行朗讀。通過調(diào)用TextToSpeech類來實(shí)現(xiàn)朗讀,具體步驟如下:
1) 創(chuàng)建TextToSpeech實(shí)例對象,綁定OnInitListener監(jiān)聽器監(jiān)來處理各種事件。
2) 設(shè)置TextToSpeech實(shí)例的相關(guān)參數(shù),包括語言設(shè)置、閱讀效果設(shè)置等。
3) 調(diào)用speak方法開始朗讀或者調(diào)用synthesizeToFile方法保存為音頻文件。
4) 關(guān)閉TextToSpeech實(shí)例,并回收資源。
Android系統(tǒng)內(nèi)置TTS服務(wù)的朗讀效果較為單一,為了提供更加人性化的朗讀體驗(yàn),本文使用科大訊飛研發(fā)的TTS-SDK進(jìn)行二次開發(fā),支持包括朗讀人聲、朗讀語速等設(shè)置[7],實(shí)現(xiàn)了更為豐富的朗讀效果。具體設(shè)置界面如圖7所示。
前文提到可以通過調(diào)用speak方法直接朗讀或者調(diào)用synthesizeToFile保存為音頻文件后再調(diào)用Android系統(tǒng)的音頻播放服務(wù)進(jìn)行朗讀。本文采用后一種方式,這樣可以更好地控制朗讀過程,實(shí)現(xiàn)朗讀暫停和繼續(xù)。如圖8所示,界面底部的紅色按鈕可以控制朗讀過程。當(dāng)朗讀開始后可以點(diǎn)擊暫停按鈕停止朗讀,當(dāng)朗讀暫停后點(diǎn)擊繼續(xù)按鈕后可以繼續(xù)進(jìn)行朗讀。
3 系統(tǒng)測試及分析
為了驗(yàn)證本文設(shè)計(jì)開發(fā)的朗讀App的功能和穩(wěn)定性,我們進(jìn)行了系統(tǒng)測試實(shí)驗(yàn)。
首先,我們在百度MTC平臺對App的兼容性和穩(wěn)定性進(jìn)行了測試[8]。測試設(shè)備選取了10款手機(jī)終端,基本覆蓋了常用的Android系統(tǒng)版本。測試結(jié)果如表1所示。
通過表1的結(jié)果可以看出,App的安裝、啟動(dòng)、運(yùn)行、卸載、UI渲染等各項(xiàng)指標(biāo)均正常,未出現(xiàn)應(yīng)用程序崩潰(FC),具有良好的兼容性和穩(wěn)定性,達(dá)到了上線發(fā)布的標(biāo)準(zhǔn)。
為了驗(yàn)證App的完整功能,我們還進(jìn)行了完整的系統(tǒng)功能測試,朗讀App的主界面如圖9所示。
具體操作實(shí)現(xiàn)步驟如下:
1) 點(diǎn)擊“拍照朗讀”按鈕,拍攝圖像并裁剪文字所在區(qū)域。
2) 原始圖像預(yù)處理完成后進(jìn)入文字識別過程,界面顯示等待提示。
3) 文字識別完成后開始合成語音并進(jìn)行朗讀,用戶可以暫?;蚶^續(xù)朗讀。
通過實(shí)際的功能測試,驗(yàn)證了本文設(shè)計(jì)開發(fā)的朗讀App能夠正常穩(wěn)定地實(shí)現(xiàn)朗讀功能,且具有較好的用戶體驗(yàn)和人機(jī)交互。
4 結(jié)論
移動(dòng)音頻的流行和視力障礙群體正常閱讀需求的增長,為智能化朗讀App創(chuàng)造了巨大的市場空間。本文設(shè)計(jì)并實(shí)現(xiàn)了一款基于Tesseract和TTS的智能朗讀App,主要包含圖像采集、圖像預(yù)處理、文字識別、語音合成和內(nèi)容輸出5個(gè)模塊,整個(gè)App的設(shè)計(jì)基于Android平臺。通過系統(tǒng)功能測試實(shí)驗(yàn),驗(yàn)證了本文設(shè)計(jì)的朗讀App功能正常,具有良好的兼容性和穩(wěn)定性。
但是,本文設(shè)計(jì)的App仍然存在一些不足和值得改進(jìn)的地方。對于篇幅較長的文本,合成語音數(shù)據(jù)需要耗費(fèi)較長的時(shí)間,用戶體驗(yàn)有待提升。另外,引入中英文互譯功能,可以更好地?cái)U(kuò)充App的使用場景。針對這兩個(gè)問題,我們在今后的研究中會繼續(xù)改進(jìn)。一是通過設(shè)計(jì)多線程并行處理,實(shí)現(xiàn)邊合成邊朗讀,提升用戶體驗(yàn);二是加入翻譯功能,實(shí)現(xiàn)中英文互譯。
參考文獻(xiàn):
[1] ALAN P. An optical real-world text to speech reader[C]. International Congress Series, 2005, 12(18): 1056-1060.
[2] 蔡禾,周林剛. 關(guān)注弱勢群體-城市殘疾人群體研究[M].北京:社會科學(xué)文獻(xiàn)出版社,2008.
[3] 蔣弘毅,朱麗平,歐樟鵬.基于MSER和Tesseract的自然場景圖像文字識別[J].電腦知識與技術(shù),2017,13(33):213-216.
[4] 洪濤龍. 基于Android平臺的圖像文字識別及語音播放系統(tǒng)[D].南京:南京郵電大學(xué),2017.
[5] 趙宏偉.Android NDK開發(fā)環(huán)境實(shí)現(xiàn)與應(yīng)用[J].電腦知識與技術(shù),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平臺的視障輔助應(yīng)用的研究與實(shí)現(xiàn)[D].北京:北方工業(yè)大學(xué),2017.
[8] 李冬睿,邱尚明,劉琳.基于Robotium的移動(dòng)應(yīng)用自動(dòng)化測試的實(shí)現(xiàn)[J].數(shù)字技術(shù)與應(yīng)用,2018,36(1):92-93.
【通聯(lián)編輯:唐一東】