Konsep Speech Recognition Bagian 3 (dynamic time warpingDTW) MK: Aplikasi Pengolahan Sinyal Digital Bersama: Tri Budi Santoso Laboratorium Sinyal, PENS-ITS Referensi: Rabiner & Schafer, “Introduction to Digital Speech Processing” Mark Hasegawa-Johnson, “Lecture Note in Speech Production, Speech Coding and Speech Recognition” 1 Dynamic time warping • Dynamic time warping merupakan sebuah algoritma untuk pengkuran kemiripan diantara dua deretan data yang memiliki kecepatan variasi data berbeda. • Sebagai contoh, orang mengucapkan kata “saya” dan “sayya”. • DTW juga diaplikasikan pada sinyal video, audio, dan graphics. • A well known application has been automatic speech recognition, to cope with different speaking speeds. 2 In general • In general, DTW adalah suatu metode yang memungkinkan suatru komputer untuk mendapatkan suatu kondisi optimal match antara dua sekuen yang diberikan (e.g. time series) dengan batasan tertentu. • Sekuen-sekuen ini dibengkokkan ("warped“) secara nonlinear di dalam dimensi waktu untuk menentukan suatu ukuran kemiripan diantara mereka secara independent pada variasi non linear tertentu di dalam dimensi waktu. • Metode sequence alignment ini seringkali digunakan di dalam kontek hidden Markov models. 3 Contoh cuplikan program… int DTWDistance(char s[1..n], char t[1..m], int d[1..n,1..m]){ declare int DTW[0..n,0..m] declare int i, j, cost for i := 1 to m DTW[0,i] := infinity for i := 1 to n DTW[i,0] := infinity DTW[0,0] := 0 for i := 1 to n for j := 1 to m cost:= d[s[i],t[j]] DTW[i,j] := cost + minimum(DTW[i-1,j ], // insertion DTW[i ,j-1],// deletion DTW[i-1,j-1]) // match return DTW[n,m] } 4 Contoh penjelasan dengan Matlab Dynamic Time Warping calculates the similarity between 2 vectors. If you pass in 2 vectors it returns the unnormalized distance between the vectors, the accumulated distance between them, the length of the warping path (the normalizing factor), and the warping path points. To compare 2 vectors A and B call: [Dist,D,k,w]=dtw(A,B) Dist is the unnormalized distance D is the accumulated distance k is the length of the warping path (the normalizing factor) w is a matrix containing the points along the warping pat 5 Dynamic Time Warping (DTW) Nama lain: • Sequence alignment • Pattern matching • String edit • …? 6 Dynamic Time Warping pada Sinyal Wicara untuk kasus “word based” • Pola ucapan yang keluar dari seorang sumber suara (secara alamiah, bebas) lebih komplek dibanding sebuah steady sound (misal penyiar berita). • Seringkali ucapan untuk kata yang sama, terucap dengan durasi berbeda, misal “s-a-t-u” terucap sebagai “s-s-a-t-u-u”. Jika hal ini terjadi, maka perangkat dengan template matching biasa tidak akan mampu merecognize sebagai kata “s-a-t-u”. 7 • Pertimbangkan dua vektor feature sinyal speech xi=(x1,x2,….xT), dan yi=(y1,y2,….,yT) • Perbedaan(misal Eucledian distance) antara x dan y dinyatakan sebagai: d x, y d ix , i y Tx i x 1 Jika keduanya berada dalam ukuran waktu yang sama, maka setiap kenaikan nilai pada x juga terjadi kenaikan pada y dalam skala waktu yang sama 8 iy Keduanya x dan y dalam skala sama iy ix Keduanya x dan y dalam skala berbeda ix 9 Contoh Kasus DTW pada sinyal Wicara “word” based DTW • Berikut ini sebuah proses DTW pada template matching yang disederhanakan pada 5 frame sinyal wicara. • Perhatikan dua gambar dibagian berikutnya, keduanya merupakan sinyal dalam domain waktu yang akan mengalami proses template matching • Walaupun keduanya sama mengucapkan a-d-a, tetapi cara pengucapan berbeda. Atas diucapkan sebagai “aada”, sedangkan yang bawah diucapkan sebagai “ada” • Jika hasil dari feature measurement masing-masing dimatching 10 Frame 1 Frame 2 Frame 3 Frame 4 Frame 5 11 Proses pencarian Jarak antar frame-frame, dengan membuat alat bantu berupa simbol seperti berikut g(i,j) d(i,j) Jarak kumulatif global Jarak lokal: jarak antara frame pattern input dengan frame pattern standar Jarak = jarak Euclidean dari fitur sinyal speech, misal formant 1 dan formant 2 Jarak lokal d(2,1) berarti jarak (beda nilai fitur) antara frame ke-2 sinyal input dengan frame ke-1 sinyal standar g (i, j 1) d (i, j ) g (i, j ) min g (i 1, j 1) 2d (i, g (i 1, j ) d (i, j ) g(i-1,j) g(i,j) d(i,j) g(i-1,j-1) j ) Jarak Kumulatif Global: g(i,j-1) 12 Simbol diatas mewakili nilai jarak antara frame input dengan frame standar. Penataan bisa sbb, sinyal input ke frame horisontal, sinyal standar dg frame vertikal Frame ke j 4 3 2 1 g(1,4) g(2,4) g(3,4) g(4,4) d(1,4) d(2,4) d(3,4) d(4,4) g(1,3) g(2,3) g(3,3) g(4,3) d(1,3) d(2,3) d(3,3) d(4,3) g(1,2) g(2,2) g(3,2) g(4,2) d(1,2) d(2,2) d(3,2) d(4,2) g(1,1) g(2,1) g(3,1) g(4,1) d(1,1) d(2,1) d(3,1) d(4,1) 3 4 1 2 Frame ke i 13 Inisialisasi Merupakan kondisi awal, dan didapatkan dari pengukuran jarak Euclidean antar frame-frame yang ditetapkan sebagai jarak lokal: g (1,1) d (1,1) i g (i, l ) d (m, l ) g(1,2) = d(1,1)+d(1,2) = 1+4 = 5 g(1,3) = d(1,1)+d(1,2) + d(1,3) = 1+4+3 = 8 g(1,4) = d(1,1)+d(1,2) + d(1,3) + d(1,3) = 1+4+3+2 = 10 m 1 j g (l , j ) d (l , m) m 1 g(2,1) = d(1,1)+d(2,1) = 1+3 = 4 g(3,1) = d(1,1)+d(2,1) + d(3,1) = 1+3+3 = 7 g(4,1) = d(1,1)+d(2,1) + d(3,1) + d(4,1) = 1+3+3+1 = 8 14 Dengan penyederhanaan perhitungan, diperoleh jarak-jarak lokal untuk inisialisasi, sehingga diagram DTW menjadi seperti gambar berikut… tujuan Frame ke j 4 3 2 8 g(2,4) g(3,4) g(4,4) 1 1 3 4 7 g(2,3) g(3,3) g(4,3) 3 1 3 5 4 g(2,2) g(3,2) g(4,2) 3 1 1 6 1 5 8 11 1 4 3 3 1 2 3 4 start 1 Frame ke i 15 Dengan mengacu pada nilai minimum untuk jarak kumulatif global….. g (i, j 1) d (i, j ) g (i, j ) min g (i 1, j 1) 2d (i, g (i 1, j ) d (i, j ) g (2,1) d (2,2) g (2,2) min g (1,1) 2d (2,2) g (1,2) d (2,2) 5 1 6 min 1 2 1 3 3 4 1 5 j ) Lintasan terpilih untuk menuju g(2,2) 16 Dengan cara yang sama…. 4 8 g(2,4) g(3,4) g(4,4) 1 1 3 4 7 g(2,3) g(3,3) g(4,3) 3 1 3 5 3 g(3,2) g(4,2) 1 1 6 3 4 2 4+1 3 1+2 1 1 Frame ke j 1 1 1+4 4+1 5 5+3 8 8+3 11 4 3 3 2 3 4 Frame ke 17 i Dengan cara yang sama…. 4 8 g(2,4) g(3,4) g(4,4) 1 1 3 4 7 4 g(3,3) g(4,3) 3 1 3 5 4 g(4,2) 1 6 3 4+2 3+6 3+1 4 2 4+1 1 3 1+2 1 1 Frame ke j 1 1 3+1 3 1+4 4+1 5 5+2 5+3 8 8+3 11 4 3 3 2 3 4 Frame ke 18 i Dengan cara yang sama…. 4 8 g(2,4) g(3,4) g(4,4) 1 1 3 4 7 g(4,3) 3 5 4+6 3 7 4 3 1 4+3 4+2 3+6 3+1 4 2 4+1 1+2 1 1 Frame ke j 1 1 3+1 3 1 3 1+4 4+10 4+3 4+6 1 4+1 5 4 g(4,2) 6 5+2 5+3 8 8+3 11 4 3 3 2 3 4 Frame ke 19 i Dengan cara yang sama…. 4 8 g(2,4) 10 1 1 3 4+6 3 7 4 3 1 2 4+1 1 1 Frame ke j 1 1 3+1 3 1+2 1+4 12 5 4 4+6 1 4+1 5 7+5 12+4 4+10 4+3 1 3 7 3+6 3+1 4 4 3 4+2 g(4,4) 7+8 7+3 4+3 10+4 g(4,2) 6 5+2 5+3 8 8+3 11 4 3 3 2 3 4 Frame ke 20 i Dengan cara yang sama…. 4 8 g(2,4) 10 1 1 3 4+6 7 4 3 1 14 4 7+8 7+3 7 4+3 10+4 7+5 12+4 12 3 3 4+2 3+6 4 2 4+1 1+2 1 1 Frame ke j 1 1 3+1 3 1 3 1+4 4+10 4+3 3+1 4 4+6 1 4+1 5 5 g(4,2) 6 5+2 5+3 8 8+3 11 4 3 3 2 3 4 Frame ke 21 i Dengan cara yang sama…. 4 8 g(2,4) 10 1 1 3 4+6 3 7 4 3 1 2 4+1 1 1 Frame ke j 1 1 3+1 3 1+2 1+4 12 5 4 4+6 1 4+1 5 7+5 12+4 4+10 4+3 1 3 7 3+6 3+1 4 4 3 4+2 14 7+8 7+3 4+3 10+4 g(4,2) 6 5+2 5+3 8 8+3 11 4 3 3 2 3 4 Frame ke 22 i Trace back untuk mengetahui fungsi DTW 14 didapat dari 14 - 10 - 7 - 4 - 3 - 1 (4,4) - (3,4) - (3,3) - (3,2) - (2,2) - (1,1) atau (4,4) - (3,4) - (3,3) - (2,3) - (2,2) - (1,1) Misal kita pilih yang pertama, dan diurutkan… (1,1) (2,2) (3,2) (3,3) (3,4) (4,4) 23