楊勝捷 朱灝耘 馮天祥 陳宇
摘 要:為了改善傳統(tǒng)語音識別算法識別不夠準(zhǔn)確且消耗時(shí)間較大的問題,本文提出了一種基于Kaldi的子空間高斯混合模型與深度神經(jīng)網(wǎng)絡(luò)相結(jié)合的算法進(jìn)行語音識別。針對聲音頻率信號識別率較低的問題,本文采用了快速傅立葉變換和動態(tài)差分的方法進(jìn)行MFCC特征提取。實(shí)驗(yàn)證明,相比于單獨(dú)的SGMM、SGMM+MMI等語音識別算法,該算法對語音識別的錯(cuò)誤率更低,對語音識別的研究具有重大意義。
關(guān)鍵詞: 語音識別;Kaldi;子空間高斯混合模型;深度神經(jīng)網(wǎng)絡(luò)
中圖分類號:TP18? ? ? ? 文獻(xiàn)標(biāo)識碼: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
隨著互聯(lián)網(wǎng)技術(shù)的高速發(fā)展,實(shí)現(xiàn)人與計(jì)算機(jī)之間的自由交互變得尤為重要,作為智能計(jì)算機(jī)研究的主導(dǎo)方向和人機(jī)語音通信的關(guān)鍵技術(shù),語音識別技術(shù)一直受到各國科學(xué)界的廣泛關(guān)注。
語音識別(Automatic Speech Recognition, ASR)是指利用計(jì)算機(jī)實(shí)現(xiàn)從語音到文字自動轉(zhuǎn)換的任務(wù)[1]。在實(shí)際的應(yīng)用過程中,語音識別通常與自然語言理解、自然語言生成和語音合成等技術(shù)結(jié)合在一起,提供一個(gè)基于語音的人與計(jì)算機(jī)之間的自由交互方法。
語音識別最早起源于1952年的貝爾實(shí)驗(yàn)室,它是世界上第一個(gè)能夠識別10個(gè)英文發(fā)音的識別實(shí)驗(yàn)系統(tǒng),早期的語音識別系統(tǒng)是簡單的孤立詞識別系統(tǒng),在20世紀(jì)60年代以后計(jì)算機(jī)的廣泛應(yīng)用推動了語音識別技術(shù)的蓬勃發(fā)展,到了20世紀(jì)80年代,語音識別的研究中心從孤立詞識別進(jìn)步到了連接詞的識別,隱馬爾科夫模型(Hidden Markov Model,HMM)[2]的理論和方法得到了長足的發(fā)展,語音識別研究產(chǎn)生了巨大的突破,進(jìn)入90年代以后,由于HMM整體框架設(shè)計(jì)以及模型的自適應(yīng)方面取得了一些突破性進(jìn)展,人工神經(jīng)網(wǎng)絡(luò)技術(shù)也得到發(fā)展,因此這個(gè)時(shí)期的語音識別技術(shù)突飛猛進(jìn),語音識別系統(tǒng)也從實(shí)驗(yàn)室走向?qū)嶋H應(yīng)用。
在我國,語音識別的研究工作一直緊跟國際發(fā)展潮流。最早,由中國科學(xué)院聲學(xué)研究所的馬大猷院士領(lǐng)導(dǎo)的科研小組對漢語的語音信號進(jìn)行了系統(tǒng)研究,到70年代末期取得突破性進(jìn)展。在20世紀(jì)80年代,研究語音識別的人越來越多,很多科學(xué)家和科研院所都投入其中,然后漢語的全音節(jié)語音識別技術(shù)取得了相當(dāng)大的進(jìn)展,同時(shí)清華大學(xué)的教授提出了基于段長分布的HMM語音識別模型,極大推動了我國的語音識別技術(shù)的發(fā)展。到了新世紀(jì),漢語語音識別技術(shù)相關(guān)應(yīng)用進(jìn)入蓬勃發(fā)展階段,涌現(xiàn)了很多的相關(guān)企業(yè),如中科信利、科大訊飛、中科模識、微信等等。語音識別技術(shù)歷經(jīng)長足的發(fā)展,慢慢趨于成熟,現(xiàn)在更是大數(shù)據(jù)與深度神經(jīng)網(wǎng)絡(luò)的時(shí)代,許多實(shí)際應(yīng)用的產(chǎn)品也由此產(chǎn)生。所以,讓人機(jī)進(jìn)行語音的交互已經(jīng)變得可能,讓高可靠性的便捷人機(jī)交互能直接服務(wù)人類的工作和生活,從而使人們的生活能夠更加舒適方便。
本文采用的是使用Kaldi開源語音識別工具箱作為語音識別的平臺,采用子空間高斯混合模型(Subspace Gaussian Mixture Model, SGMM)、深度適配網(wǎng)絡(luò)(Deep Adaptation Netowrk, DAN)與深度神經(jīng)網(wǎng)絡(luò)(Deep Neural Network, DNN)算法相結(jié)合對語音進(jìn)行識別。Kaldi是一個(gè)基于C++編寫的用于語音識別的開源工具箱,Kaldi一般被用于進(jìn)行語音識別的研究者和相關(guān)人士。子空間高斯混合模型的每一個(gè)狀態(tài)依然對應(yīng)一個(gè)混合高斯函數(shù) (GMM),只是該混合高斯函數(shù)的均值、方差,權(quán)重通過一個(gè)向量分別和均值、方差、權(quán)重的映射矩陣計(jì)算得到,該向量與當(dāng)前狀態(tài)相關(guān),然而參數(shù)的映射矩陣被所有狀態(tài)共享,這使得在有限的訓(xùn)練數(shù)據(jù)下,模型參數(shù)能夠得到更加充分的訓(xùn)練。由于深度特征隨著網(wǎng)絡(luò)層數(shù)的增加由一般轉(zhuǎn)變到特殊,特征的可遷移能力在網(wǎng)絡(luò)比較高的層次就會急劇下滑,增加了域之間的差異性。因此為了提高特征層的可遷移能力顯得尤為重要,所以本文采用深度適配網(wǎng)絡(luò)(DAN)來減少域之間的差異性,DAN作為深度遷移學(xué)習(xí)的代表性方法,充分利用了深度網(wǎng)絡(luò)的可遷移特性,使得語音識別的學(xué)習(xí)型更強(qiáng),遷移能力更好。實(shí)驗(yàn)表明,采用子空間高斯混合模型、深度適配網(wǎng)絡(luò)與深度神經(jīng)網(wǎng)絡(luò)相結(jié)合的算法能夠使得語音識別的錯(cuò)誤率更低。
1 基本理論
1.1 深度學(xué)習(xí)
深度學(xué)習(xí)(Deep Learning)[3]是機(jī)器學(xué)習(xí)的分支,是一種試圖使用包含復(fù)雜結(jié)構(gòu)或由多重非線性變換構(gòu)成的多個(gè)處理層對數(shù)據(jù)進(jìn)行高層抽象的算法。
深度學(xué)習(xí)的基礎(chǔ)是機(jī)器學(xué)習(xí)中的分散表示(Distributed Representation)。分散表示假定觀測值是由不同因子相互作用生成。在此基礎(chǔ)上,深度學(xué)習(xí)進(jìn)一步假定這一相互作用的過程可分為多個(gè)層次,代表對觀測值的多層抽象。深度學(xué)習(xí)運(yùn)用了這分層次抽象的思想,更高層次的概念從低層次的概念學(xué)習(xí)得到。這一分層結(jié)構(gòu)常常使用貪婪算法逐層構(gòu)建而成,并從中選取有助于機(jī)器學(xué)習(xí)的更有效的特征。至今已有數(shù)種深度學(xué)習(xí)框架,如深度神經(jīng)網(wǎng)絡(luò)、卷積神經(jīng)網(wǎng)絡(luò)和深度置信網(wǎng)絡(luò)和遞歸神經(jīng)網(wǎng)絡(luò)已被應(yīng)用在計(jì)算機(jī)視覺、語音識別、自然語言處理、音頻識別與生物信息學(xué)等領(lǐng)域并獲取了極好的效果。
1.2 深度神經(jīng)網(wǎng)絡(luò)
神經(jīng)網(wǎng)絡(luò)技術(shù)起源于20世紀(jì)五、六十年代,當(dāng)時(shí)叫作感知器[4-5],擁有輸入層、輸出層和一個(gè)隱含層。輸入的特征向量通過隱含層變換達(dá)到輸出層,在輸出層得到分類結(jié)果,但是由于它對一些復(fù)雜函數(shù)的處理無能為力,所以深度神經(jīng)網(wǎng)絡(luò)就誕生了。深度神經(jīng)網(wǎng)絡(luò)內(nèi)部的神經(jīng)網(wǎng)絡(luò)層可以分為三類:輸入層、隱藏層和輸出層,一般來說第一層是輸入層,最后一層是輸出層,中間的層數(shù)都叫作隱藏層,如下圖所示:
在DNN中層與層是全連接的,雖然看起來很復(fù)雜,但是從小的局部模型來說,是跟感知器一樣,是一個(gè)線性關(guān)系:
[y=f(W?x+b)]? ? ? ? (1)
在公式(1)中,[y]代表輸出向量,[x]代表輸入向量,[W]代表權(quán)重矩陣,[f]代表激活函數(shù),[b]代表偏移向量。
深度神經(jīng)網(wǎng)絡(luò)與大多數(shù)傳統(tǒng)的機(jī)器學(xué)習(xí)算法不同,它無須人工干預(yù)即可執(zhí)行自動特征提取,在對未標(biāo)記數(shù)據(jù)進(jìn)行訓(xùn)練時(shí),深層網(wǎng)絡(luò)中的每個(gè)節(jié)點(diǎn)層通過重復(fù)嘗試重建從中抽取樣本的輸入來自動學(xué)習(xí)特征,嘗試最小化網(wǎng)絡(luò)猜測與輸入數(shù)據(jù)本身的概率分布之間的差異。例如,受限玻爾茲曼機(jī)(Restricted Boltzmann Machine,RBM)[6]以這種方式創(chuàng)建所謂的重建。深度神經(jīng)網(wǎng)絡(luò)處理和學(xué)習(xí)大量未標(biāo)記數(shù)據(jù)的能力相比較于以前的算法,還是有很大的優(yōu)勢,但也同樣具有一定的缺陷,深度神經(jīng)網(wǎng)絡(luò)在訓(xùn)練模型時(shí)耗時(shí)太長,訓(xùn)練成本太高。
1.3 子空間高斯混合模型
高斯混合模型(Gaussian Mixture Model, GMM)是單一高斯概率密度函數(shù)的延伸,GMM能夠平滑地近似任意形狀的密度分布。高斯混合模型種類有單高斯模型(Single Gaussian Model, SGM)和高斯混合模型(Gaussian Mixture Model, GMM)兩類。類似于聚類,根據(jù)高斯概率密度函數(shù)(Probability Density Function, PDF)參數(shù)不同,每一個(gè)高斯模型可以看作一種類別,輸入一個(gè)樣本x,即可通過PDF計(jì)算其值,然后通過一個(gè)閾值來判斷該樣本是否屬于高斯模型。很明顯,由于高斯混合模型中參數(shù)數(shù)量非常大,因此提出了子空間高斯混合模型(Subspace Gaussian Mixture Model, SGMM)[7],SGMM的拓?fù)浣Y(jié)構(gòu)與GMM的拓?fù)浣Y(jié)構(gòu)大致相同,只是在輸出概率的參數(shù)上有所差異,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]個(gè)高斯,每個(gè)高斯的均值,權(quán)重通過與每個(gè)狀態(tài)相關(guān)的矢量[vj]映射得到。在這里,“子空間”的意思就是GMM的參數(shù)是整個(gè)[I]維混合模型的子空間。式(4)中權(quán)重在進(jìn)行了歸一化處理以確保它們的和為[1]。
1.4 Kaldi語音識別系統(tǒng)
Kaldi語音識別工具主要關(guān)注子空間高斯混合模型的建模,是一個(gè)開源的語音識別系統(tǒng),主要用C++實(shí)現(xiàn)。Kaldi的目標(biāo)是提供一個(gè)易于理解和拓展的更先進(jìn)的識別語音系統(tǒng)。Kaldi通過SourceForge發(fā)布更新,它可以在通用的類Unix環(huán)境和Windows環(huán)境下編譯[8]。Kaldi具備了如下幾個(gè)重要的特性:整合了線性代數(shù)拓展、整合了有限狀態(tài)轉(zhuǎn)換器、代碼設(shè)計(jì)易于擴(kuò)展、開放開源協(xié)議、完整的語音識別系統(tǒng)搭建工具。Kaldi系統(tǒng)框架如下圖所示:
Kaldi主要依賴兩個(gè)外部開源庫:BLAS/LAPACK和OpenFST[9]。Kaldi本身的模塊可以劃分為兩個(gè)部分,這兩個(gè)部分都只能依賴外部庫。這兩個(gè)部分通過Decodable接口連接。
通過C++編寫的命令行工具可以訪問庫函數(shù),一般通過編寫腳本文件來構(gòu)造語音識別系統(tǒng)[10]。每一個(gè)命令行工具都能完成特定的任務(wù),并且只有少量的參數(shù)。除此之外,所有的工具都支持從管道讀寫,這使得每個(gè)工具之間的輸入輸出更方便銜接。
2 實(shí)驗(yàn)過程及結(jié)果
2.1實(shí)驗(yàn)過程
本實(shí)驗(yàn)采用TIMIT(The DARPA TIMIT Acoustic-Phonetic Continuous Speech Corpus)語音數(shù)據(jù)庫作為語音識別的實(shí)例,TIMIT語音庫是IT和MIT合作音素級別標(biāo)注的語音庫,用于自動語音識別系統(tǒng)的發(fā)展和評估,包括來自美式英語,8個(gè)地區(qū)方言,630個(gè)人。每個(gè)人讀10個(gè)句子,每個(gè)發(fā)音都是音素級別、詞級別文本標(biāo)注,16kHz、16bit。
TIMIT官方文檔建議按照7:3的比例將數(shù)據(jù)集劃分為訓(xùn)練集(70%)和測試集(30%),訓(xùn)練集(Training)包括由462個(gè)人所講的3696個(gè)句子,全部測試集(Complete test set)包括由168個(gè)人所講的1344個(gè)句子,核心測試集(Core test)包括由24個(gè)所講的192個(gè)句子,訓(xùn)練集和測試集沒有重合。具體如下表所示:
選擇實(shí)例完畢后,采用上文提到的方法對TIMIT進(jìn)行語音識別,通過(SGMM+DAN+DNN)對其進(jìn)行訓(xùn)練和測試并得到實(shí)驗(yàn)結(jié)果?;贙aldi的語音識別的實(shí)驗(yàn)流程如下圖所示:
2.2實(shí)驗(yàn)結(jié)果
實(shí)驗(yàn)過程中,用快速傅立葉變換(FFT)對所選的樣本進(jìn)行特征提取,特征提取后,生成語音模型文件,將一部分的數(shù)據(jù)作為測試數(shù)據(jù),一部分?jǐn)?shù)據(jù)留作檢驗(yàn)精度。接下來采用DNN+SGMM算法對提取出來的MFCC特征數(shù)據(jù)進(jìn)行訓(xùn)練和測試,實(shí)驗(yàn)過程中,將TIMIT數(shù)據(jù)集分成兩組,一組作為訓(xùn)練數(shù)據(jù),一組作為測試數(shù)據(jù)進(jìn)行特征提取,共有兩類數(shù)據(jù),初始化參數(shù),得到錯(cuò)誤率%WER。
為了對比深度學(xué)習(xí)網(wǎng)絡(luò)的識別率,我們選用相同的驗(yàn)證樣本和測試樣本并用不同的分類算法進(jìn)行分類,分別使用SGMM、SGMM和MMI算法相結(jié)合進(jìn)行實(shí)驗(yàn)。從圖5中可以看出,SGMM+MMI算法相對較差,SGMM單獨(dú)訓(xùn)練結(jié)果較好,但是最終的效果都不如SGMM+DNN學(xué)習(xí)網(wǎng)絡(luò),說明SGMM+DNN算法在語音識別中錯(cuò)誤率最低,效果顯著。
在用相同的測試集樣本數(shù)據(jù)并用三個(gè)語音識別算法分別進(jìn)行實(shí)驗(yàn)時(shí),同時(shí)記錄下每個(gè)語音識別算法的訓(xùn)練時(shí)間??梢缘玫奖?中的結(jié)果,從結(jié)果中我們可以看出,SGMM+DNN的訓(xùn)練時(shí)間相比SGMM+MMI較長。但是從識別效果上來說,要遠(yuǎn)比其他算法更強(qiáng)。
另外在選取若干樣本,分別用SGMM、SGMM+MMI和SGMM+DNN對其進(jìn)行語音識別,分別測出驗(yàn)證集和測試集的錯(cuò)誤率,可以得到如表3中的數(shù)據(jù):
由表3中可以看出三種語音識別算法的驗(yàn)證集的錯(cuò)誤率明顯低于測試集,這是由兩類樣本的數(shù)據(jù)規(guī)模決定的,驗(yàn)證集的數(shù)據(jù)規(guī)模較小,所以錯(cuò)誤率低。但是SGMM+DNN的識別效果比較穩(wěn)定,證明SGMM+DNN語音識別效果更好。
3 結(jié)論
本文提出了用子空間高斯混合模型與深度神經(jīng)網(wǎng)絡(luò)學(xué)習(xí)算法對語音進(jìn)行識別,通過快速傅里葉變換對語音MFCC進(jìn)行特征提取,提取動態(tài)差分的參數(shù),可以大量節(jié)省計(jì)算機(jī)硬件的運(yùn)算和存儲消耗,將特征矩陣輸入到深度神經(jīng)網(wǎng)絡(luò),用深度學(xué)習(xí)算法對其進(jìn)行訓(xùn)練和解碼。經(jīng)過實(shí)驗(yàn),相比于單獨(dú)的SGMM和SGMM與MMI相結(jié)合,用本文提出的方法能夠?qū)崿F(xiàn)對語音的識別。所以,SGMM+DNN算法應(yīng)用在語音識別中,取得了明顯的效果,為語音識別方向開拓了新的視野。
參考文獻(xiàn):
[1] 何湘智.語音識別的研究與發(fā)展[J]. 計(jì)算機(jī)與現(xiàn)代化, 2002(3):3-6.
[2] 吳義堅(jiān).基于隱馬爾科夫模型的語音合成技術(shù)研究[D]. 中國科學(xué)技術(shù)大學(xué), 2006.
[3] 毛勇華,桂小林, 李前,等. 深度學(xué)習(xí)應(yīng)用技術(shù)研究[J]. 計(jì)算機(jī)應(yīng)用研究, 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] 李偉林,文劍, 馬文凱. 基于深度神經(jīng)網(wǎng)絡(luò)的語音識別系統(tǒng)研究[J]. 計(jì)算機(jī)科學(xué), 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] 付強(qiáng).基于高斯混合模型的語種識別的研究[D]. 中國科學(xué)技術(shù)大學(xué), 2009.
[8] 胡文君,傅美君,潘文林.基于Kaldi的普米語語音識別[J]. 計(jì)算機(jī)工程, 2018(1):199-205.
[9] 李平.遠(yuǎn)距離混合語音識別方法的研究[D]. 遼寧工業(yè)大學(xué), 2016.
[10] 張強(qiáng).大詞匯量連續(xù)語音識別系統(tǒng)的統(tǒng)計(jì)語言模型應(yīng)用研究[D]. 西南交通大學(xué), 2009.