Chương 1: Tổng quan về nhận dạng tiếng nói1.1 Cách tạo thành tiếng nóiTiếng nói là là song âm la truyền trong môi trường nhất định mang thông tincon người muốn truyền đạt.Sơ đồ bộ máy phát âm của con người:Hình 1: Bộ máy tạo tiếng nóiVocal folds : Dây thanhMouth cavity : tuyến âm (miệng) tạo ra các tấn số formantNasal cavity: (mũi) như hộp cộng hưởng kết hợp với miệng tạo ra các tần sốantiformantKhông khí đi từ phổi đến thanh quản sau đó ra ngoài bằng mũi hoặc miệng trongquá trình di chuyển dưới sự tác động của bộ máy tạo tiếng của con người nên tạo racác sóng âmÂm thanh con người phát ra có hai loại Âm hữu thanh: âm phát ra khi khí đi qua thanh môn kết hợp với dâythanh căng tạo dao động. Âm vô thanh: khi dây thanh môn không giao động hoặc giao động nhỏMô hình tạo tiếng nói fant4 +) Với : G(z): bộ phận nguồn tạo tiếng nói (Pharynx, soft plate,Larynx..) V(z): tuyến âm (Miệng) R(z): Tán xạ môi trường truyềnMô hình toàn điểm cực AR: T(z)=G(z)V(z)R(z) = αA(z)A(z) = 1 + ∑
Trang 1MICA International Research Insitute
Báo cáo nhận dạng tiếng nói
Giảng viên hướng dẫn: Đỗ Thị Ngọc Diệp
Sinh viên thực hiện: Nguyễn Văn Thịnh
Mã số sinh viên: 20122512
Hà Nội 29/04/2016
Trang 2Contents
Chương 1: Tổng quan về nhận dạng tiếng nói 3
1.1 Cách tạo thành tiếng nói 3
1.2 Xử lý tiếng nói 4
1.3 Nhận dạng tiếng nói 4
1.3.1 Lịch sử của nhận dạng tiếng nói 4
1.3.2 Tình hình phát triển nhận dạng tiếng nói 4
1.3.3 Nhập dạng tiếng nó tự động ASR 5
Chương 2: Xử lý tín hiệu tiếng nói 6
2.1 Biểu diễn tín hiệu tiếng nói 6
2.2 Trích chọn đặc trưng MFCC 9
2.2.1 Tổng quan về MFCC 9
2.2.2 Pre-emphasis 9
2.2.3 Cửa sổ hóa 10
2.2.4 Biến đổi DFT 11
2.2.5 Mel filterbank log 11
2.2.6 Tính hệ số cepstral bởi IDFT (Dùng DCT), deltas, energy 13
Chương 3: Mô hình markov ẩn 13
3.1 Markov chain 13
3.2 Hidden Markov Model 14
3.3 Thuật toán Forward và Backward 15
3.4 Thuật toán Viterbi 18
3.5 Thuật toán Baum Welch 19
Chương 4: Áp dụng mô hình markov ẩn trong nhận dạng tiếng nói 20
4.1 Mô hình ngôn ngữ N-gram 20
4.2 Quá trình nhận dạng 21
4.3 Áp dụng mô hình markov ẩn 23
Chương 5: Ứng dụng nhận dạng số một người nói 24
5.1 Cài đặt pocketShinx 24
5.2 Xây dựng mô hình ngôn ngữ 25
5.2.1 Xây dựng bộ từ điển 25
5.2.2 Xây dựng mô hình ngôn ngữ 25
5.3 Xây dựng mô hình âm học 27
5.3.1 Chuẩn bị các folder và tập tin 27
5.3.2 Xây dựng mô hình âm học 30
5.4 Xây dựng ứng dụng demo tên Funny 34
5.4.1 Lập trình cho ứng dụng 34
5.4.2 Cài đặt và chạy ứng dụng 41
Danh mục hình ảnh 43
Tài liệu tham khảo 44
Trang 3Chương 1: Tổng quan về nhận dạng tiếng nói
1.1 Cách tạo thành tiếng nói
Tiếng nói là là song âm la truyền trong môi trường nhất định mang thông tin con người muốn truyền đạt
Sơ đồ bộ máy phát âm của con người:
Hình 1: Bộ máy tạo tiếng nói
Vocal folds : Dây thanh
Mouth cavity : tuyến âm (miệng) tạo ra các tấn số formant
Nasal cavity: (mũi) như hộp cộng hưởng kết hợp với miệng tạo ra các tần số
antiformant
Không khí đi từ phổi đến thanh quản sau đó ra ngoài bằng mũi hoặc miệng trong quá trình di chuyển dưới sự tác động của bộ máy tạo tiếng của con người nên tạo ra các sóng âm
Âm thanh con người phát ra có hai loại
- Âm hữu thanh: âm phát ra khi khí đi qua thanh môn kết hợp với dây thanh căng tạo dao động
- Âm vô thanh: khi dây thanh môn không giao động hoặc giao động nhỏ
Mô hình tạo tiếng nói fant
Trang 4+) Với : G(z): bộ phận nguồn tạo tiếng nói (Pharynx, soft plate,Larynx ) V(z): tuyến âm (Miệng)
R(z): Tán xạ môi trường truyền
Mô hình toàn điểm cực AR: T(z)=G(z)*V(z)*R(z) = α/A(z)
Các phần của xử lý tiếng nói:
+ Nhận dạng tiếng nói (speech recognition): mục đích phân tích và xử lý tiếng nói dưới dạng tín hiệu chuyển nội dung thành đầu vào máy tính một cách có ngữ nghĩa
+ Nhận dạng người nói (speaker recognition)
+Tăng chất lượng tiếng nói
+ Mã hóa tiếng nói: mã hóa dữ liệu tiếng nói (sau khi tiếng nói đã được lấy mẫu và lượng tử hóa) giúp truyền tiếng nói trong quá trình truyền tin ( để nén
dữ liệu, chống nhiễu, sửa sai…)
+ Tổng hợp tiếng nói: tạo ra tiếng nói một cách nhân tạo
+ Phân tích giọng nói
+ Định vị nguồn âm
1.3 Nhận dạng tiếng nói
1.3.1 Lịch sử của nhận dạng tiếng nói
Lịch sử của nhận dạng tiếng nói đã trải qua năm thế hệ:
Thế hệ 1: Bắt đầu từ năm 30-50 thế kỷ trước sử dụng phương thức ad hoc (trong
mạng máy tính????) nhận dạng âm, bộ từ với số lượng nhỏ
Thế hệ 2: năm 50-60 sử dụng phương thức acoustic-phonetic để nhận dạng âm vị
(phonemes) , âm tiết, từ vựng, số
Thế hệ 3: từ năm 60-80 sử dụng phương pháp nhận dạng mẫu để nhận dạng ,
lượng tử hóa các vecter (thương theo 8bit, 16bit) để giảm dung lượng nhận dạng các bộ từ vựng vừa và nhỏ
Thế hệ 4: từ những năm 80- 2000: sử dụng phương pháp thống kê với mô hình
markov ẩn (hidden markov model) mô phỏng tính chất thống kê của tín hiệu tiếng nói, và một số phương pháp khác …
Thế hệ 5: hiện nay đang phát triển sử dụng các giải pháp xử lý song song để tang
độ tin cậy, kết hợp các phương pháp acousticphonetic và HMM để phát hiện, sửa chữa ngoại lệ ngôn ngữ
1.3.2 Tình hình phát triển nhận dạng tiếng nói
Các phương thức được sử dụng phổ biến:
Hidden markov model:
Dynamic time warping
Trang 5Trong quân sự
Trong y tê: kiểm tra tổn thương thanh quản…
Trong công nghệ thông tin: trợ lý ảo …
Trong giáo dục: giúp xây dựng phần mềm học ngôn ngữ
1.3.3 Nhập dạng tiếng nó tự động ASR
Giao tiếp ngôn ngữ nói giữa người và máy:
Hình 2: Mô hình giao tiếp tiếng nói người và máy
Tiếng nói của con người được đưa vào máy thông qua quá trình nhận
dạng(recognition) và chuyển thành các đoạn văn bản, từ những đoạn văn bản máy học cách hiểu nghĩa và tạo thành tiếng nói từ văn bản đó thông qua quá trình tổng hợp tiếng nói (synthesis)
Kiến trúc của nhận dạng tiếng nói tự động automatic speech recognition
Hình 3: Kiến trúc ASR
ARS chuyển đổi từ tín hiệu tiếng nói thành từ hoặc câu có nghĩa
- Hệ thống nhận dạng tiếng nói liên tục chia tiếng nói liên tục thành các lớp nhận dạng với mục đích ghi chép
Trang 6 Lớp ghi chép có mục tiêu nhận dạng từ
Lớp hiểu có mục tiêu hiểu nghĩa các câu
- Quá trình hoạt động của ARS
Quá trình nhận dạng : các vector đặc trưng được đem ra so sánh với các mẫu tham khảo sau đó hệ thống tính toán độ tương đồng (dùng likelihood) của các vector đặc trưng với mẫu tham khảo.(thuật toán Viterbi) vector nào có độ tương đồng cao nhất chính là vector kết quả nhận dạng (vector này thường là đặc trưng của một phone)
Quá trình huấn luyện: xây dựng các vector đặc trưng sau đó sử dụng các vector đó là tham số đầu vào để thực hiện nhận dạng các vector đặc trưng được đưa vào hệ thống để ước lượng tham số của mẫu tham khảo, mẫu tham khảo mô phỏng một từ đơn âm hoặc 1 đơn vị tiếng nói (phonetic)
- Phương pháp để trích trọn đặc trưng phổ biến là mạch lọc mel kết hợp với biến đổi phổ mel sang miền cepstral (MFFC)
Chương 2: Xử lý tín hiệu tiếng nói
2.1 Biểu diễn tín hiệu tiếng nói
Tín hiệu tiếng nói trong miền thời gian liên tục rất khó để máy tính và các thiết
bị điện tử có thể sử dụng vậy nên ta phải rời rạc hóa nó bằng cách lấy mẫu và
lượng tử hóa nó lúc đó máy tính mới có thể xử lý được Nhưng để khảo sát trong miền thời gian việc kháo sát và xử lý là rất khó khan do đó phải sử dụng them khách miền khác Ta sẽ xem sé việc chuyển đổi sang hai miền là miền tần số và miến cepstral
Biến đổi sang miền tần số:
Discrete time fourier transform
Trang 7Với x[n] tín hiệu vào, y[n] tín hiệu ra, w[n] hàm cửa số, h[n] thường là đáp ứng xung của hệ thống ( nếu xét các biến trên trong một hệ thống cụ thể)
Biến đổi fourier trong khoảng thời gian hữu hạn:
Nếu ta có n cố định thì:
Hai biểu thức trên có ý nghĩa chỉ khi Xn(e^jw) là biến đổi fourier của tín hiệu liên tục bên ngoài cửa sổ w[n] hoặc = 0
Có các loại cửa số là: chữ nhật,hanning, hamming, tam giác…
Discrete of fourier transform
Do biến đổi discrete time fourier transform là biến đổi từ tín hiệu vô hạn nhưng trong thực tế tín hiệu là hữu hạn nên ta phải dùng đến phép biến đổi DFT
Tín hiệu vào x[n] rời rạc hữu hạn
Trang 8Với M>=N và những điểm lớn hơn N đều là không ta được tín hiệu trong miền tần số X[k]
Biến đổi sang miền cepstral
Mục đích nghiên cứu phép nhân chập ( giúp tìm formant ) tìm các đặc tính của tín hiệu tiếng nói tạo ra
Ta có x1*x2= X1.X2=X(z) trong miền Z
Lấy logarithm của X(z) ta được
Ký hiệu các X1,X2,x1,x2 tương tự X(z) mũ phía trên
Nếu X ˆ (z) là giá trị duy nhất hợp lệ của biến đổi z thì
ta có:
Chuyển trang biến đổi fourier z=e^-jw
Suy ra
Biến đổi fourier ngược ta được:
C[n] chính là biến đổi cepstrum
Với trường hợp biến đổi fourier là DFT ta thấy:
Ứng dụng vào trong tín hiệu tiếng nói
Mô hình tín hiệu tiếng nói:
Âm hữu thanh:
Âm vô thanh:
Trang 9Từ mô hình ta phân tích phép nhân chập bằng cách nhân cepstrum với một cửa sổ phù hợp:
Với e D∗ là đặc trưng của hệ thống chuyển đổi sang phép nhân chập
Hệ thống nhận dạng tiếng nói sử dụng cách biểu diễn tín hiệu như một tập các hệ số cepstral
2.2 Trích chọn đặc trưng MFCC
2.2.1 Tổng quan về MFCC
Hình 4: Tính 39 MFCC từ tín hiệu vào
Tín hiệu tiếng nói dạng sóng âm được xử lý chuyển thành tín hiệu điện tương
tự, tín hiệu này được chuyển sang dạng tín hiệu số qua hai bước lấy mẫu và lượng
tử hóa (quá trình lấy mẫu phải thỏa mãn tiêu chuẩn Nyquist) rồi sau đó được đưa vào hệ thống nhận dạng tiếng nói
Trong hệ thống nhận dạng tín hiệu tiếng nói sẽ được phân tích thông qua quá trình trích chọn đặc trưng để lấy ra các đặc trưng của tiếng nói đưa vào hệ thống nhận dạng Ở đây chúng ta sử dụng phương pháp trích chọn đặc trưng MFCC gồm có các công đoạn được biểu diễn trên hình
Đầu ra của MFCC là 39 đặc trưng, 12 hệ số ceptral (hệ số MFCC),12 deltas ceptral,
12 deltas deltas cepstral, 1 energy, 1 delta energy, 1 delta delta energy
2.2.2 Pre-emphasis
Do cấu trúc đặc biệt của môi trường thanh quản nên mức năng lượng (cường
độ sóng) ở tần số cao suy giảm hơn so với tần số thấp mà ở tần số cao thông tin về Formant có nhiều giá trị cho acoustic model làm tăng độ chính xác của nhận dạng phone do đó ta cần làm tăng energy của tín hiệu ở tần số cao, quá trình này được gọi là preemphasis
Pre-emphasis sử dụng một bộ lọc nhận tín hiệu ở đầu vào và đầu ra là tín hiệu mong muốn :
Đầu vào: x[n]
Đầu ra: y[n] = x[n] + αx[n-1] với 0,9≤α≤1
H(z) = 1 – αz^-1
Trang 102.2.3 Cửa sổ hóa
Tín hiệu tiếng nói là non-stationary signal do đó các thuộc tính thống kê
không phải là hằng số thay vào đó với giả thuyết tín hiệu là stationary trong một khoảng thời gian đủ ngắn ta có sẽ có được những đại lượng đặc trưng thống kê coi như không đổi Do đó ta có thể lấy được những đặc trưng riêng biệt của một
subphone trong một thời gian ngắn
Để trích được tín hiệu trong khoảng thời gian ngắn ta sử dụng một cửa sổ nhỏ và tín hiệu được tríc ra bởi cửa sổ này gọi là frame Trên toàn bộ đoạn tín hiệu chúng ta sẽ trích thành T frame Đặc trưc của quá trình trích rút này là bộ 3 tham số:
độ rộng frame, hình dạng cửa sổ, frameshift
Ta sẽ lấy T frame từ tín hiệu, mỗi frame này sẽ có độ ông trong khoảng 20-40
ms trung bình là 30ms, lấy liên tiếp các frame sao cho frameshift cách nhau chừng 10ms Ta lấy ra mỗi frame từ tín hiệu bằng cách nhân với các hàm cửa sổ
y[n]=w[n]s[n]
Thông thường sử dụng cửa sổ hamming
w[n] = {0,54 − 0,46 cos (2𝜋𝑛𝑁 ) ; 0 ≤ 𝑛 ≤ 𝑁 − 1
0Với N là số mẫu trong frame
Mỗi frame được đặc trưng bởi một bộ thông số và bộ thông số này chính là một quan sát đầu vào ot của HMM
Hình 5: quá trình nhân với hàm cửa sổ
Trang 112.2.4 Biến đổi DFT
Công thức tính DFT
X[k] = ∑𝑁−1𝑥[𝑛]𝑒−𝑗2𝜋𝑘𝑛/𝑁
𝑛=0X[k] mang thông tin về độ lớp độ lớn và pha của thành phần tần số Phương pháp hiệu quả để tính DFT là FFT
Quy đổi giữa miền tần số và miền DFT
Để có đáp ứng tần số miền rời rạc ta có 2 cách là rời rạc hóa miến tần số và tính DFT Nhưng hai cách này phải đảm bảo các điểm có giá trị bằng đáp ứng tần số tại điểm đó thìa trùng nhau giữa hai phương pháp.Minh họa
Hình 6: Biến đổi DFT
Như hình ta thầy mặc dù số điểm N khác nhau nhưng độ lớn khung trên dải tần số
là như nhau vậy nên sau khi biến đổi DFT N điểm thì với mọi N khoảng cách giữa 2 điểm gần nhau nhất là Fs/N
2.2.5 Mel filterbank log
Phương pháp áp dụng trên mỗi frame
Tai nghe của con người cảm nhận sự thay đổi của âm thanh không tuyến tính (kém
ở tần số cao đặc biệt trên 1000hz)
Do đó để quan sát ta không sử dụng tần số thông thường mà dùng thang đo mel với tần số
Fmel = 2595log(1+Fhz/700)
- ở các tần số <1000hz quan hệ giữa Fmel và Fhz là tuyến tính
- ở tần số >1000hz quan hệ giứa Fmel và Fhz là logarithm
Tai nghe con người thu nhận âm thanh như những bộ lọc và chỉ tập trung vào những tần số nhất định Dựa vào đặc điểm này hệ mạch lọc mel scale filter banks
Trang 12được sử dụng (which collect energy from each frequency band) để thu thập năng lượng trên mỗi frame Trong miền tần số các tần số trung tâm của bộ lọc phân bố không tuyến tính, các thành phần <1000hz tập trung nhiều bộ lọc hơn vì nó chứa nhiều thông tin hơn
Ta sử dụng bộ lọc filter bank là bộ lọc tam giác, ta thường dùng dãy các mạch lọc trong khoảng từ 20 40 mạch lọc
Phương pháp tìm các bộ lọc filter banks
Hình 7: Dải các bộ lọc mel
Ta thường chọn Fs/2 là uper frequency và 0 là lower frequency Trên dải tần từ
0->Fs/2 ta tính:
Fmel(0) = 2595log(1+0/700) Fmel(uper) = 2595log(1+Fs/2/700) Trong thang mel khoảng từ [Fmel(0);Fmel(uper)] ta lấy các điểm cách đều nhau
Ví dụ cầ 26 bộ lọc filter bank:
Thì trên thang mel ta lấy 26 điểm cách đều nằm trong khoảng trên và tính cả hai điểm đầu mút của khoảng thì sẽ là 28 điểm
Ta được bộ các tần số Fmel(i) = (Fmel(1),…,Fmel(28))
Tính ngược lại bằng công thức Fhz = 700exp(Fmel/1125-1)
Ta được bộ các điểm tần số Fhz(i) = (f(1),…,f(28))
Từ đây ta tìm được bộ các filterbank tam giác như sau:
“ filterbank đầu tiên bắt đầu từ điểm đầu tiên , đạt đỉnh tại điểm 2 và trở về zero tại điểm 3 Filterbank thứ 2 bắt đầu tại điểm thứ 2, đạt đỉnh tại điểm thứ 3 và về zero tại điểm 4… tương tự với các bộ lọc tiếp theo”
Sau khi tìm được các filterbank việc tiếp theo là tính năng lượng trên mỗi frame dựa vào các filterbank này
Lẫy mỗi filterbank của bộ các filterbank này đem đi lọc frame Tức là lấy DFT của frame * each filter bank (chú ý sau hi tính DFT kết qur được rời rạc N điểm ta phải đổi N điểm này ra các điểm trên miến tần số với N, N Fs)
Trang 13Lấy tổng các điểm còn lại sau khi lọc, đưa tổng đó vào giá trị 𝑚𝑖
Làm lần lượt với tất cả các bộ lọc ta được dãy giá trị M = (m1,m2,…mk) với k là số
bộ lọc filter banks (thường k-26)
Tiếp theo lấy log( |𝑚𝑖|2 )
2.2.6 Tính hệ số cepstral bởi IDFT (Dùng DCT), deltas, energy
Ta tính các hệ số cepstral dựa vào công thức sau:
𝐶(𝑖) = ∑ log (|𝑚𝑖|2)cos (𝑖(𝑗 −1
2)
𝜋𝐾𝐾
𝑗=1
Ta lấy 1≤i≤12 ta được 12 hệ số MFCC
Tính ΔC: để nâng cao chất lượng nhận dạng ta đưa them giá trị đạo hàm
∆𝐶(𝑡) = ∑ 𝑛(𝐶𝑡+𝑛− 𝐶𝑡−𝑛)
𝑁 𝑛=1
2 ∑𝑁 𝑛^2𝑛=1Thường chọn N=2, và
Chú ý:
Ct = Ct+1-Ct với t<0 Ct=Ct-Ct+1 với t>T-N với T=12
Ta lấy 1≤t≤12 ta lại được 12 hệ số nữa
(Có một công thức chuẩn hóa để tính hệ số đó là:
𝑡=𝑡1Với t1 là mẫu bắt đầu frame và t2 là mẫu kết thúc frame
- Markov chain là một dãy X1,X2,…,Xn các biến ngẫn nhiên
Gọi S: tập các giá trị có thể có của Xn thì S chính là không gian trạng thái của hệ
- Xét chuỗi các biến ngẫu nhiên nói trên: Xn+1 chỉ phụ thuộc Xn do đó
P(Xn+1=x|X0,X1,…,Xn) = P(Xn+1=x|Xn)
Dựa trên tính chất markov
Trang 14Ta biểu diễn markov chain biểu diễn bởi ma trận xác suất: P(Xn+1=x|Xn=y)
Tính chất của markov chain:
Mô tả markov chain dựa trên finite automata
Markov chain là một trường hợp đặc biệt của weighted finite state automata
Ta có:
Trong không gian trạng thái hữu hạn S = {Si, i= 1,2,…,N}
Xác suất chuyển trạng thái:
P(Xn+1=Sj|Xn=Si) = aij(n) với i,j=1,2…N
aij được gọi là xác suất chuyển trạn thái và aij độc lập với thời gian
Một markov chain được biểu diễn bởi một finite automata có các thành phần sau:
Q = q1,q2,…,qN :Tập của N trạng thái
A = a01,a02,…an1,…,anm : ma trận chuyển trạng thái với aij là xác suất chuyển từ trạng thái I sang trạn thái j có ∑𝑁𝑗=1𝑎𝑖𝑗 =1 ∀𝑖
q0,qf : trạng thái khởi đầu và kết thúc
Trong nhiều trường hợp sẽ sử dụng đến khái niệm phân bố xác xuất khởi tạo π = {πi} thay cho q0 Với πi là xác suất mà markov chain bắt đầu ở trạng thái Si Nếu πi
= 0 không thể bắt đầu ở Si và ∑𝑁 𝜋𝑖
𝑖=1 = 1
QA = {…Sx,Sy…} tập chấp nhận đc là con của Q
3.2 Hidden Markov Model
Biểu diễn HMM thông qua finite automata gồm các thành phần:
B ={ bj(k) } : phân bố xác xuất các quan sát được trong trạng thái Sj bj(k) =
P(vk=ot,qt=Sj) có bj(k) là xác xuất quan sát được sự kiện vk trong trại thái Sj
Π = {πi} :phân bố xác suất khởi tạo
QA = {qx,qy…} ; QA (con của Q) là tập chấp nhận được
Giả thiết markov P(qi|q1,…,qi-1) = P(qi|qi-1)
Và P(oi|q1 qi, ,qT,o1, ,oi, ,oT)= P(oi|qi)
Một mô hình HMM được đại diện bởi bộ tham số: Λ = (A,B,π)
Ví dụ:
Trang 15Hình 8: Ví dụ mô hình markov ba trạng thái
Ở mỗi trạn thái sự kiện có thể quan sát được thuộc V = (v1,v2,v3,v4)
B = (b11,b12,…,b34) phân bố xác xuất quan sát được sự kiện và bj(k) là xác xuất quan sát được sự kiện Vk trong trạng thái Sj
Các trạng thái Sj được coi là ẩn so với việc quan sát Đó là lý do tại sao ta gọi là mô hình markov ẩn
Ba vấn đề chính của hidden markov model:
HMM is characterized by three fundamental problems
- Problem 1 (Computing likelihood): cho mô hình λ(A,B,π) và chuỗi quan sát được O xác định độ tương đồng (likelihood) P(O|λ)
- Problem 2 (decoding): Cho một cuỗi quan sát O và mô hình HMM λ(A,B,π), tìm
ra chuỗi Q tối ưu nhất đã phát sinh ra O
- Problem 3 (learning): cho một chuỗi quan sát O và tập các trạng thái của HMM, điều chỉnh các tham số λ = {A, B, π} của HMM để P(O| λ) lớn nhất (Đây chính là bài toán huấn luyện mô hình Bài toán này đem lại khả năng rất quan trọng của HMM đó là mô hình hóa đối tượng cụ thể trong thực tế với dữ liệu liên tục)
Solution for three problems
Problem 1: the forward or backward algorithm
Problem 2: the Viterbi algorithm
Problem 3: the baum – welch algorithm
3.3 Thuật toán Forward và Backward
Ví dụ:
Hình 9: Ví dụ mô hình markov thời tiết
Ví dụ này chúng ta sẽ giải quyết sau khi xem xét chút lý thuyết
Cho một chuỗi quan sát được O = {o1,o2,…,oN) và tham số mô hình HMM λ = {A,B, π}
Trang 16Ta có:
P(O| λ) = ∑𝑎𝑙𝑙 𝑄𝑃(𝑂, 𝑄| λ ) là tổng xác suất của các chuỗi Q có thể sinh ra O trong
mô hình λ
Suy ra: P(O,Q| λ) = P(O|Q, λ)*P(Q| λ)
Trong đó: P(O|Q, λ) = Bq1(O1)*bq2(O2)*…*bqT(OT) : là xác suất quan sát được chuỗi O sinh ra từ một chuỗi Q=(q1,q2,…,qT)
Và: P(Q| λ) = 𝜋𝑞1𝑎𝑞1𝑞2𝑎𝑞2𝑞3… 𝑎𝑞𝑇−1𝑞𝑇 là xác suất sinh ra một chuỗi Q=q1,…,qT
từ mô hình λ
Vậy nên: P(O|λ) = q1,q2, ,qT πq1 bq1 (o1)aq1q2 bq2 (o2) aqT−1qT bqT (oT )
Số phép toán phải thực hiện 2T*N^T rất lớn
Xem Ví dụ trên đầu: O = { 3 1 3}
Với một chuỗi Q cụ thể P(3 1 3, hot cold hot) =
P(hot|start)*P(hot|hot)*P(cold|hot)*P(3|hot)*P(1|hot)*P(3|cold)
Với tất cả các chuỗi sinh ra O: P(3 1 3) = P( 3 1 3|cold cold cold)+P(3 1 3|cold
cold hot) +…
VỚI CÁCH RẤT DÀI NÀY KHÔNG KHẢ THI VẬY TA SẼ XEM XÉT HAI GIẢI
THUẬT SAU GIÚP SỐ LƯỢNG PHÉP TÍNH ÍT HƠN
GIẢI THUẬT FORWARD:
Đặt 𝛼𝑡(𝑗) là xác suất ở trạng thái Sj sau khi quan sát được t quan sát O=o1…ot
αt(j) =P(o1…ot,qt=Sj|λ)
Ví dụ:
Hình 10: Quá trình thực hiện giải thuật Forward
Trang 17𝛼𝑡−1(𝑖) is previous forward path probability
aij là xác xuất chuyển trạn thái từ Si sang Sj
bj(ot) là xác suất quan sát được ot tại trạng thái Sj
GIẢI THUẬT BACKWARD
Gọi βt(i) là xác suất mà tại trạng thái Si thời điểm t quan sát được chuỗi trạng thái O(ot+1,…,oT)
Ta có: βt(i) = P(ot+1ot+2 oT |qt = si, λ)
Thủ tục Backward:
Khởi tạo: βT (i)=1, 1 ≤ i ≤ N
Quy nạp: βt (i) = ∑𝑁 β𝑡+1(j) aij]bj (𝑜𝑡+1)
𝑗=1 với t=T-1,T-2,…,1 và 1<=i<=N Minh họa:
Hình 11: Quá trình thực hiện giải thuật Backward
Trang 183.4 Thuật toán Viterbi
Yêu cầu: Tìm ra chuỗi trạng thái tối ưu nhất Q={q1,…,qT} đã phát sinh ra
O
Việc tìm ra Q này được gọi là quá trình decoding
Để tìm ra Q tối ưu nhất ta cần có một tiêu chí nào đó và sau đây sẽ xem xét hai tiêu chí để xem ta nên chọn tiêu chí nào trong hai tiêu chí này:
- Tiêu chí 1: tại thời điểm t chọn ra qt có độ khả thi cao nhất thông qua xác suất: P(qt=Si|O,λ)
Đặt (𝑖) = P(𝑞𝑡 = 𝑆𝑖 |𝑂, 𝜆) => ∑𝑁 γt(i) = 1
𝑖=1 với mọi t Suy ra: (𝑖) = 𝛼(𝑖)𝛽(𝑖)𝑃(𝑂|𝜆) trạng thái tối ưu nhất tại thời điểm t là
Tức là qt =i với 1<=i<=N sao cho (𝑖) đạt cực đại Từ đó tìm ra qt và Q
Tuy nhiên: đôi khi Q không tồn tại vì có thể có xác xuất chuyển trạn thái bằng 0
do đó ta sẽ xem sét tiêu chí tiếp theo (Được sử dụng chủ yếu)
- Tiêu chí 2: tìm ra chuỗi Q sao cho P(Q,O|λ) đạt cực đại
Giải pháp là thuật toán viterbi sau đây
Thuật toán Viterbi
Xem ví dụ:
Hình 12: Quá trình hoạt động thuật toán Viterbi
Ví dụ trên ta thấy cách tính của biến vt(j) biến này sẽ được ký hiệu lại là 𝜎t(j)
Biến 𝜎t(j) là xác suất cao nhất của chuỗi trạng thái trên đường dẫn đến trạng thái Sj
ở thời điểm t và đã quan sát được o1,…,ot với mô hình λ cho trước
Ta có:
Trang 19𝛿𝑡(𝑖) = max
𝑞1,𝑞2,…,𝑞𝑡𝑃(𝑞1, 𝑞2, … , 𝑞𝑡 = 𝑆𝑖, 𝑂1𝑂2… 𝑂𝑡|𝜆) Hay :
𝛿𝑡(𝑖) = max
1≤𝑖≤𝑁 𝛿𝑡−1(𝑖) ∗ 𝑎𝑖𝑗 ∗ 𝑏𝑗(𝑜𝑡)
Để lưu lại chuỗi trạng thái ta dữ lại vết của đường dẫn tốt nhất tại thời điểm t trạng thái Si thông qua mảng 𝜓𝑡(𝑖) là mảng 2 chiều T quan sát và chiều còn lại là N trạng thái Mảng 𝜓𝑡(𝑗) chưa các biến 1<=i<=N là vết cần lưu
Thủ Tục viterbi
Khởi tạo:
𝛿𝑡(𝑖) = 𝜋𝑖𝑏𝑖(𝑂1), 1 ≤ 𝑖 ≤ 𝑁
𝜓1(𝑖) = 0 Lặp:
𝛿𝑡(𝑗) = max
1≤𝑖≤𝑁[𝛿𝑡−1(𝑖)𝑎𝑖𝑗]𝑏𝑗(𝑂𝑡), 2 ≤ 𝑡 ≤ 𝑇, 1 ≤ 𝑗 ≤ 𝑁
𝜓𝑡(𝑗) = 𝑎𝑟𝑔 max
1≤𝑖≤𝑁[𝛿𝑡−1(𝑖)𝑎𝑖𝑗], 2 ≤ 𝑡 ≤ 𝑇, 1 ≤ 𝑗 ≤ 𝑁 Tức là với 𝜓𝑡(𝑗) = i với 1<=i<=N sao cho 𝛿𝑡−1(𝑖)𝑎𝑖𝑗 max
Kết thúc:
𝑝∗ = max1≤𝑖≤𝑁[𝛿𝑇(𝑖)]
𝑞𝑡∗ = 𝑎𝑟𝑔 max
1≤𝑖≤𝑁[𝛿𝑇(𝑖)]
Tức là 𝑞𝑡∗=i sao cho 𝛿𝑇(𝑖) max
Tìm chuỗi Q bằng cách quay lui:
𝑞𝑡∗= 𝜓𝑡+1(𝑞𝑡+1∗ ), 𝑡 = 𝑇 − 1, 𝑇 − 2, … , 1 Với 𝜓…(… ) là mảng 2 chiều T quan sát N trạng thái và 𝜓𝑡+1(𝑞𝑡+1∗ ) là giá trị một ô trong mảng
Sau khi quay lui ta được chuỗi 𝑄 = 𝑞1∗𝑞2∗… 𝑞𝑇∗ là chuỗi cần tìm
3.5 Thuật toán Baum Welch
Bài toán cho một chuỗi quan sát O tìm hoặc cật nhật lại tham số của mô hình λ(A,B,π) sao cho P (O|λ) cực đại ta được bộ tham số mới 𝜆̅ = (𝐴̅, 𝐵̅, 𝜋̅)
Ta có: P (O|𝝀̅) > P (O|λ) trong mọi trường hợp trừ khi λ đã đạt đến tối ưu cục
bộ
Để giải quyết bài toán trên ta dùng thuật toán Baum Welch
Tính toán:
Ta có 𝑎̅𝑖𝑗 = kỳ vọng việc chuyển trạng thái từ Si sang Sjkỳ vọng việc chuyển trạng thái từ Si
Để tính được tử số ta định nghĩa biến: 𝜉𝑡(𝑖, 𝑗) là xác suất mà hệ ở trạng thái Si thời điểm t và ở thời điểm t+1 hệ phải ở trạng thái Sj
𝜉𝑡(𝑖, 𝑗) = 𝑃(𝑞𝑡 = 𝑆𝑖, 𝑞𝑡+1= 𝑆𝑗|𝑂, 𝜆)
Để tính được 𝜉𝑡(𝑖, 𝑗) ta xem xét một biến khác đó là
Not-quite𝜉𝑡(𝑖, 𝑗) = 𝑃(𝑞𝑡 = 𝑆𝑖, 𝑞𝑡+1= 𝑆𝑗, 𝑂|𝜆) Biến này khác 𝜉𝑡(𝑖, 𝑗) ở đ𝑖ề𝑢 𝑘𝑖ệ𝑛 𝑂
Ta có: Not-quite𝜉𝑡(𝑖, 𝑗) = αt(i)ai jb j(ot+1)βt+1( j)
Mà P(X|Y, Z) =𝑃(𝑋,𝑌|𝑍)𝑃(𝑌|𝑍)
Suy ra: 𝜉𝑡(𝑖, 𝑗) = Not−quite𝜉𝑡 (𝑖,𝑗)
𝑃(𝑂|𝜆) Và 𝑃(𝑂|𝜆) = α𝑇(𝑁) = β𝑇(1) = ∑𝑁𝑗=1𝛼(𝑗)
Trang 20𝜉𝑡(𝑖, 𝑗) = 𝛼𝑡(𝑖)𝑎𝑖𝑗𝑏𝑗(𝑂𝑡+1)𝛽𝑡+1(𝑗)
𝛼𝑡(𝑖)𝑎𝑖𝑗𝑏𝑗(𝑂𝑡+1)𝛽𝑡+1(𝑗)
∑𝑁 αT(k)𝑘=1
𝑏̅𝑗(𝑘) =Kỳ vọng số lần trong trạng thái Sj quan sát được vk
Kỳ vọng số lần trong trạng thái SjSuy ra:
𝑏̅𝑗(𝑘) =
∑𝑇𝑡=1 𝛾𝑡(𝑗)
.𝑂𝑡= 𝑣𝑘
∑𝑇𝑡=1 𝛾𝑡(𝑗)
(Chú ý ở tử số thì tính với tất cả t sao cho tại thời điểm t quan sát được vk)
Từ các công thức trên ta đã đính được bộ tham số mới của mô hình 𝜆̅
Chương 4: Áp dụng mô hình markov ẩn trong nhận dạng tiếng nói
4.1 Mô hình ngôn ngữ N-gram
Mô hình N-gram là một mô hình xác xuất
Cách cơ bản để tính xác xuất là đếm Ta xem xét trong một ngôn ngữ tự nhiên cơ bản được biểu thị bằng corpus
Xác xuất 1 từ trong corpus được tính bằng cách đếm số từ đó/ tống số từ trong corpus
Ta xem xét một lý thuyết tính xác xuất cơ bản
Trang 21Mục đích là tính xác xuất của một từ w dựa trên các từ đã xuất hiện trước đó h ví dụ
h=”water is so transparent that” tính xác xuất từ tiếp theo là “the” :
P(the/h) = C(is water so transparent that the)/ C(is water so transparent that)
Mô hình bigram tính xác xuất của từ dựa trên từ phía trước nó:
Suy ra với mô hình N gram ta tính xác xuất dựa trên N từ phía trước nó:
Hay
Công thức tính của N gram
Từ mô hình N-gram ta có thể tính được xác xuất xuất hiện từ n theo N từ xuất hiện trước đó, do đó ta có thể dùng mô hình N-gram để tìm ra một chuỗi từ các tự vựng nhận dạng được
4.2 Quá trình nhận dạng
Với mỗi acoustic đầu vào O ta có thể biểu diễn chúng như một chuỗi các quan sát tại các thời điểm khác nhau (mỗi 10 giây và được biểu diễn bởi các giá trị của energy, frequency…) Mỗi chỉ số của chuỗi biểu diễn một thời điểm
Đầu vào
O=o1,o2,…,ot Đầu ra
Trang 22W=w1,w2,…,wn
W là chuỗi string của các từ
Để tìm được W ta sử dụng công thức sau:
Áp dung công thức bayes suy ra:
Chúng ta có thể bỏ qua P(O)
Suy ra
Trong đó: P(W) là the prior probability được tính bởi language model
Và P(O|W) là the opservation likelihood được tính bởi acoustic model
The Language model sử dụng mô hình N-gram để tính P(w) (dưới là công thức
1-gram ta xem chi tiết ở phần trên): P(W) = P(𝑤1𝑛)
The Acoustic model được dùng để tính P(O|W)
Đôi chút về chuỗi O: là một chuỗi quan sát được lấy ra từ quá trình lấy acoustic waveform mỗi thời điểm lấy mẫu cách nhau 10,15, 20…ms cho ta một quan sát (mỗi quan sát là một vector đặc tính)
Minh họa Architecture for speech reconition:
Hình 13: Kiến trúc mô hình nhận dạng
Quá trình nhận dạng tiếng nói được chia thành ba giai tầng chính