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