黃睿
(廣東第二師范學(xué)院計(jì)算機(jī)科學(xué)系,廣州 510303)
如今,人工智能、教育大數(shù)據(jù)的應(yīng)用,推動(dòng)著計(jì)算機(jī)等學(xué)科朝著智能化的方向發(fā)展。以深度學(xué)習(xí)、機(jī)器學(xué)習(xí)為代表的人工智能模型,已獲國內(nèi)外學(xué)者的廣泛關(guān)注[1]。而深度學(xué)習(xí)等軟件平臺(tái)的開源,將促進(jìn)學(xué)生對(duì)人工智能課程實(shí)踐開發(fā)興趣,進(jìn)一步推動(dòng)實(shí)驗(yàn)教學(xué)水平的提高。目前,深度學(xué)習(xí)等課程的實(shí)驗(yàn)開發(fā),在本科教學(xué)中涉及較少,為促使學(xué)生對(duì)該類課程有更深入的理解,本文基于谷歌TensorFlow 人工智能開源平臺(tái),結(jié)合Bi-RNN 和CTC 學(xué)習(xí)模型,最終完成中文語音識(shí)別的實(shí)驗(yàn)設(shè)計(jì)。
Google 于2015 年開源了人工智能平臺(tái)TensorFlow[2],該平臺(tái)包含開源的軟件庫。其中,Tensor 表示為數(shù)據(jù)的張量,F(xiàn)low 表示為數(shù)據(jù)的流圖。通過提供常用的深度學(xué)習(xí)框架進(jìn)行人工智能的開發(fā),以及跨平臺(tái)系統(tǒng)的應(yīng)用。同時(shí),該平臺(tái)也支持基于分布式的部署和應(yīng)用。
TensorFlow 是基于數(shù)據(jù)流圖運(yùn)算的開發(fā)平臺(tái),包含多種支持?jǐn)?shù)值運(yùn)算的軟件開源庫,以及短期記憶網(wǎng)絡(luò)、循環(huán)神經(jīng)網(wǎng)絡(luò)和卷積神經(jīng)網(wǎng)絡(luò)等網(wǎng)絡(luò)模型[3-5]。該模型常運(yùn)用于機(jī)器學(xué)習(xí)和深度學(xué)習(xí)的開發(fā),是較為核心的人工智能算法,同時(shí)也推動(dòng)著人工智能領(lǐng)域的新發(fā)展,其基本架構(gòu)如圖1 所示。
圖1 TensorFlow系統(tǒng)架構(gòu)
前端:支持基于C、C++、Python 等高級(jí)編程語言,通過API 函數(shù)進(jìn)行模型調(diào)用。
后端:主要用于提供支持前端的運(yùn)行環(huán)境。
梅爾頻率倒譜系數(shù)是基于人耳聽覺特性,將音頻數(shù)據(jù)由時(shí)域向頻域轉(zhuǎn)變的一種方法,它與頻率成非線性對(duì)應(yīng)關(guān)系,廣泛應(yīng)用于語音識(shí)別領(lǐng)域。
一段連續(xù)的音頻數(shù)據(jù)可以分解成幀,而每一幀數(shù)據(jù)通過快速傅里葉變換(FFT)可以計(jì)算出對(duì)應(yīng)的頻譜,該頻譜反映的是信號(hào)頻率與能量的關(guān)系,如線性振幅譜、對(duì)數(shù)振幅譜等。其中,對(duì)數(shù)振幅譜是對(duì)各譜線的振幅進(jìn)行對(duì)數(shù)運(yùn)算,主要用于分析低振幅噪聲中的周期信號(hào),任意頻率f 到梅爾頻率尺度的轉(zhuǎn)換由式(1)表示。
式中,頻率f 的單位為Hz。其中,臨界頻率帶寬增長與Mel 頻率一致。當(dāng)Mel 頻率刻度為均勻分布時(shí),赫茲之間的距離將隨頻率的增加而增大。將語音頻率劃分為一系列的三角濾波序列,即Mel 濾波器,如圖2所示。
圖2 Mel濾波器
如圖2 可知,Mel 濾波器在低頻段分辨率高,類似于人耳的聽覺特性。因此,梅爾頻率首先通過對(duì)時(shí)域信號(hào)進(jìn)行快速傅里葉變換成頻域,其次,利用梅爾頻率刻度的濾波器進(jìn)行頻域信號(hào)切分,最后計(jì)算出每個(gè)頻率段對(duì)應(yīng)的數(shù)值。
一段連續(xù)的音頻數(shù)據(jù)可以分解成幀,而每一幀數(shù)據(jù)通過快速傅里葉變換(FFT)可以計(jì)算出對(duì)應(yīng)的頻譜,該頻譜倒譜分析主要進(jìn)行信號(hào)的疊加和分解,如信號(hào)的卷積轉(zhuǎn)化為信號(hào)的疊加。設(shè)頻率譜X(k),時(shí)域信號(hào)x(n),滿足式(2)。
將頻域 X(k)進(jìn)行拆分,如式(3)所示。
此時(shí),對(duì)應(yīng)的時(shí)域信號(hào)分別為 h(n)和 e(n),則如式(4)所示。
分別對(duì)頻域進(jìn)行對(duì)數(shù)運(yùn)算和反傅里葉變換可得(5-6)式,進(jìn)行時(shí)域疊加為式(7)。
式中,x′(n)為倒譜,h′(n)為倒譜系數(shù)。通過上式,將卷積時(shí)域信號(hào)轉(zhuǎn)換成線性疊加關(guān)系。
如果能結(jié)合上下文的信息關(guān)系,進(jìn)行未知信息的判斷,將極大提升在多序列標(biāo)注方法中的準(zhǔn)確率。雙向循環(huán)神經(jīng)網(wǎng)絡(luò)主要運(yùn)用于連續(xù)數(shù)據(jù)的處理,該模型分別進(jìn)行正向規(guī)律和反向規(guī)律的學(xué)習(xí),從而達(dá)到比傳統(tǒng)模型更優(yōu)的擬合效果。
RNN 模型容易忽略對(duì)未知信息的上下文關(guān)系,而Bi-RNN 模型的輸入層可以結(jié)合已知的上下文關(guān)系進(jìn)行未知的預(yù)測,其結(jié)構(gòu)圖如圖3 所示。
圖3 Bi-RNN模型
由圖3 可知,該模型由輸入層、正向循環(huán)神經(jīng)網(wǎng)絡(luò)、反向循環(huán)神經(jīng)網(wǎng)絡(luò)和輸出層組成。
雙向循環(huán)神經(jīng)網(wǎng)絡(luò)的正向推算和單循環(huán)神經(jīng)網(wǎng)絡(luò)模型一樣,需要完成全部的輸入序列計(jì)算時(shí),模型的輸出才被更新。而反向推算則需要先完成輸出層計(jì)算后,再計(jì)算后的權(quán)值返回給兩個(gè)隱含層。實(shí)驗(yàn)偽代碼如圖4 所示。
圖4 Bi-RNN模型實(shí)現(xiàn)
基于TensorFlow 平臺(tái),使用Thchs-30 中文語音數(shù)據(jù)集,結(jié)合公式(7)的梅爾頻率倒譜系數(shù),進(jìn)行Bi-RNN、CTC 模型的搭建,并最終完成中文語音的識(shí)別。
該數(shù)據(jù)集是由清華大學(xué)建立的語音樣本,包含訓(xùn)練數(shù)據(jù)集、開發(fā)數(shù)據(jù)集和測試數(shù)據(jù)集。音頻是通過16KHz 的采樣頻率和16bit 的量化位數(shù)進(jìn)錄制,具體內(nèi)容如表1 所示。
表1 Thchs-30 數(shù)據(jù)集
如表1 可知,訓(xùn)練數(shù)據(jù)集總時(shí)長25 小時(shí),包含10000 條句子。開發(fā)數(shù)據(jù)集總時(shí)長2:14,包含893 條句子。測試數(shù)據(jù)集總時(shí)長6:15,包含2495 條句子。
聯(lián)結(jié)主義時(shí)間分類用于Bi-RNN 的頂層連接,使通過每一幀的輸入序列都能夠輸出對(duì)應(yīng)的標(biāo)簽(含空白標(biāo)簽)。在語音識(shí)別過程中,該方法可以將音頻停頓、噪點(diǎn)等內(nèi)容歸納空白標(biāo)簽,最后使預(yù)測輸出的標(biāo)簽值完成時(shí)間序列上的對(duì)齊。
為了方便計(jì)算出模型的識(shí)別率,需要將預(yù)測輸出的空標(biāo)簽進(jìn)行剔除,形成類似于原始標(biāo)簽的輸入格式。CTC decoder 函數(shù)用于預(yù)測結(jié)果的加工,完成與標(biāo)準(zhǔn)標(biāo)簽的損失loss 計(jì)算,參數(shù)如表2 所示。
表2 CTC decoder 函數(shù)
(1)模型庫導(dǎo)入。分別導(dǎo)入 numpy、mfcc、wav、os、time、tensorflow、ctc 等庫文件。
(2)導(dǎo)入數(shù)據(jù)集。獲取數(shù)據(jù)集內(nèi)的所有音頻文件和對(duì)應(yīng)的翻譯內(nèi)容。
(3)模型初始化。完成參數(shù)的初始化和Session 的建立。
(4)模型建立。完成 MFCC、Bi-RNN、CTC 等模型架構(gòu)。
(5)模型保存。對(duì)節(jié)點(diǎn)權(quán)重、偏置等參數(shù)進(jìn)行存儲(chǔ)。
(6)模型驗(yàn)證。對(duì)訓(xùn)練的模型完成語音識(shí)別驗(yàn)證,部分音頻識(shí)別效果如圖5 所示。
圖5 部分音頻識(shí)別效果
由圖5 可知,基于Bi-RNN 的中文語音識(shí)別模型建立了2666 個(gè)漢字表,完成了對(duì)單音節(jié)詞、雙音節(jié)詞和上下文關(guān)系的語音識(shí)別。
該文基于TensorFlow 開發(fā)平臺(tái),建立中文語音MFCC 模型,結(jié)合Bi-RNN 和CTC 網(wǎng)絡(luò)模型,對(duì)Thchs-30 中文語音數(shù)據(jù)集進(jìn)行深度學(xué)習(xí),并結(jié)合訓(xùn)練模型進(jìn)行語音識(shí)別的驗(yàn)證,最終完成了中文語音識(shí)別的實(shí)驗(yàn)設(shè)計(jì)。該模型的實(shí)現(xiàn)對(duì)人工智能中文語音識(shí)別,在本科實(shí)驗(yàn)教學(xué)中具體重要的參考意義。