楊 璐,郭文明,,韓 芳
(1.北京郵電大學計算機學院(國家示范性軟件學院),北京 100876;2.可信分布式計算與服務教育部重點實驗室,北京 100876;3.新疆工程學院信息工程學院,烏魯木齊 830023)
語音識別是讓計算機聽懂人類的語音,并轉換成人類能讀懂的文字,實現(xiàn)人與機器的交互。隨著互聯(lián)網(wǎng)的不斷發(fā)展,百度、阿里、科大訊飛等都開發(fā)出相對成熟的語音識別系統(tǒng),但有些公司涉及內(nèi)部語音保密和投資成本等問題,需要開發(fā)滿足自己需求的語音識別系統(tǒng),本文基于此背景展開研究。
語音識別技術最早開始于1952 年,貝爾實驗室研發(fā)出的10 個孤立數(shù)字的識別系統(tǒng)。語音識別的目標是給定語音輸入的情況下,找到對應可能性最大的文字序列,根據(jù)此目標將語音識別分為聲學模型(acoustic model)和語言模型(language model)兩個部分,二者對語言現(xiàn)象訓練學習到的特征越多,識別結果越準確。但在很多語音識別的應用中,可能輸入一段較長語音或將多句話連續(xù)輸入,則識別的結果是沒有空格或標點符號的一連串漢字,為此需要為識別結果添加適當?shù)臉它c停頓,增強文本的可讀性。
因此,本文引入語音端點檢測技術,通過捕捉語音中說話者的停頓位置添加標點符號,幫助人們更準確地理解文本,以DFCNN 輸出端融合CTC 作為聲學模型,實現(xiàn)模型的端到端訓練,引入Transformer作為強語言模型建立語音識別系統(tǒng)進行研究。
在聲學模型領域中,基于DNN-HMM 的混合模型架構,卷積神經(jīng)網(wǎng)絡(convolutional neural network,CNN)能夠充分利用上下文信息,將深度神經(jīng)網(wǎng)絡(deep neural network,DNN)和性能更好的長短時記憶網(wǎng)絡(long-short term memory,LSTM)集成到該模型中,構成CNN-LSTM-DNN(CLDNN)架構,解決了在訓練過程中產(chǎn)生的梯度消失問題。隨后提出一種全新的語音識別模型架構全序列卷積神經(jīng)網(wǎng)絡(deep fully convolutional neural network,DFCNN),經(jīng)過大量實驗證明,DFCNN 比目前流行的、學術界效果最好的雙向LSTM 語音識別系統(tǒng)的識別率提升了15%以上,它直接將語譜圖特征作為輸入,最大程度減少了信息損失,再經(jīng)過不斷地卷積池化,使模型能學到很長的歷史和未來信息,相比BLSTM具有更強的穩(wěn)健性,輸出端與連接時序分類器(connectionist temporal classification,CTC)相融合,相比BLSTM-CTC 系統(tǒng)的性能提升了15%。
在語言模型領域中,傳統(tǒng)的N-gram 模型雖然具有簡單的結構和高訓練效率,但是模型不具備所需要的語義上的聯(lián)系,且參數(shù)過大,因此,無法有重大的突破。Vaswani 等提出了一種非遞歸序列到序列的新模型Transformer,在許多任務中都有突出表現(xiàn),如預訓練語言模型、端到端語音識別等。它的一個關鍵組件是自注意力機制,用于計算整個輸入序列所貢獻的信息,并在每個時間步中將序列映射到一個向量,能夠在分析預測長文本時捕捉間隔較長的語義關聯(lián),并且可以利用分布式GPU進行并行訓練,計算效率更高,在一定程度提升了模型的訓練效果。
現(xiàn)在大多數(shù)語音識別系統(tǒng)的識別結果為可讀性較差的整段文字,且輸入的語音長度為十幾秒的短語音。近年來,人們將基于深度學習的模型引入到解決自動添加標點符號的問題中,比如CRF 模型對自動標點的預測,利用詞的詞法信息和句法信息構建自注意力機制模型,預測中文標點符號,它們主要是對語音識別后的文本信息進行預測,模型通過學習詞與詞之間的位置信息、當前詞在語義環(huán)境中的詞性和句法作用來預測標點,但大多數(shù)模型的性能較差、預測準確率低,這使得語音識別的最終準確率也大大降低,而且在模型訓練過程中需要耗費大量時間和成本。語音端點檢測可以看作語音幀的二分類問題,其方法可以分為3 種,第1種是基于聲學特征的端點檢測,根據(jù)語音和非語音在聲學特征上的分布規(guī)律,設定閾值區(qū)分語音和非語音信號,第2 種是基于統(tǒng)計模型的無監(jiān)督端點檢測,采用高斯分布進行建模,并使用軟決策方法進行判別,第3 種是基于機器學習的有監(jiān)督端點檢測,引入神經(jīng)網(wǎng)絡可以提高模型的判別能力。因此,本文引入語音端點檢測,直接對輸入的語音進行處理,通過捕捉語音中說話者的停頓位置添加標點符號,在保證準確率的同時節(jié)約成本,解決了連串漢字的斷點問題。
本文實現(xiàn)的語音識別系統(tǒng)框架如圖1 所示。主要包括端點檢測、聲學模型和語言模型3 個部分。輸入的音頻文件可選擇本地文件或使用錄音功能錄制的文件,經(jīng)過端點檢測模型獲取到一個List 集合,再經(jīng)過聲學模型將語音信號轉化成對應的拼音信息,經(jīng)過語言模型將拼音轉化成對應的文本內(nèi)容,最終將帶有標點的文本保存,完成語音到文字的識別。
圖1 語音識別系統(tǒng)框架圖
DFCNN-CTC 由4 部分組成,網(wǎng)絡結構如圖2所示。第1 部分為輸入層,接收輸入的聲學特征,即通過對時域信號進行分幀、加窗、傅立葉變換、取對數(shù)得到的語譜圖特征,接著特征數(shù)據(jù)經(jīng)過規(guī)范化層和零填充層的處理,確保數(shù)據(jù)歸一為標準正態(tài)分布且批處理中的所有語句具有相同長度。
圖2 DFCNN-CTC 網(wǎng)絡結構圖
第2 部分為卷積池化層,包含5 組CNN-Maxpool 層,每組由2 個CNN 和1 個Maxpool 構成,CNN 層使用3*3 的卷積核對聲學特征進行卷積操作,Maxpool 層通過提取最大參數(shù)來降低參數(shù)數(shù)量。經(jīng)過較多的卷積層和池化層,模型能夠學到更多的歷史和未來信息。
第3 部分為全連接層,它的每個神經(jīng)元與前一池化層的所有神經(jīng)元進行連接,整合卷積池化層的分類特征并加以區(qū)分。每個神經(jīng)元的激活函數(shù)使用ReLU 函數(shù)。
第4 部分為CTC 輸出層,用于生成預測的拼音序列,網(wǎng)絡結構如圖3 所示。x 為輸入序列,h 為Encoder 的輸出,LC(liner classifier)為線性分類層,t為最終的輸出序列。由圖3 可以看出,CTC 具有較強的條件獨立性,即每個單詞的輸出之間是各自獨立的,這使得最終結果出現(xiàn)結巴重復的詞,因此,將DFCNN 作為CTC 的Encoder 層,利用其較深的卷積池化結構,使模型學習到更多有用的信息。同時,CTC 算法不需要對數(shù)據(jù)進行對齊操作和一一標注,引入空白占位符使得輸入和輸出之間有了合理的對應關系,可以輸出對齊的結果。
圖3 CTC 網(wǎng)絡結構圖
在傳統(tǒng)的語音識別系統(tǒng)中,大多將注意力放在聲學模型的改進上,忽略了語言模型N-gram 存在字詞之間語義的相似性、訓練時的參數(shù)過大等問題,因此,本文引入強語言模型Transformer,結合DFCNN 聲學模型構建語音識別系統(tǒng)。
Transformer 能學習到輸入序列與輸出序列之間的對應關系,它的結構包括編碼器和解碼器兩個主要模塊,編碼器編碼時間序列,解碼器結合編碼器的輸出和上一時間步長的輸出來生成下一時間步長的輸出,直到生成結束符為止。Transformer 將聲學模型輸出的拼音序列作為輸入,先經(jīng)過文本嵌入層,將文本中詞匯的數(shù)字表示轉變?yōu)橄蛄勘硎?,通過高維空間捕捉詞匯間的關系;再經(jīng)過位置編碼層,詞匯位置的不同可能會產(chǎn)生不同的語義信息,將位置編碼加入到詞嵌入向量中,彌補位置信息的缺失,兩層結果相加作為編碼器的輸入。
編碼器旨在對原始信息進行編碼表示,編碼表示能夠體現(xiàn)出該字符序列的語義信息。編碼器由6個編碼單元組成,每個編碼單元有多頭注意力機制層(multi-head attention)、殘差連接和歸一化層(add& normalization)以及前饋神經(jīng)網(wǎng)絡層(feed forward)。其中,多頭注意力機制層利用多個自注意力機制(self-attention),從不同的信息維度提取字符的向量表示。自注意力機制的每個輸出都考慮了所有輸入序列的信息,具有可以并行計算和考慮全局信息的優(yōu)點,其網(wǎng)絡結構如圖4 所示。
圖4 自注意力機制網(wǎng)絡結構圖
自注意力機制的計算輸出矩陣表示為:
但在實際應用中,單個Self-attention 的擬合能力較差,常使用多頭注意力機制。在并行執(zhí)行每個獨立計算的自注意力機制之前,使用一組線性變換層,并將其輸出連接到另一個線性投影中,從而得到最終的輸出。多頭注意力機制使模型能夠在不同的表示子空間中,在不同的位置共同關注信息,讓每個注意力機制去優(yōu)化每個詞匯的不同特征部分,均衡偏差,讓詞義擁有來自更多元的表達。多頭注意力機制表示為:
殘差連接層可以避免梯度消失問題,歸一化層采用BN(batch normalization)算法,在每層的每批數(shù)據(jù)上進行歸一化,將輸入轉化成均值為0 方差為1的數(shù)據(jù),防止經(jīng)過多層前向計算后數(shù)據(jù)偏差過大。
在編碼器的子層中還包括前饋神經(jīng)網(wǎng)絡層,由于自注意力機制對復雜過程的擬合程度不夠,通過增加兩層線性網(wǎng)絡來增強模型能力。該層網(wǎng)絡可表示為:
每個解碼器比編碼器多一個掩碼多頭自注意力層,利用掩碼張量,保證在預測句子時僅依賴于已知的輸出量,將已經(jīng)傳入的后一個未來字符信息進行遮掩。編碼器可以并行計算,但是解碼器類似于RNN 網(wǎng)絡,需要一步一步去解碼。最后,通過線性層和sofemax 層將解碼器的輸出轉換為輸出詞的概率分布。
在實驗過程中發(fā)現(xiàn),最終得到的語音識別結果是整段文字,不易于讀者理解,也不利于該文本后續(xù)的處理和使用,同時可識別的最長語音為16 s,經(jīng)過實驗測試,隨著語音長度參數(shù)的增大,模型訓練時所需要的參數(shù)和時間呈指數(shù)增長,對計算機設備的要求較高?;谝陨铣霈F(xiàn)的問題,將語音端點檢測(voice activity detection,VAD)引入語音識別系統(tǒng)中,通過分析語音幀的特征,使模型能夠區(qū)分語音和非語音信號,解決連串漢字的斷點問題。
VAD 可以將語音信號自動打斷,將音頻信號劃分為發(fā)音部分(voiced)、未發(fā)音部分(unvoiced)和靜默部分(silence),算法過程如下:首先對語音信號進行分段,以幀為單位實現(xiàn)分幀操作,接著從每一幀數(shù)據(jù)當中提取梅爾頻率倒譜系數(shù)(mel-frequency cepstral coefficient,MFCC)特征,然后在一個已知語音和靜默信號區(qū)域的數(shù)據(jù)幀集合上訓練一個分類器模型,最后用訓練好的模型對未知的音頻信號分類,得到最終的分類結果。
在本文中,VAD 接收輸入的語音文件進行分類,通過獲取檢測得到的斷點,即每段發(fā)音部分的起止時間,將這些起止時間保存到一個List 集合中,最終將List 值和原始語音文件作為語音識別的輸入,繼續(xù)之后的識別操作。引入VAD 可以檢測到說話者停頓時間較長的位置信息,作為一句話的結束添加標點符號,并且對需要識別的語音數(shù)據(jù)長度沒有要求。在公開數(shù)據(jù)集的特征與標注數(shù)據(jù)下,訓練后得到的分類模型準確率達到98%。
VAD 訓練的模型是基于深度卷積長短時記憶網(wǎng)絡(convolutional long-short term memory deep neural network,CLDNN),是一種組合形式的網(wǎng)絡結構。首先輸入原始語音,經(jīng)過2 個CNN 層提取局部特征,每層核大小為1*3,加入BN 層和ReLU 激活函數(shù)防止過擬合,CNN 層將輸入的低級特征轉化成高級特征,可以消除輸入頻率的變化,做特征之間的映射和轉換;LSTM 層容易學習連續(xù)時間步長間的結構,可以充分利用上下文信息進行時序建模,學習時序信息;DNN 將局部和時序特征映射到可分空間中,輸出當前幀的預測結果。VAD 使用二元交叉熵BCE(binary cross-entropy)作為損失函數(shù),模型的網(wǎng)絡結構如圖5 所示。
圖5 CLDNN 網(wǎng)絡結構圖
圖6 和圖7 分別為沒有經(jīng)過端點檢測的識別結果和本文系統(tǒng)的識別結果,語音數(shù)據(jù)為Thchs30 測試集中的語音文件。由圖5 和圖6 的結果表明,沒有經(jīng)過端點檢測的結果是一連串文字,需要讀者自己理解斷句,而引入端點檢測的語音識別結果中,每句話由逗號分開,句子意思表達清晰,兩者對比顯然本文系統(tǒng)的識別結果更具可讀性,也更易于讀者理解。
圖6 無語音端點檢測的識別結果
圖7 本文系統(tǒng)的語音識別結果
3.1.1 聲學模型和語言模型參數(shù)
語音信息是采樣率為16 KHz 的單通道數(shù)據(jù),在經(jīng)過分幀(幀長25 ms、幀移10 ms)以及加漢明窗進行分析后,最終提取200 維的語譜圖特征作為聲學模型的輸入。經(jīng)過DFCNN-CTC 結構,學習率(learning_rate)為1e-3,該參數(shù)可以確定每次迭代的步長,使損失函數(shù)收斂到最小,本文使用離散下降的方法更新學習率,初始設置一個較大的值,隨著迭代次數(shù)的增加,不斷減小數(shù)值;批處理大?。╞atch_size)為32,大的batchsize 可以使梯度計算更加穩(wěn)定,同時減少訓練時間,但是對計算機的算力要求較高;dropout 為0.3,應用于除輸入層和輸出層以外的所有層中,dropout 層是按照設定的概率暫時將部分神經(jīng)網(wǎng)絡訓練單元從網(wǎng)絡中移除,防止訓練時過擬合;采用CTC loss作為損失函數(shù)、Adam 優(yōu)化器進行優(yōu)化,Adam 優(yōu)化器可以使參數(shù)信息較平穩(wěn)。
在Transformer 語言模型結構中,提取200 維特征,與聲學模型保持一致;批處理大小為40,減小批處理大小會使解碼速度變慢,識別結果變差;詞嵌入向量為512;多頭注意力數(shù)為8,增加多頭注意力數(shù)目會使訓練時間變長,識別結果幾乎沒有差異;學習率為0.000 3,具體更新方法同聲學模型;dropout為0.2。
3.1.2 數(shù)據(jù)集
本文采用Thchs30 和ST-CMDS 兩個中文數(shù)據(jù)集,總計140 h,包括115 988 條語句,其中,訓練集110 000 條,驗證集1 493 條,測試集4 495 條,訓練集、驗證集和測試集的比例為73∶1∶3。
Thchs30 數(shù)據(jù)集是由清華大學語音與語言技術中心(CSLT)出版的開放式中文語音數(shù)據(jù)庫,是在安靜的辦公室環(huán)境下,通過單個碳粒麥克風錄取,大約40 個小時,內(nèi)容以文章詩句和新聞為主,由會說流利普通話的大學生參與錄音,全部為女聲。
ST-CMDS 是由一個AI 數(shù)據(jù)公司發(fā)布的語音數(shù)據(jù)集,大約100 個小時,內(nèi)容以平時的網(wǎng)上語音聊天和智能語音控制語句為主,由855 個不同說話者參與錄音,同時有男聲和女聲。由于原始語料庫沒有劃分數(shù)據(jù)集,因此,參考了Thchs30 的劃分方法,隨機選擇了100 000 條語句作為訓練集,600 條語句作為驗證集,2 000 條語句作為測試集。
針對本文提出的DFCNN-CTC 結合語言模型Transformer 的中文語音識別系統(tǒng),為了驗證該系統(tǒng)的性能,將兩個數(shù)據(jù)集分別在DFCNN 結合3-gram和本文系統(tǒng)模型上進行實驗驗證,測試結果如表1所示。WER 是指語音轉文字的詞錯誤率,是語音識別任務性能的評測指標,計算公式如下所示:
表1 兩個數(shù)據(jù)集在不同系統(tǒng)模型的WER(%)
為了使識別出的詞序列和標準詞序列保持一致,需要進行替換、刪除或者插入某些詞。其中,S 表示替換的次數(shù),I 表示插入的次數(shù),D 表示刪除的次數(shù),N 表示標準詞序列中詞的個數(shù)。
由表1 中兩個不同數(shù)據(jù)集的驗證結果表明,本文提出的DFCNN-CTC 結合Transformer 語音識別系統(tǒng)在不同數(shù)據(jù)集上的詞錯誤率都有明顯下降,分別下降了6.1%和7.7%,體現(xiàn)了較好的性能和泛化能力。這是因為Transformer 相比3-gram 模型并行對整句語音進行建模,每個單詞在訓練時與句子的所有單詞都建立了聯(lián)系,不僅提高訓練速度,而且使單詞之間有了語義聯(lián)系,識別結果更準確。
本文還通過比對不同模型識別所用的時間來驗證模型的性能,實驗結果如表2 所示。在表2 中,N 表示從Thchs30 數(shù)據(jù)集的測試集中抽取語音數(shù)據(jù)的條數(shù),從測試結果可以看出,本文提出的系統(tǒng)模型在識別相同數(shù)目的語音文件時,測試時間有明顯的減少,識別速度相比DFCNN-3-gram 模型提升了33%左右。
表2 不同系統(tǒng)模型的測試時間(s)
為了驗證聲學模型DFCNN-CTC 結合強語言模型Transformer 的語音識別系統(tǒng)的優(yōu)勢,將該系統(tǒng)與BLSTM系統(tǒng)、DFSMN-3-gram、DFSMN- Transformer、DFCNN-3-gram 系統(tǒng)作對比,實驗結果如表3 所示。
表3 不同語音識別系統(tǒng)的WER(%)
由表3 中的數(shù)據(jù)表明,本文提出的語音識別系統(tǒng)相較于其他系統(tǒng),在識別準確率上具有一定的優(yōu)越性,準確率達到了87.2%。對比聲學模型可以得出結論:DFCNN 結合Transformer 相比DFSMN 結合Transformer 的詞錯誤率下降了1.1%,這可能是因為DFCNN 和DFSMN 雖然都有很深的模型結構,但DFCNN 中的卷積池化結構能夠學習到更多的語音特征;對比語言模型可以得出結論:Transformer 的核心組件注意力機制使整句話中字詞之間有了語義上的聯(lián)系,整體優(yōu)于3-gram 模型,詞錯誤率分別下降1.1%和6.9%。
本文引入語音端點檢測技術,使系統(tǒng)得到的最終識別結果為可讀性高的帶標點文本,同時對輸入的語音長度不受限制。引入強語言模型Transformer,將其和聲學模型DFCNN-CTC 相結合,建立了DFCNN-CTC-Transformer 自動語音識別系統(tǒng)。實驗結果表明,新的語音識別系統(tǒng)總體性能優(yōu)于某些現(xiàn)有的系統(tǒng),準確率有明顯提升。