1
本文作者: 程弢 | 2016-09-06 17:32 | 專題:雷峰網(wǎng)公開課 |
語音識別建模對語音識別來說是不可或缺的一部分,因?yàn)椴煌慕<夹g(shù)通常意味著不同的識別性能,所以這是各個語音識別團(tuán)隊重點(diǎn)優(yōu)化的方向。也正是因?yàn)槿绱?,語音識別的模型也層出不窮,其中語言模型包括了N-gram、RNNLM等,在聲學(xué)模型里面又涵蓋了HMM、DNN、RNN等模型...
簡單來說,聲學(xué)模型的任務(wù)就是描述語音的物理變化規(guī)律,而語言模型則表達(dá)了自然語言包含的語言學(xué)知識。本期硬創(chuàng)公開課邀請到了搜狗語音交互中心語音技術(shù)部負(fù)責(zé)人陳偉來為大家分享伴隨著本輪人工智能浪潮下語音識別建模技術(shù)的演進(jìn),希望能夠幫大家理清主流的識別建模脈絡(luò)以及背后的思考。
嘉賓介紹:陳偉,搜狗公司桌面事業(yè)部專家研究員,語音交互中心語音技術(shù)部負(fù)責(zé)人,負(fù)責(zé)搜狗語音識別、語音合成、音樂檢索、聲紋識別、手寫識別等多項(xiàng)技術(shù)的研發(fā)工作,同時負(fù)責(zé)搜狗知音引擎語音技術(shù)的研發(fā),致力于通過技術(shù)和產(chǎn)品的創(chuàng)新提升語音交互品質(zhì),為用戶提供優(yōu)質(zhì)的語音使用體驗(yàn)。
搜狗知音引擎是搜狗公司自主研發(fā)的一項(xiàng)專注于自然交互的智能語音技術(shù),于2016年8月3日正式對外發(fā)布,該技術(shù)集合了語音識別、語義理解、語音交互、以及提供服務(wù)等多項(xiàng)功能,不僅能聽會說,還能理解會思考, 本文將結(jié)合知音引擎中語音識別建模技術(shù)的使用來為大家講解。
圖1 搜狗知音引擎
考慮到語音的短時平穩(wěn)特性,語音信號在前端信號處理時要進(jìn)行加窗分幀的操作,識別特征都按幀來提取,具體請見圖2。(編者注:分幀后的語音信號逐幀提取語音特征用于聲學(xué)模型建模。)
圖2 語音幀的劃分
語音信號經(jīng)過前端信號處理、端點(diǎn)檢測等處理后,逐幀提取語音特征,傳統(tǒng)的特征類型包括MFCC、PLP、FBANK等特征,提取好的特征送至解碼器,在聲學(xué)模型、語言模型以及發(fā)音詞典的共同指導(dǎo)下,找到最為匹配的詞序列作為識別結(jié)果輸出,整體流程請見圖3。識別的公式如圖4所示,可見聲學(xué)模型主要描述發(fā)音模型下特征的似然概率;語言模型主要描述詞間的連接概率;發(fā)音詞典主要是完成詞和音之間的轉(zhuǎn)換,其中聲學(xué)模型建模單元一般選擇三音素模型,以“搜狗語音為例”,
sil-s+ou1 s-ou1+g ou1-g+ou3 g-ou3+y ou3-y+u3 y-u3+y u3-y+in1 y-in1+sil
圖3 語音識別系統(tǒng)流程
圖4 語音識別原理
需要注意的是,輸入特征矢量X代表語音的特征。
近年來,隨著深度學(xué)習(xí)的興起,使用了接近30年的語音識別聲學(xué)模型HMM(隱馬爾科夫模型)逐漸被DNN(泛指深度神經(jīng)網(wǎng)絡(luò))所替代,模型精度也有了突飛猛進(jìn)的變化,整體來看聲學(xué)建模技術(shù)從建模單元、模型結(jié)構(gòu)、建模流程等三個維度都有了比較明顯的變化,如圖5所示:
圖5 聲學(xué)建模演進(jìn)總結(jié)
其中,深度神經(jīng)網(wǎng)絡(luò)超強(qiáng)的特征學(xué)習(xí)能力大大簡化了特征抽取的過程,降低了建模對于專家經(jīng)驗(yàn)的依賴,因此建模流程逐步從之前復(fù)雜多步的流程轉(zhuǎn)向了簡單的端到端的建模流程,由此帶來的影響是建模單元逐步從狀態(tài)、三音素模型向音節(jié)、字等較大單元演進(jìn),模型結(jié)構(gòu)從經(jīng)典的GMM-HMM向DNN+CTC(DNN泛指深度神經(jīng)網(wǎng)絡(luò))轉(zhuǎn)變,演進(jìn)的中間態(tài)是DNN-HMM的混合模型結(jié)構(gòu)。
HMM最早創(chuàng)立于20世紀(jì)70年代。80年代得到了傳播和發(fā)展,成為信號處理的一個重要方向,現(xiàn)已成功地用于語音識別,行為識別,文字識別以及故障診斷等領(lǐng)域。
詳細(xì)來看,經(jīng)典的HMM建??蚣苋缦滤荆?/p>
圖6 HMM建??蚣?/p>
其中,輸出概率使用高斯混合模型GMM建模,如下圖所示:
2012年,微軟鄧力和俞棟老師將前饋神經(jīng)網(wǎng)絡(luò)FFDNN(Feed Forward Deep Neural Network)引入到聲學(xué)模型建模中,將FFDNN的輸出層概率用于替換之前GMM-HMM中使用GMM計算的輸出概率,引領(lǐng)了DNN-HMM混合系統(tǒng)的風(fēng)潮,很多研究者使用了FFDNN、CNN、RNN、LSTM等多種網(wǎng)絡(luò)結(jié)構(gòu)對輸出概率進(jìn)行建模,并取得了很好的效果,如圖7所示。
圖7 DNN-HMM混合建模框架
DNN-HMM建??蚣苤?,輸入特征使用了在當(dāng)前幀左右拼幀的方式來實(shí)現(xiàn)模型對時序信號長時相關(guān)性的建模,模型輸出則保持了GMM-HMM經(jīng)常使用的trihone共享狀態(tài)(senone),中文大詞匯量連續(xù)語音識別中狀態(tài)數(shù)一般設(shè)置在1萬左右,如圖8所示。
圖8 DNN-HMM建模流程
FFDNN的模型結(jié)構(gòu)如下所示:
圖9 FFDNN建模流程
編者注:實(shí)際上,最早CNN只應(yīng)用于圖像識別,直到2012年才被用于語音識別系統(tǒng)。
圖10 CNN建模流程
語音的協(xié)同發(fā)音現(xiàn)象說明聲學(xué)模型需要考慮到語音幀之間的長時相關(guān)性,盡管上文中DNN-HMM通過拼幀的方式對上下文信息進(jìn)行了建模,但是畢竟拼接的幀數(shù)有限,建模能力不強(qiáng),因此引入了RNN(循環(huán)神經(jīng)網(wǎng)絡(luò))增強(qiáng)了長時建模的能力,RNN隱層的輸入除了接收前一個隱層的輸出之外,還接收前一時刻的隱層輸出作為當(dāng)前輸入,通過RNN的隱層的循環(huán)反饋,保留了長時的歷史信息,大大增強(qiáng)了模型的記憶能力,語音的時序特性通過RNN也得到了很好的描述。但是RNN的簡單結(jié)構(gòu)在模型訓(xùn)練進(jìn)行BPTT(Backpropagation Through Time)時很容易引起梯度消失/爆炸等問題,因此在RNN的基礎(chǔ)上引入了LSTM(長短時記憶模型),LSTM是一種特殊的RNN,通過Cell以及三個門控神經(jīng)元的特殊結(jié)構(gòu)對長時信息進(jìn)行建模,解決了RNN出現(xiàn)的梯度問題,實(shí)踐也證明了LSTM的長時建模能力優(yōu)于普通RNN。
圖11 RNN結(jié)構(gòu)
圖12 RNN到LSTM
上述的建模技術(shù)在模型訓(xùn)練時需要滿足一個條件,就是訓(xùn)練數(shù)據(jù)中每一幀都要預(yù)先確定對應(yīng)的標(biāo)注,即對應(yīng)DNN輸出狀態(tài)的序號,訓(xùn)練特征序列和標(biāo)注特征序列必須是等長的,而為了得到標(biāo)注,需要使用已有模型對訓(xùn)練數(shù)據(jù)序列和標(biāo)注序列進(jìn)行強(qiáng)制對齊,但是基于大數(shù)據(jù)訓(xùn)練時標(biāo)注的準(zhǔn)備比較耗費(fèi)時間,同時對齊使用的模型精度往往存在偏差,訓(xùn)練中使用的標(biāo)注會存在錯誤。因此引入了CTC(Connectionist Temporal Classification)準(zhǔn)則,解決了標(biāo)注序列與特征序列不等長的問題,通過前向后向算法自動學(xué)習(xí)語音特征中的模型邊界,這種準(zhǔn)則與用于時序建模的神經(jīng)網(wǎng)絡(luò)(如LSTM)的結(jié)合可以直接用于端到端的模型建模,顛覆了語音識別使用接近30年之久的HMM框架。
CTC準(zhǔn)則引入了blank類別,用于吸收發(fā)音單元內(nèi)部的混淆性,更加突出模型與其他模型之間的差異性,因此CTC具有非常明顯的尖峰效果,圖13是使用triphone-lstm-ctc模型對內(nèi)容為”搜狗語音”的語音進(jìn)行識別后的輸出概率分布,可以看到大部分區(qū)域都被blank吸收,識別出的triphone對應(yīng)著明顯尖峰。
圖13 CTC尖峰效果演示
可以預(yù)期,基于CTC或者引用CTC概念(如LFMMI)的端到端識別技術(shù)將逐漸成為主流,HMM框架將逐漸被替代。
目前RNNLM的技術(shù)已經(jīng)逐步引入到語音識別中來,通過對更長歷史信息的建模,RNNLM較傳統(tǒng)使用的N-Gram技術(shù)對識別性能有了較好的提升,但是考慮到大詞匯量語音識別中,如果完全替換N-Gram會帶來運(yùn)算量以及運(yùn)算時間的大幅增加,因此在知音引擎中,RNNLM用在對N-Gram識別輸出的N-Best候選列表的重排序上。
知音引擎中目前針對固定喚醒詞的方式,基于DNN進(jìn)行端到端的喚醒詞建模,具體如下:
圖14 端到端語音喚醒流程
這種方法盡管取得了非常低的誤喚醒率,但是缺點(diǎn)也很明顯,喚醒詞無法自定義,因此知音引擎中,我們使用DNN提取Bottleneck Feature,用于基于HMM的喚醒模型訓(xùn)練,較傳統(tǒng)基于MFCC的方式也取得了較好的效果。
盡管語音識別建模能力取得了較大的提升,但是遠(yuǎn)場、噪聲、口音、發(fā)音習(xí)慣(吞音)等問題仍然存在,很贊成吳恩達(dá)的說法,由95%的準(zhǔn)確率發(fā)展到99%,盡管只有4%的差距,但是可能會改變?nèi)藗兊慕换シ绞?,將?shí)現(xiàn)很少用到經(jīng)常使用的轉(zhuǎn)變。
目前語音原始數(shù)據(jù)獲取的成本越來越低,工業(yè)界正在使用數(shù)萬小時的已標(biāo)注數(shù)據(jù)進(jìn)行模型更新,將來十萬級的訓(xùn)練數(shù)據(jù)將成為可能,怎么能高效的使用數(shù)據(jù),主要有以下幾點(diǎn)的考慮:
數(shù)據(jù)篩選層面:使用無監(jiān)督、弱監(jiān)督、半監(jiān)督的數(shù)據(jù)進(jìn)行訓(xùn)練,同時更高效的挑選數(shù)據(jù)進(jìn)行標(biāo)注,知音引擎已經(jīng)在使用主動學(xué)習(xí)的方法進(jìn)行數(shù)據(jù)的篩選;
運(yùn)算層面:基于異構(gòu)計算的集群在超大數(shù)據(jù)上高效的完成模型訓(xùn)練,而運(yùn)算能力的升級已經(jīng)從線下訓(xùn)練擴(kuò)展到了線上測試;
模型層面:超大數(shù)據(jù)的學(xué)習(xí)需要更強(qiáng)能力的模型,目前基于多種模型結(jié)構(gòu)的復(fù)合結(jié)構(gòu)(如CNN-LSTM-DNN)已經(jīng)證明了可行性,后續(xù)基于Encoder-Attention-Decoder的序列學(xué)習(xí)框架也已經(jīng)在和語音識別進(jìn)行結(jié)合。
同時語音識別盡管現(xiàn)在可以達(dá)到很高的準(zhǔn)確率,但是準(zhǔn)確率從95%到99%甚至100%的這個跨越是由量變到質(zhì)變的過程,也是決定語音交互能否成為主流交互方式的重要一環(huán),但是目前語音識別的一些老問題仍然存在,技術(shù)上仍然沒有能力完全解決,因此技術(shù)之外的產(chǎn)品創(chuàng)新也很重要,可以有效彌補(bǔ)準(zhǔn)確率上的缺失。
以知音引擎為例,它針對這個問題提供了語音糾錯的解決方案,針對識別中出現(xiàn)的錯誤可以使用自然語音的方式進(jìn)行修正,比如用戶想說“我叫陳偉”,識別成了“我叫晨煒”,通過語音說出“耳東陳偉大的偉”就會改正識別結(jié)果,目前隨著多輪產(chǎn)品的迭代,語音修改已經(jīng)具備了80%的修改成功率,并且已經(jīng)應(yīng)用到了知音引擎的語音交互中,同時在搜狗iOS輸入法中也集成了語音修改的能力。
編者注:總結(jié)語音識別系統(tǒng)的流程,總結(jié)語音識別系統(tǒng)的流程,聲學(xué)建模和語言建模部分是最關(guān)鍵的一環(huán),而目前基于深度學(xué)習(xí)的建模技術(shù)已經(jīng)將模型性能提升到新的階段。不過正如陳偉所說,盡管語音識別的準(zhǔn)確率已經(jīng)達(dá)到了較高的水準(zhǔn),但依然有很大的提升空間,那么未來還會出現(xiàn)什么樣的模型呢?讓我們一起期待人工智能特別是深度學(xué)習(xí)技術(shù)新成果的出現(xiàn)。
此文為雷鋒網(wǎng)原創(chuàng)內(nèi)容,特此聲明雷鋒網(wǎng)雷鋒網(wǎng)
雷峰網(wǎng)原創(chuàng)文章,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。