語音識別學習筆記(二)【基於向量量化的識別技術】
語音識別學習筆記(二)【基於向量量化的識別技術】
- 概述
量化分為標量量化和向量量化(Vector Quantization,VQ)。標量量化是將取樣後的訊號值逐個進行量化,而適量量化是將若干個取樣訊號分成一組,即構成一個向量,然後對此向量一次進行量化。向量量化實際是一種極其重要的訊號壓縮的方法,廣泛應用於語音編碼,語音識別和合成,影象壓縮等領域。 - 知識預備
VQ相當於一種逼近,類似於傳統的四捨五入,如:
如上圖所示,小於-2都量化成-3;-2和0之間的量化成-1;以此類推,任意一個輸入都可以量化成-3,-1,1,3其中的一個,而這1dimension的四個數我們可以用2個bit表示,因此,量化速率為:2bit/dimension;
一個2dimension的VQ例項如下圖所示:
藍線為編碼區域,將空間劃分為16個區域,每個區域的紅星代表該區域的碼矢,共16個;任意一個數據對(x,y)會落在與其“距離”最小的碼矢所在的區域。這裡,2 dimension的16個碼矢,我們可以用4個bit來表示,因此,量化速率為2bit/dimension;另,碼矢的集合叫做碼書或碼本,編碼區域的集合叫做空間的劃分。
3. VQ描述
4. 優化準則
1)最近鄰原則
編碼區域Sn應該包含所有與cn最接近的向量(相比於與其他碼矢的距離)。對於在邊界(藍色線)上面的向量,需要採用一些決策方法(any tie-breaking procedure)。
2)質心原則
碼矢cn是編碼區域Sn內所有的訓練樣本向量的平均向量。在實現中,需要保證每個編碼區域至少要有一個訓練樣本向量,這樣上面這條式的分母才不為0。
5. K-means演算法
1)初始化:選擇合適的方法設定N個初始碼本中心的碼字ci,i ∈[1,N];
2)最近鄰分類:將向量源(訓練資料)按照最近鄰原則分配到“距離”最近的包腔內;
3)碼本更新:然後,根據質心原則重新計算每一個包腔內的碼字,生成新的碼本;
4)結束:重複步驟2和3,直到相鄰迭代誤差的閾值達到一定要求。
6. LBG演算法
K-means演算法是在碼書大小已知的情況下對樣本聚類的方法,若不知碼書大小,則需要用LBG演算法:
1)初始化: N=1, 計算初始碼本中心c1;
2)分裂: 將所有向量源(訓練資料)按照最近鄰原則劃分到N個包腔中,在對應的包腔中選擇距離最遠的兩個訓練資料向量作為新的聚類中心,這樣將N個包腔分裂成2N個包腔;
3)K-means:按照2N個包腔,執行K-means方法達到收斂得到2N個聚類中心;
4)結束:重複步驟2和3,直到達到要求的聚類中心個數或者誤差達到要求。
7. 參考
[1]
[2] LBG演算法模擬動畫:http://www.data-compression.com/vqanim.shtml
[3] LBG演算法c語言實現:http://www.data-compression.com/lbgvq.c