百度優(yōu)化:語音識別中聲學(xué)模型得分計(jì)算優(yōu)化方法 |
發(fā)布時(shí)間: 2012/9/5 11:10:27 |
語音是人們溝通交流最直接、最自然的交互方式。自計(jì)算機(jī)問世以來,人們就一直希望可以通過語音實(shí)現(xiàn)人和計(jì)算機(jī)之間的交互,而語音識別技術(shù),目標(biāo)就是通過把人類的語音中的詞匯內(nèi)容轉(zhuǎn)換為相應(yīng)的文本,架起了人機(jī)交互的橋梁。對于一個(gè)語音識別系統(tǒng),速度和精度是兩個(gè)核心指標(biāo),直接決定著系統(tǒng)是否可用。其中,識別速度的提升意味著可以降低成本,同時(shí)提供更多的語音服務(wù),一直是語音識別技術(shù)研究的重點(diǎn)方向。在語音識別系統(tǒng)中,聲學(xué)模型得分的運(yùn)算量一般會(huì)達(dá)到整個(gè)系統(tǒng)的40%-70%,因此也是識別速度優(yōu)化的重點(diǎn)模塊。本文就來講講如何優(yōu)化聲學(xué)模型得分計(jì)算。
基本概念介紹 特征向量:語音數(shù)據(jù)在識別前首先會(huì)被分成多幀數(shù)據(jù),一般幀長為25毫秒,幀移為10毫秒。每一幀語音數(shù)據(jù)經(jīng)過特征提取之后,會(huì)生成一幀特征,稱之為一個(gè)特征向量或特征矢量 HMM state:語音識別中的建模單元,簡稱為state,使用混合高斯模型(GMM)模型描述,每個(gè)mixture服從正態(tài)分布 似然值:特征向量O在state上的聲學(xué)模型得分。其計(jì)算步驟分為兩步: a)計(jì)算O在每個(gè)mixture分量上的似然值,其計(jì)算公式為: 其中,j表示state的第j個(gè)mixture分量, 其中,m為state中mixture分量的個(gè)數(shù), 優(yōu)化方法 下面先介紹三種無損識別精度的優(yōu)化方法: 1、代碼加速:使用SSE指令或者intel IPP加速庫 這種方法利用編程語言指令集的優(yōu)化,通過減少CPU需要操作的指令數(shù)來達(dá)到加速。其中的intel IPP加速庫直接提供了一套計(jì)算似然值的函數(shù)庫,加速效果非常明顯,可以達(dá)到40%。 2、硬件加速:使用GPU加速 GPU一直以其強(qiáng)大的計(jì)算能力著稱,十分適合矩陣相乘這類計(jì)算密集型的運(yùn)算。為了能充分發(fā)揮GPU的加速效果,我們需要對似然值的計(jì)算公式略作改寫: 經(jīng)過轉(zhuǎn)換之后,每個(gè)mixture都可以用一個(gè)行向量表示,m個(gè)mixture可以組成一個(gè)大矩陣M = (A1,A2,…,Am)T,同理n幀的特征矢量也可以組成一個(gè)矩陣F = (Z1,Z2,…,Zn)。這樣同時(shí)求解多個(gè)mixture在多幀上的似然值就可以用兩個(gè)矩陣的乘積來實(shí)現(xiàn)。而每個(gè)state各mixture分量的logAdd過程相互獨(dú)立,因此這一步也可以在GPU上并行計(jì)算。一般情況下,GPU可以達(dá)到100倍以上的加速效果,也就意味著GPU可以將原來在語音識別中最耗時(shí)的聲學(xué)得分計(jì)算所占比重降到低于1%。由于這種方法需要一個(gè)額外的硬件設(shè)備GPU,價(jià)格比較昂貴,因而并沒有被大規(guī)模使用。 3、 CPU cache加速:一次計(jì)算state在多幀特征上的似然值 這種方法利用了語音識別的特點(diǎn),在識別過程中一旦某個(gè)state被激活之后,在后面的連續(xù)幾幀中這個(gè)state極有可能仍會(huì)處于活躍狀態(tài),即在處理后面的特征時(shí)還需要計(jì)算這個(gè)state的似然值。那么我們可以在第一次激活state時(shí),同時(shí)計(jì)算這個(gè)state在從當(dāng)前幀開始的連續(xù)多幀,也不會(huì)導(dǎo)致過多不必要的計(jì)算。另一方面卻可以利用CPU cache,不用多次從內(nèi)存中加載state的模型參數(shù)到CPU中,從而達(dá)到加速的目的。這種方法約有10%的加速效果,一般配合方法1使用。 上面介紹的三種方法,都是對聲學(xué)模型得分進(jìn)行了精確計(jì)算,因此不會(huì)帶來任何識別精度的下降。如果想做進(jìn)一步優(yōu)化,就需要對state的似然值計(jì)算公式做些調(diào)整。 1、動(dòng)態(tài)高斯選擇法 其思想是用似然值最大的mixture分量來近似logAdd: 那么如何來選出這個(gè)最大值呢?大家可能認(rèn)為這還不簡單?把每個(gè)mixture的似然值先計(jì)算出來,然后選個(gè)最大值就可以了。那接下來我們看看有沒有更好的方法?仔細(xì)分析mixture似然值的計(jì)算公式: 我們會(huì)發(fā)現(xiàn),這是一個(gè)隨i增加而遞減的函數(shù)。我們可以先計(jì)算出 2、高斯選擇法 動(dòng)態(tài)高斯選擇法可以認(rèn)為是在state的mixture分量里挑出一個(gè)最好的,而高斯選擇法認(rèn)為在state的各個(gè)mixture中,只有一到兩個(gè)占主導(dǎo)地位(dominant)的mixture,貢獻(xiàn)了整個(gè)state的似然值。 動(dòng)態(tài)高斯選擇法是把所有的mixture都計(jì)算完了之后才知道哪個(gè)最好,和動(dòng)態(tài)高斯選擇法不同,高斯選擇法是直接挑選dominant的mixture,并只計(jì)算這些mixture的似然值。其過程大致可以分為3個(gè)部分 a)將聲學(xué)空間,即聲學(xué)模型中所有state的所有mixture劃分成若干個(gè)區(qū)域,每個(gè)區(qū)域稱之為一個(gè)碼本(codeword) b)生成每個(gè)碼本的shortlist,即如何把每個(gè)state中的mixture分配到各個(gè)碼本中去。 c)在識別過程中,先將特征向量O映射到一個(gè)碼本中去,state中落在碼本shortlist的mixture就是dominant的mixture,對這些mixture進(jìn)行計(jì)算。 使用高斯選擇法后,聲學(xué)模型打分計(jì)算可以降到原來的20%左右,加速效果非常明顯。但是高斯選擇法對如何構(gòu)建碼本,以及碼本的shortlist有很高要求。不同的構(gòu)建方法效果會(huì)千差萬別,一個(gè)好的高斯選擇法帶來的識別率損失非常小,可以做到0.2個(gè)點(diǎn)以內(nèi)。 小結(jié) 本文介紹了五種從不同的角度優(yōu)化聲學(xué)模型打分的方法,各自優(yōu)缺點(diǎn)如下: 1、代碼加速法:簡單實(shí)用有效,在實(shí)際語音識別系統(tǒng)中可謂是標(biāo)配。 2、硬件加速法:快!而且快的離譜!能將聲學(xué)模型得分計(jì)算的負(fù)載降到接近0,缺點(diǎn)是成本高,一般只有對識別速度要求非�?量虝r(shí)才會(huì)使用。 3、CPU cache法:利用了語音識別自身的特點(diǎn),雖然和其他方法相比,加速效果顯得一般,但優(yōu)點(diǎn)是可以和其他方法結(jié)合使用。在實(shí)際使用中還需要謹(jǐn)慎選擇每次連續(xù)計(jì)算的幀數(shù),避免多余計(jì)算。 4、動(dòng)態(tài)高斯選擇法:加速效果中等,對識別率影響較大,一般使用的比較少。 5、高斯選擇法:加速效果僅次于GPU,同時(shí)對識別率影響小,可以與代碼加速法結(jié)合使用。缺點(diǎn)是這個(gè)方法技術(shù)難度較高,需要訓(xùn)練,依賴數(shù)據(jù)。如果不想花錢,又想達(dá)到GPU的效果,這個(gè)方法是不錯(cuò)的選擇。 本文出自:億恩科技【xuefeilisp.com】 服務(wù)器租用/服務(wù)器托管中國五強(qiáng)!虛擬主機(jī)域名注冊頂級提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM] |