語音頻號的動態時間規整(DTW)

2021-08-22 16:36:23 字數 2628 閱讀 6820

動態時間規整dtw是乙個典型的優化問題,它用滿足一定條件的的時間規整函式w(n)描述測試模板和參考模板的時間對應關係,求解兩模板匹配時累計距離最小所對應的規整函式。

假設我們有兩個時間序列q和c,他們的長度分別是n和m:(實際語音匹配運用中,乙個序列為參考模板,乙個序列為測試模板,序列中的每個點的值為語音序列中每一幀的特徵值。例如語音序列q共有n幀,第i幀的特徵值(乙個數或者乙個向量)是qi。至於取什麼特徵,在這裡不影響dtw的討論。我們需要的是匹配這兩個語音序列的相似性,以達到識別我們的測試語音是哪個詞)

q= q1, q2,…,qi,…, qn ;

c= c1, c2,…, cj,…, cm ;

如果n=m,那麼就用不著折騰了,直接計算兩個序列的距離就好了。但如果n不等於m我們就需要對齊。最簡單的對齊方式就是線性縮放了。把短的序列線性放大到和長序列一樣的長度再比較,或者把長的線性縮短到和短序列一樣的長度再比較。但是這樣的計算沒有考慮到語音中各個段在不同情況下的持續時間會產生或長或短的變化,因此識別效果不可能最佳。因此更多的是採用動態規劃(dynamic programming)的方法。

為了對齊這兩個序列,我們需要構造乙個n x m的矩陣網格,矩陣元素(i, j)表示qi和cj兩個點的距離d(qi, cj)(也就是序列q的每乙個點和c的每乙個點之間的相似度,距離越小則相似度越高。這裡先不管順序),一般採用歐式距離,d(qi, cj)= (qi-cj)2(也可以理解為失真度)。每乙個矩陣元素(i, j)表示點qi和cj的對齊。dp演算法可以歸結為尋找一條通過此網格中若干格點的路徑,路徑通過的格點即為兩個序列進行計算的對齊的點。

那麼這條路徑我們怎麼找到呢?那條路徑才是最好的呢?也就是剛才那個問題,怎麼樣的warping才是最好的。

我們把這條路徑定義為warping path規整路徑,並用w來表示, w的第k個元素定義為wk=(i,j)k,定義了序列q和c的對映。這樣我們有:

首先,這條路徑不是隨意選擇的,需要滿足以下幾個約束:

1)邊界條件:w1=(1, 1)和wk=(m, n)。任何一種語音的發音快慢都有可能變化,但是其各部分的先後次序不可能改變,因此所選的路徑必定是從左下角出發,在右上角結束。

2)連續性:如果wk-1= (a』, b』),那麼對於路徑的下乙個點wk=(a, b)需要滿足 (a-a』) <=1和 (b-b』) <=1。也就是不可能跨過某個點去匹配,只能和自己相鄰的點對齊。這樣可以保證q和c中的每個座標都在w中出現。

3)單調性:如果wk-1= (a』, b』),那麼對於路徑的下乙個點wk=(a, b)需要滿足0<=(a-a』)和0<= (b-b』)。這限制w上面的點必須是隨著時間單調進行的。以保證圖b中的虛線不會相交。

結合連續性和單調性約束,每乙個格點的路徑就只有三個方向了。例如如果路徑已經通過了格點(i, j),那麼下乙個通過的格點只可能是下列三種情況之一:(i+1, j),(i, j+1)或者(i+1, j+1)。

滿足上面這些約束條件的路徑可以有指數個,然後我們感興趣的是使得下面的規整代價最小的路徑:

分母中的k主要是用來對不同的長度的規整路徑做補償。我們的目的是什麼?或者說dtw的思想是什麼?是把兩個時間序列進行延伸和縮短,來得到兩個時間序列性距離最短也就是最相似的那乙個warping,這個最短的距離也就是這兩個時間序列的最後的距離度量。在這裡,我們要做的就是選擇乙個路徑,使得最後得到的總的距離最小。

這裡我們定義乙個累加距離cumulative distances。從(0, 0)點開始匹配這兩個序列q和c,每到乙個點,之前所有的點計算的距離都會累加。到達終點(n, m)後,這個累積距離就是我們上面說的最後的總的距離,也就是序列q和c的相似度。

累積距離γ(i,j)可以按下面的方式表示,累積距離γ(i,j)為當前格點距離d(i,j),也就是點qi和cj的歐式距離(相似性)與可以到達該點的最小的鄰近元素的累積距離之和:

最佳路徑是使得沿路徑的積累距離達到最小值這條路徑。這條路徑可以通過動態規劃(dynamic programming)演算法得到。

具體搜尋或者求解過程的直觀例子解釋可以參考:

三、dtw在語音中的運用

假定乙個孤立字(詞)語音識別系統,利用模板匹配法進行識別。這時一般是把整個單詞作為識別單元。在訓練階段,使用者將詞彙表中的每乙個單詞說一遍,提取特徵後作為乙個模板,存入模板庫。在識別階段,對乙個新來的需要識別的詞,也同樣提取特徵,然後採用dtw演算法和模板庫中的每乙個模板進行匹配,計算距離。求出最短距離也就是最相似的那個就是識別出來的字了。

四、參考資料

[1] 

[2] 

[3]  (有matlab/c++ code)

[4] eamonn j. keogh, derivative dynamic time warping

[5]趙立《語音頻號處理》

n.net/zouxy09

語音頻號處理之(一)動態時間規整(DTW)

語音頻號處理之 一 動態時間規整 dtw zouxy09 qq.com 這學期有 語音頻號處理 這門課,快考試了,所以也要了解了解相關的知識點。呵呵,平時沒怎麼聽課,現在只能抱佛腳了。順便也總結總結,好讓自己的知識架構清晰點,也和大家分享下。下面總結的是第乙個知識點 dtw。因為花的時間不多,所以可...

動態時間規整(DTW)

dtw為 dynamic time warping,動態時間歸準 的簡稱。應用很廣,主要是在模板匹配中,比如說用在孤立詞語音識別,計算機視覺中的行為識別,資訊檢索等中。可能大家學過這些類似的課程都看到過這個演算法,公式也有幾個,但是很抽象,當時看懂了但不久就會忘記,因為沒有具體的例項來加深印象。這次...

動態時間規整DTW

在日常的生活中我們最經常使用的距離毫無疑問應該是歐式距離,但是對於一些特殊情況,歐氏距離存在著其很明顯的缺陷,比如說時間序列,舉個比較簡單的例子,序列a 1,1,1,10,2,3,序列b 1,1,1,2,10,3,如果用歐氏距離,也就是distance i j b j a i b j a i 來計算...