日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

DTW算法理解

發布時間:2023/12/9 编程问答 44 豆豆
生活随笔 收集整理的這篇文章主要介紹了 DTW算法理解 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
dtw路徑與線性變換路徑對比 在孤立詞語音識別中,最為簡單有效的方法是采用DTW(Dynamic Time Warping,動態時間歸整)算法,該算法基于動態規劃(DP)的思想,解決了發音長短不一的模板匹配問題,是語音識別中出現較早、較為經典的一種算法,用于孤立詞識別。 參考模板,可表示為R={R(1),R(2),……,R(m),……,R(M)},m為訓練語音幀的時序標號,m=1為起點語音幀,m=M為終點語音幀,因此M為該模板所包含的語音幀總數,R(m)為第m幀的語音特征矢量。 測試模板,可表示為T={T(1),T(2),……,T(n),……,T(N)},n為測試語音幀的時序標號,n=1為起點語音幀,n=N為終點語音幀,因此N為該模板所包含的語音幀總數,T(n)為第n幀的語音特征矢量。 假設測試和參考模板分別用T和R表示,為了比較它們之間的相似度,可以計算它們之間的距離 D[T,R],距離越小則相似度越高。 設n和m分別是T和R中任意選擇的幀號,d[T(n),R(m)]表示這兩幀特征矢量之間的距離。 若N=M則可以直接計算,否則要考慮將T(n)和R(m)對齊。 對齊可以采用線性均勻擴張的方法,但是這樣的計算沒有考慮到語音中各個段在不同情況下的持續時間會產生或長或短的變化,因此識別效果不可能最佳,更多的是采用動態規劃(DP)的方法。 DP算法可以歸結為尋找一條通過此網絡中若干格點的路徑路徑通過的格點即為測試和參考模板中進行計算的幀號。路徑不是隨意選擇的,首先任何一種語音的發音快慢都有可能變化,但是先后次序不可能改變,因此所選的路徑必定是從左下角出發,在右上角結束。 為了描述這條路徑,假設路徑通過的所有格點依次為(n1?,m1?),……,(ni?,mj?),……,(nN?,mM?),其中(n1,m1?)=(1,1),(nN?,mM?)=(N,M)。路徑可以用函數m = Oslash;(n )描述,其中n =i,i=1,2,……,N,Ø(1)=1,Ø(N)=M。為了使路徑不至于過傾斜,可以約束斜率在0.5~2的范圍內,如果路徑已經通過了格點(n ,m ),[1]那么下一個通過的格點(n ,m )只可能是下列三種情況之一: (n ,m )=(n +1,m +2) (n ,m )=(n +1,m +1) (n ,m )=(n +1,m ) 用r表示上述三個約束條件。求最佳路徑的問題可以歸結為滿足約束條件r時,求最佳路徑函數m =Ø(n ),使得沿路徑的積累距離達到最小值,即: 搜索該路徑的方法如下:搜索從(n ,m )點出發,可以展開若干條滿足?的路徑,假設可計算每條路徑達到(n ,m )點時的總的積累距離,具有最小累積距離者即為最佳路徑。易于證明,限定范圍的任一格點(n ,m )只可能有一條搜索路徑通過。對于(ni,mi),其可達到該格點的前一個格點只可能是(n ,m )、(n ,m -1)和(n ,m -2),那么(n ,m )一定選擇這3個距離之路徑延伸而通過(n ,m ),這時此路徑的積累距離為: D[(n ,m )]=d[T(n ),R(m )]+D[(n , m )] 其中的n = n -1 ,m -1由下式決定: D[(n ,m )]=min{D[(n , m )],D[(n , m -1)],D[(n , m -2)]} 這樣可以從(n ,m )=(1,1)出發搜索(n ,m ),再搜索(n ,m ),……,對每一個(n ,m )都存儲相應的前一格點(n ,m )及相應的幀匹配距離d[n ,m ]。搜索到(n ,m )時,只保留一條最佳路徑。如果有必要的話,通過逐點向前尋找就可以求得整條路徑。這套DP算法便是DTW算法。 DTW算法可以直接按上面描述來實現,即分配兩個N×M的矩陣,分別為積累距離矩陣D和幀匹配距離矩陣d,其中幀匹配距離矩陣d(i,j)的值為測試模板的第i幀與參考模板的第j幀間的距離。D(N,M)即為最佳匹配路徑所對應的匹配距離

?

怎樣找到距離最小?

要做到全局最小,這個全局要通過一條路徑累積得到。 整個累積是通過不同階段逐步累積才得到的。 所以不同階段時間t中,要保存所有的可能性事件的累積距離。 從當前的時間t,到下一個階段t+1,通過之前的累積狀態,計算出當前各種不同事件的累積距離。 逐步將這個累積距離往前推,得到最后時間te各個不同時間的累積距離,選出距離最小。 通過這個累積距離最小,如何反推出它的路徑(有點類似維特比解碼)。 在計算累積概率的同時,保存了當前時刻t的各個狀態下的前一個路徑。如此,可以反向遞推出整條路徑 這種逐步往前推進的做法,不用考慮各種全網絡的連通可能性,內存和效率都可以得到提升。

總結

以上是生活随笔為你收集整理的DTW算法理解的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。