莫 沛,梁偉鄯,殷浩天,倪志平
(柳州工學(xué)院 電氣與計(jì)算機(jī)工程系,廣西 柳州 545000)
語音識別近年來在國內(nèi)發(fā)展迅速,市場上具有語音識別功能的產(chǎn)品也越來越受消費(fèi)者歡迎。語音識別解放了人的雙手,便捷了人們的生活,智慧了生活[1]。設(shè)計(jì)了一種有限語音識別系統(tǒng),具有文本翻譯、語音翻譯和視頻文字提取等功能,一定程度上打破了不同地域不同語言溝通困難的堡壘,解決使用者與外國友人的溝通障礙[2-3],方便學(xué)習(xí)外國文化藝術(shù)和科技,具有很高的實(shí)用價值和廣闊的市場前景。
開發(fā)環(huán)境的選擇:研究選擇使用以Python作為開發(fā)語言、PyCharm軟件作開發(fā)平臺。相比于C語言,Python是一門代表簡單主義思想的語言,它的運(yùn)行速度非常快,支持面向?qū)ο蟮木幊蹋瑫r具有開源的本質(zhì),因此具有豐富的庫,可以幫助處理各種工作,包括正則表達(dá)式、文檔生成、單元測試、線程、數(shù)據(jù)庫、網(wǎng)頁瀏覽器、CGI、FTP、電子郵件、XML、XML-RPC、HTML、WAV文件、密碼系統(tǒng)、GUI(圖形用戶界面)、Tk和其他與系統(tǒng)有關(guān)的操作,這些庫功能強(qiáng)大,拿來即用,大大豐富了系統(tǒng)的功能并縮短了開發(fā)周期。
軟件開發(fā)平臺使用的是JetBrains公司開發(fā)的PyCharm軟件。PyCharm帶有一整套可以幫助用戶提高效率的工具,如調(diào)試、語法高亮、項(xiàng)目管理、代碼跳轉(zhuǎn)、智能提示、自動完成、單元測試、版本控制。該軟件除了擁有一般IDE具有的功能,還具有函數(shù)及關(guān)鍵字的自動補(bǔ)全等人性化功能,這使得項(xiàng)目能更快很流暢地完成,在函數(shù)功能和使用方法忘記的時候還能點(diǎn)擊查看,代碼的區(qū)塊化讓代碼思路更加清晰,代碼編寫錯誤的地方還會直接報紅。
錄音方案的設(shè)計(jì):選擇了使用PyAudio庫和Speech Recognition庫來進(jìn)行錄音。PyAudio庫提供了Python語言版本,能夠進(jìn)行錄音、播放、生成wav文件等功能,同時PyAudio庫是一個可跨多平臺的音頻 I/O 庫,能夠在Linux、微軟Windows和蘋果Mac OS X/MACOS等系統(tǒng)上使用。SpeechRecognition庫是Google設(shè)計(jì)的一款專注語音識別的功能庫,依賴于PyAudio資源庫。SpeechRecognition的易用性很高,靈活性高,因?yàn)椴恍枰獦?gòu)建訪問麥克風(fēng)和從頭開始處理音頻文件的腳本,只需幾秒鐘即可自動完成音頻輸入、檢索并運(yùn)行。研究使用了listen()函數(shù)來獲取麥克風(fēng)數(shù)據(jù),并且當(dāng)檢測到?jīng)]有人說話時則自動停止,做好后使用open()函數(shù),將其保存為.pcm格式的音頻文件,供后面功能使用。
語音識別方案的設(shè)計(jì):語音識別使用的是百度短語音識別API,能夠進(jìn)行普通話和英語的識別,并且可以根據(jù)語音的內(nèi)容理解和停頓智能匹配合適的標(biāo)點(diǎn)符號,識別準(zhǔn)確且快速,但只能識別60 s內(nèi)的音頻,為了能夠連續(xù)長時間識別,每次識別后的數(shù)據(jù)會暫時保存在本地中進(jìn)行合成。
文本翻譯方案的設(shè)計(jì):考慮到了翻譯對準(zhǔn)確性的要求,本系統(tǒng)采用了兩種翻譯方案,一種是使用Requests庫爬取有道翻譯的結(jié)果,另一種是使用百度通用翻譯API接口來實(shí)現(xiàn)功能。第一種方案通過Requests庫的方式來進(jìn)行翻譯結(jié)果的爬取,實(shí)現(xiàn)了中英互譯的翻譯功能,Requests庫是用Python編寫的,基于urllib,采用Apache2 Licensed開源協(xié)議的HTTP庫,Requests庫經(jīng)常被用來進(jìn)行HTTP測試。通過使用Requests庫的get()函數(shù)來獲取請求,再經(jīng)過json解析獲取翻譯結(jié)果。第二種方案使用百度通用翻譯API,通過HTTP接口來進(jìn)行多語種互譯功能,輸入需要翻譯的文本,并設(shè)置好源語種和目標(biāo)語種,就能得到相對應(yīng)的翻譯結(jié)果。該翻譯功能能夠在27種語種中互譯,滿足大部分生活需求,并且準(zhǔn)確率高,響應(yīng)速度快。
語音合成方案的設(shè)計(jì):選擇了百度在線語音合成API方案,該語音合成功能可以將上面翻譯后的文字信息轉(zhuǎn)化為聲音信息,可以在程序里設(shè)置語速、音調(diào)、音量、發(fā)音人等,并使用open()函數(shù)保存.mp3格式音頻文件在本地,為下面的功能提供資源。
視頻中聲音提取方案的設(shè)計(jì):在提取視頻中聲音時,首先將視頻轉(zhuǎn)換為音頻格式,然后再使用上面的語音識別功能進(jìn)行文字提取,最后再將文字信息保存在.txt文件里。第一步的視頻轉(zhuǎn)換音頻格式使用的是ffmpeg庫,ffmpeg庫領(lǐng)先的多媒體框架,它包括這樣的幾個庫:libavcodec,libavutil,libavformat,libavfilter,libavdevice,libswscale and libswresample,具有音頻解碼和編碼、視頻的復(fù)用和多路處理、噪音處理等功能,本研究中使用ffmpeg庫的input()函數(shù),將.mp4文件轉(zhuǎn)換為.wav音頻文件。第二步再進(jìn)行語音識別,最后使用os庫的write()函數(shù)寫入.txt文件里,隨后就可以查看音頻提取結(jié)果。
軟件界面的設(shè)計(jì)使用的是Python的圖形開發(fā)界面的Tkinter庫,Tkinter庫的兼容性強(qiáng),能夠在大多數(shù)的Unix平臺、Windows和Macintosh系統(tǒng)中良好地運(yùn)行。Tkinter庫里提供了各種控件,如按鈕、畫布、多選框、列表、文本等控件,在方便開發(fā)的同時,也為使用者提供了良好的使用體驗(yàn)。
文本翻譯界面設(shè)計(jì):文本的翻譯功能設(shè)定之初考慮到了語言表達(dá)方式的博大精深,因此設(shè)有了百度和有道兩種翻譯引擎翻譯結(jié)果,用戶可以根據(jù)自己的喜好選擇表達(dá)方式,如圖1所示。其中有道翻譯只能中英互譯,百度可以選擇翻譯成多國語言,準(zhǔn)確度可靠,如圖2所示。
圖1 兩種翻譯結(jié)果對比Fig.1 Comparison of translation results of two types
圖2 中文翻譯為日語Fig.2 Translation from Chinese to Japanese
語音翻譯界面設(shè)計(jì):語音翻譯支持中英文互譯,滿足人們的日常需求,選擇好源語言,按照提示進(jìn)行錄音,錄音完成后就可以進(jìn)行翻譯后語音的播放,并在顯示框顯示翻譯后的文本信息,方便用戶使用。例如:用戶使用麥克風(fēng)輸入“柳州螺螄粉是廣西著名的小吃。”,則會播放為“Liuzhou snail powder is a famous snack in Guangxi.”的英文語音并顯示在文本框里。
視頻音頻提取界面設(shè)計(jì):視頻音頻提取功能支持提取MP4格式的視頻,設(shè)置好原語言,選擇需要翻譯的MP4視頻,點(diǎn)擊轉(zhuǎn)換,很快就能在文件夾下的test.txt文件里查看提取結(jié)果。
設(shè)計(jì)的語音識別翻譯系統(tǒng)主要有以下特點(diǎn):第一,文本翻譯、語音識別和語音合成等功能使用了百度AI云平臺提供的人工智能服務(wù),不需要龐大的本地資源庫,只要以HTTPS的方式向平臺請求服務(wù),就可以得到AI分析結(jié)果,提高了響應(yīng)速度,同時也擁有了可靠的準(zhǔn)確性,大大縮小了軟件的體積。第二,語言識別軟件運(yùn)行速度快、兼容性強(qiáng)、穩(wěn)定性好,因?yàn)槭褂玫氖荘ython語言進(jìn)行開發(fā)。Python擁有豐富且成熟的庫,功能強(qiáng)大,有利于以后的功能升級。第三,翻譯功能,可以反饋有道翻譯、百度翻譯兩種翻譯引擎的翻譯結(jié)果,讓使用者擇優(yōu)選擇,降低了機(jī)器翻譯帶來的準(zhǔn)確性不高的問題。同時該系統(tǒng)的翻譯功能強(qiáng)大,支持包括粵語、文言文等28種類型的互相翻譯。第四,將文本翻譯、語音識別翻譯、視頻音頻提取等功能集為一體,實(shí)現(xiàn)一軟件多用途,打破了不同語言溝通障礙的堡壘,更加方便了交流,滿足人們的日常需求。第五,打破了傳統(tǒng)的文字輸入方式,使用語音輸入更加快捷、準(zhǔn)確、方便。