楊勝捷 朱灝耘 馮天祥 陳宇
摘 要:為了改善傳統(tǒng)語音識別算法識別不夠準確且消耗時間較大的問題,本文提出了一種基于Kaldi的子空間高斯混合模型與深度神經網絡相結合的算法進行語音識別。針對聲音頻率信號識別率較低的問題,本文采用了快速傅立葉變換和動態(tài)差分的方法進行MFCC特征提取。實驗證明,相比于單獨的SGMM、SGMM+MMI等語音識別算法,該算法對語音識別的錯誤率更低,對語音識別的研究具有重大意義。
關鍵詞: 語音識別;Kaldi;子空間高斯混合模型;深度神經網絡
中圖分類號:TP18? ? ? ? 文獻標識碼:A? ? ? ? 文章編號:1009-3044(2019)02-0163-04
Speech Recognition Algorithm Based on Kaldi
YANG Sheng-jie ,ZHU Hao-yun , FENG Tian-xiang, CHEN Yu*
(School of Information and Computer Science, Northeast Forestry University, Harbin 150040, China)
Abstract: In order to improve the problem that the traditional speech recognition algorithm is not accurate enough and consumes a lot of time, this paper proposes a Kaldi-based subspace Gaussian mixture model combined with deep neural network for speech recognition. Aiming at the problem that the recognition rate of sound frequency signal is low, this paper adopts the method of fast Fourier transform and dynamic difference to extract MFCC features. Experiments show that compared with the speech recognition algorithms such as SGMM and SGMM+MMI alone, the algorithm has a lower error rate for speech recognition, which is of great significance for speech recognition research.
Key words: Speech recognition; Kaldi; subspace Gaussian mixture model; deep neural network
隨著互聯網技術的高速發(fā)展,實現人與計算機之間的自由交互變得尤為重要,作為智能計算機研究的主導方向和人機語音通信的關鍵技術,語音識別技術一直受到各國科學界的廣泛關注。
語音識別(Automatic Speech Recognition, ASR)是指利用計算機實現從語音到文字自動轉換的任務[1]。在實際的應用過程中,語音識別通常與自然語言理解、自然語言生成和語音合成等技術結合在一起,提供一個基于語音的人與計算機之間的自由交互方法。
語音識別最早起源于1952年的貝爾實驗室,它是世界上第一個能夠識別10個英文發(fā)音的識別實驗系統(tǒng),早期的語音識別系統(tǒng)是簡單的孤立詞識別系統(tǒng),在20世紀60年代以后計算機的廣泛應用推動了語音識別技術的蓬勃發(fā)展,到了20世紀80年代,語音識別的研究中心從孤立詞識別進步到了連接詞的識別,隱馬爾科夫模型(Hidden Markov Model,HMM)[2]的理論和方法得到了長足的發(fā)展,語音識別研究產生了巨大的突破,進入90年代以后,由于HMM整體框架設計以及模型的自適應方面取得了一些突破性進展,人工神經網絡技術也得到發(fā)展,因此這個時期的語音識別技術突飛猛進,語音識別系統(tǒng)也從實驗室走向實際應用。
在我國,語音識別的研究工作一直緊跟國際發(fā)展潮流。最早,由中國科學院聲學研究所的馬大猷院士領導的科研小組對漢語的語音信號進行了系統(tǒng)研究,到70年代末期取得突破性進展。在20世紀80年代,研究語音識別的人越來越多,很多科學家和科研院所都投入其中,然后漢語的全音節(jié)語音識別技術取得了相當大的進展,同時清華大學的教授提出了基于段長分布的HMM語音識別模型,極大推動了我國的語音識別技術的發(fā)展。到了新世紀,漢語語音識別技術相關應用進入蓬勃發(fā)展階段,涌現了很多的相關企業(yè),如中科信利、科大訊飛、中科模識、微信等等。語音識別技術歷經長足的發(fā)展,慢慢趨于成熟,現在更是大數據與深度神經網絡的時代,許多實際應用的產品也由此產生。所以,讓人機進行語音的交互已經變得可能,讓高可靠性的便捷人機交互能直接服務人類的工作和生活,從而使人們的生活能夠更加舒適方便。
本文采用的是使用Kaldi開源語音識別工具箱作為語音識別的平臺,采用子空間高斯混合模型(Subspace Gaussian Mixture Model, SGMM)、深度適配網絡(Deep Adaptation Netowrk, DAN)與深度神經網絡(Deep Neural Network, DNN)算法相結合對語音進行識別。Kaldi是一個基于C++編寫的用于語音識別的開源工具箱,Kaldi一般被用于進行語音識別的研究者和相關人士。子空間高斯混合模型的每一個狀態(tài)依然對應一個混合高斯函數 (GMM),只是該混合高斯函數的均值、方差,權重通過一個向量分別和均值、方差、權重的映射矩陣計算得到,該向量與當前狀態(tài)相關,然而參數的映射矩陣被所有狀態(tài)共享,這使得在有限的訓練數據下,模型參數能夠得到更加充分的訓練。由于深度特征隨著網絡層數的增加由一般轉變到特殊,特征的可遷移能力在網絡比較高的層次就會急劇下滑,增加了域之間的差異性。因此為了提高特征層的可遷移能力顯得尤為重要,所以本文采用深度適配網絡(DAN)來減少域之間的差異性,DAN作為深度遷移學習的代表性方法,充分利用了深度網絡的可遷移特性,使得語音識別的學習型更強,遷移能力更好。實驗表明,采用子空間高斯混合模型、深度適配網絡與深度神經網絡相結合的算法能夠使得語音識別的錯誤率更低。
1 基本理論
1.1 深度學習
深度學習(Deep Learning)[3]是機器學習的分支,是一種試圖使用包含復雜結構或由多重非線性變換構成的多個處理層對數據進行高層抽象的算法。
深度學習的基礎是機器學習中的分散表示(Distributed Representation)。分散表示假定觀測值是由不同因子相互作用生成。在此基礎上,深度學習進一步假定這一相互作用的過程可分為多個層次,代表對觀測值的多層抽象。深度學習運用了這分層次抽象的思想,更高層次的概念從低層次的概念學習得到。這一分層結構常常使用貪婪算法逐層構建而成,并從中選取有助于機器學習的更有效的特征。至今已有數種深度學習框架,如深度神經網絡、卷積神經網絡和深度置信網絡和遞歸神經網絡已被應用在計算機視覺、語音識別、自然語言處理、音頻識別與生物信息學等領域并獲取了極好的效果。
1.2 深度神經網絡
神經網絡技術起源于20世紀五、六十年代,當時叫作感知器[4-5],擁有輸入層、輸出層和一個隱含層。輸入的特征向量通過隱含層變換達到輸出層,在輸出層得到分類結果,但是由于它對一些復雜函數的處理無能為力,所以深度神經網絡就誕生了。深度神經網絡內部的神經網絡層可以分為三類:輸入層、隱藏層和輸出層,一般來說第一層是輸入層,最后一層是輸出層,中間的層數都叫作隱藏層,如下圖所示:
在DNN中層與層是全連接的,雖然看起來很復雜,但是從小的局部模型來說,是跟感知器一樣,是一個線性關系:
[y=f(W?x+b)]? ? ? ? (1)
在公式(1)中,[y]代表輸出向量,[x]代表輸入向量,[W]代表權重矩陣,[f]代表激活函數,[b]代表偏移向量。
深度神經網絡與大多數傳統(tǒng)的機器學習算法不同,它無須人工干預即可執(zhí)行自動特征提取,在對未標記數據進行訓練時,深層網絡中的每個節(jié)點層通過重復嘗試重建從中抽取樣本的輸入來自動學習特征,嘗試最小化網絡猜測與輸入數據本身的概率分布之間的差異。例如,受限玻爾茲曼機(Restricted Boltzmann Machine,RBM)[6]以這種方式創(chuàng)建所謂的重建。深度神經網絡處理和學習大量未標記數據的能力相比較于以前的算法,還是有很大的優(yōu)勢,但也同樣具有一定的缺陷,深度神經網絡在訓練模型時耗時太長,訓練成本太高。
1.3 子空間高斯混合模型
高斯混合模型(Gaussian Mixture Model, GMM)是單一高斯概率密度函數的延伸,GMM能夠平滑地近似任意形狀的密度分布。高斯混合模型種類有單高斯模型(Single Gaussian Model, SGM)和高斯混合模型(Gaussian Mixture Model, GMM)兩類。類似于聚類,根據高斯概率密度函數(Probability Density Function, PDF)參數不同,每一個高斯模型可以看作一種類別,輸入一個樣本x,即可通過PDF計算其值,然后通過一個閾值來判斷該樣本是否屬于高斯模型。很明顯,由于高斯混合模型中參數數量非常大,因此提出了子空間高斯混合模型(Subspace Gaussian Mixture Model, SGMM)[7],SGMM的拓撲結構與GMM的拓撲結構大致相同,只是在輸出概率的參數上有所差異,SGMM的輸出概率公式如下:
[p(x|j)=i=1IwjiN(x;μji,i)] (2)
[μji=Mivj] (3)
[wji=expwiTvji'=1Iexpwi'Tvj] (4)
這里[x]是特征向量,[j]是狀態(tài)的索引,所有的狀態(tài)均有[I]個高斯,每個高斯的均值,權重通過與每個狀態(tài)相關的矢量[vj]映射得到。在這里,“子空間”的意思就是GMM的參數是整個[I]維混合模型的子空間。式(4)中權重在進行了歸一化處理以確保它們的和為[1]。
1.4 Kaldi語音識別系統(tǒng)
Kaldi語音識別工具主要關注子空間高斯混合模型的建模,是一個開源的語音識別系統(tǒng),主要用C++實現。Kaldi的目標是提供一個易于理解和拓展的更先進的識別語音系統(tǒng)。Kaldi通過SourceForge發(fā)布更新,它可以在通用的類Unix環(huán)境和Windows環(huán)境下編譯[8]。Kaldi具備了如下幾個重要的特性:整合了線性代數拓展、整合了有限狀態(tài)轉換器、代碼設計易于擴展、開放開源協議、完整的語音識別系統(tǒng)搭建工具。Kaldi系統(tǒng)框架如下圖所示:
Kaldi主要依賴兩個外部開源庫:BLAS/LAPACK和OpenFST[9]。Kaldi本身的模塊可以劃分為兩個部分,這兩個部分都只能依賴外部庫。這兩個部分通過Decodable接口連接。
通過C++編寫的命令行工具可以訪問庫函數,一般通過編寫腳本文件來構造語音識別系統(tǒng)[10]。每一個命令行工具都能完成特定的任務,并且只有少量的參數。除此之外,所有的工具都支持從管道讀寫,這使得每個工具之間的輸入輸出更方便銜接。
2 實驗過程及結果
2.1實驗過程
本實驗采用TIMIT(The DARPA TIMIT Acoustic-Phonetic Continuous Speech Corpus)語音數據庫作為語音識別的實例,TIMIT語音庫是IT和MIT合作音素級別標注的語音庫,用于自動語音識別系統(tǒng)的發(fā)展和評估,包括來自美式英語,8個地區(qū)方言,630個人。每個人讀10個句子,每個發(fā)音都是音素級別、詞級別文本標注,16kHz、16bit。
TIMIT官方文檔建議按照7:3的比例將數據集劃分為訓練集(70%)和測試集(30%),訓練集(Training)包括由462個人所講的3696個句子,全部測試集(Complete test set)包括由168個人所講的1344個句子,核心測試集(Core test)包括由24個所講的192個句子,訓練集和測試集沒有重合。具體如下表所示:
選擇實例完畢后,采用上文提到的方法對TIMIT進行語音識別,通過(SGMM+DAN+DNN)對其進行訓練和測試并得到實驗結果?;贙aldi的語音識別的實驗流程如下圖所示:
2.2實驗結果
實驗過程中,用快速傅立葉變換(FFT)對所選的樣本進行特征提取,特征提取后,生成語音模型文件,將一部分的數據作為測試數據,一部分數據留作檢驗精度。接下來采用DNN+SGMM算法對提取出來的MFCC特征數據進行訓練和測試,實驗過程中,將TIMIT數據集分成兩組,一組作為訓練數據,一組作為測試數據進行特征提取,共有兩類數據,初始化參數,得到錯誤率%WER。
為了對比深度學習網絡的識別率,我們選用相同的驗證樣本和測試樣本并用不同的分類算法進行分類,分別使用SGMM、SGMM和MMI算法相結合進行實驗。從圖5中可以看出,SGMM+MMI算法相對較差,SGMM單獨訓練結果較好,但是最終的效果都不如SGMM+DNN學習網絡,說明SGMM+DNN算法在語音識別中錯誤率最低,效果顯著。
在用相同的測試集樣本數據并用三個語音識別算法分別進行實驗時,同時記錄下每個語音識別算法的訓練時間??梢缘玫奖?中的結果,從結果中我們可以看出,SGMM+DNN的訓練時間相比SGMM+MMI較長。但是從識別效果上來說,要遠比其他算法更強。
另外在選取若干樣本,分別用SGMM、SGMM+MMI和SGMM+DNN對其進行語音識別,分別測出驗證集和測試集的錯誤率,可以得到如表3中的數據:
由表3中可以看出三種語音識別算法的驗證集的錯誤率明顯低于測試集,這是由兩類樣本的數據規(guī)模決定的,驗證集的數據規(guī)模較小,所以錯誤率低。但是SGMM+DNN的識別效果比較穩(wěn)定,證明SGMM+DNN語音識別效果更好。
3 結論
本文提出了用子空間高斯混合模型與深度神經網絡學習算法對語音進行識別,通過快速傅里葉變換對語音MFCC進行特征提取,提取動態(tài)差分的參數,可以大量節(jié)省計算機硬件的運算和存儲消耗,將特征矩陣輸入到深度神經網絡,用深度學習算法對其進行訓練和解碼。經過實驗,相比于單獨的SGMM和SGMM與MMI相結合,用本文提出的方法能夠實現對語音的識別。所以,SGMM+DNN算法應用在語音識別中,取得了明顯的效果,為語音識別方向開拓了新的視野。
參考文獻:
[1] 何湘智.語音識別的研究與發(fā)展[J]. 計算機與現代化, 2002(3):3-6.
[2] 吳義堅.基于隱馬爾科夫模型的語音合成技術研究[D]. 中國科學技術大學, 2006.
[3] 毛勇華,桂小林, 李前,等. 深度學習應用技術研究[J]. 計算機應用研究, 2016, 33(11):3201-3205.
[4] Wright H Z, Lee S C, Wright S, et al. Outreach in Armenia: chronic disease awareness, prevention and management[J]. Annals of Global Health, 2015, 81(1):103-104.
[5] 李偉林,文劍, 馬文凱. 基于深度神經網絡的語音識別系統(tǒng)研究[J]. 計算機科學, 2016, 43(s2):45-49.
[6] Gao X, Fei L I, Wan K. Accelerated Learning for Restricted Boltzmann Machine with a Novel Momentum Algorithm[J]. Chinese Journal of Electronics, 2018, 27(3):483-487.
[7] 付強.基于高斯混合模型的語種識別的研究[D]. 中國科學技術大學, 2009.
[8] 胡文君,傅美君,潘文林.基于Kaldi的普米語語音識別[J]. 計算機工程, 2018(1):199-205.
[9] 李平.遠距離混合語音識別方法的研究[D]. 遼寧工業(yè)大學, 2016.
[10] 張強.大詞匯量連續(xù)語音識別系統(tǒng)的統(tǒng)計語言模型應用研究[D]. 西南交通大學, 2009.