Tải bản đầy đủ (.pdf) (67 trang)

nhận dạng tiếng nói việt nam từ vựng lớn

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (4 MB, 67 trang )

Nhận dạng tiếng nói Việt Nam từ vựng lớn Trang - i



LỜI MỞ ĐẦU

1. Giới thiệu.
Ngày nay, cùng với sự phát triển của ngành điện tử và tin học, các hệ thống
máy tự động đã dần thay thế con người trong nhiều công đoạn của công việc. Máy
có khả năng làm việc hiệu quả và năng suất cao hơn con người rất nhiều. Song cho
đến nay, vấn đề giao tiếp người – máy tuy đã được cải thiện nhiều nhưng vẫn còn
rất thủ công: thông qua bàn phím và các thiết bị nhập dữ liệu khác. Giao tiếp với
thiết bị máy bằng tiếng nói sẽ là phương thức giao tiếp văn minh và tự nhiên nhất,
dấu ấn giao tiếp người – máy sẽ mất đi mà thay vào đó là cảm nhận của sự giao
tiếp giữa người với người, nếu hoàn thiện thì đây sẽ là một phương thức giao tiếp
tiện lợi và hiệu quả nhất.
Do có sự khác biệt về mặt ngữ âm giữa các ngôn ngữ nên ta không thể áp
dụng các chương trình nhận dạng khác để nhận dạng tiếng Việt. Một hệ thống
nhận dạng tiếng nói ở nước ta phải được xây dựng trên nền tảng của tiếng nói tiếng
Việt.
Vấn đề nhận dạng tiếng nói tiếng Việt chỉ mới được quan tâm nghiên cứu
trong những năm gần đây và chưa có một chương trình nhận dạng hoàn chỉnh nào
được công bố.
Trên thế giới đã có rất nhiều hệ thống nhận dạng tiếng nói (tiếng Anh) đã và
đang được ứng dụng rất hiệu quả như: Via Voice của IBM, Spoken Toolkit của
CSLU (Central of Spoken Laguage Under-standing)… nhưng trong tiếng Việt thì
còn rất nhiều hạn chế.
2. Mục tiêu của đề tài.
Đề tài này nghiên cứu thử nghiệm một hướng nhận dạng tiếng nói - tiếng
Việt Nam dựa trên việc trích đặc trưng của tiếng nói bằng phương pháp MFCC
(Mel-Frequency Ceptrums Coefficients), và nhận dạng bằng mô hình HMM


(Hidden Markov Models). Đồng thời, một mô hình điều khiển bằng tiếng nói –
tiếng Việt được xây dựng với bộ từ vựng nhỏ, thiết lập hệ thống điều khiển bằng
tiếng nói với một tập lệnh cố định. Tập lệnh này dùng để điều khiển chương
trình, cụ thể là chương trình demo đọc số được thực hiện trong đề tài.


Nhận dạng tiếng nói Việt Nam từ vựng lớn Trang - ii




MỤC LỤC
LỜI MỞ ĐẦU i
1. Giới thiệu. i
2. Mục tiêu của đề tài. i
LỜI CẢM ƠN Error! Bookmark not defined.
NHẬN XÉT Error! Bookmark not defined.
MỤC LỤC ii
DANH MỤC CÁC HÌNH iv
DANH SÁCH CHỮ VIẾT TẮT v
CHƯƠNG 1: TỔNG QUAN VỀ NHẬN DẠNG TIẾNG NÓI 1
1.1 Giới thiệu 1
1.2 Công thức cơ bản 3
1.3 Các thành phần của một bộ nhận dạng tiếng nói 4
1.3.1 Xử lý cú âm 4
1.3.2 Mô hình cú âm 5
13.3 Mô hình ngôn ngữ 5
1.3.4 Tìm kiếm giả định 6
1.4. Mô hình Markov ẩn 6
1.4.1 Giới thiệu chuỗi Markov 6

1.4.2 Cơ bản về mô hình Markov ẩn 8
1.4.3 Tìm chuỗi chuyển trạng thái tốt nhất - Thuật toán Viterbi 13
1.4.4 Ước lượng các tham số xác suất cho HMM – Thuật toán Baum-
Welch 16
1.5. Biến đổi Fourier rời rạc 19
1.5.1 Giới thiệu 19
1.5.2 Cơ bản về biến đổi Fourier rời rạc 20
1.5.3 Cửa sổ Hamming 23
1.5.4 Biến đổi Fourier nhanh và thuật toán Butterfly: 24
1.5.5 Cài đặt thuật toán biến đổi Fourier nhanh 28
CHƯƠNG 2 :HUẤN LUYỆN TIẾNG VIỆT NAM 30
2.1 Bộ từ điển Lexicom 30
2.2 Dữ liệu 31
Nhận dạng tiếng nói Việt Nam từ vựng lớn Trang - iii



2.2.1 Dữ liệu văn bản 31
2.2.2 Dữ liệu âm thanh 32
2.2.3 Tiếng ồn và nhiễu trong dữ liệu âm thanh 34
2.3 Huấn luyện tiếng Việt 34
2.3.1 Chuẩn bị dữ liệu 34
2.3.2 Các bước trong quá trình học tiếng Việt 38
CHƯƠNG 3: DEMO ĐỌC SỐ 50
3.1.Chương trình demo đọc số liên tục 50
3.2.Zip City 50
CHƯƠNG 4: TẠO MODEL DÙNG CHO SPHINX-4 53
4.1 Tạo model dùng cho sphinx-4. 53
4.2 Audio Tool 57
CHƯƠNG 5: KẾT QUẢ ĐẠT ĐƯỢC 62


Nhận dạng tiếng nói Việt Nam từ vựng lớn Trang - iv




DANH MỤC CÁC HÌNH
Hình 1.1: Sơ đồ tổng quát hệ thống nhận dạng tiếng nói 2
Hình 1.2: Tổng quan về các thành phần chính trong nhận dạng tiếng nói 2
Hình 1.3: Các thành phần cơ bản của một hệ thống nhận dạng tiếng nói 4
Hình 1.4: Mô hình HMM trái phải với 6 trạng thái 8
Hình 2.3 Câu "tôi đi" khi đọc quá nhanh 33
Hình 2.4 Chữ “tôi” khi đọc ngân dài 33
Hình 2.5 Câu “ba bốn bảy” thu âm bị ồn và nhiễu 34
Hình 3.1: Màn hình ban đầu của demo đọc số 50
Hình 3.2:Màn hình sau khi nhận dạng một câu đọc số 50
Hình 3.3: Màn hình ZipCity khi nhận dạng 52
Hình 4.1 Màn nhìn cấu hình ghi âm 58
Hình 4.2 Màn hình ghi âm 59
Hình 4.3 Màn hình của player khi mới khởi động 60
Hình 4.4 Màn hình kiểm tra dữ liệu 61

Nhận dạng tiếng nói Việt Nam từ vựng lớn Trang - v




DANH SÁCH CHỮ VIẾT TẮT
HMM Hidden Markov Model.
FFT Fast Fourier Transform.


Nhận dạng tiếng nói Việt Nam từ vựng lớn Trang - 1



CHƯƠNG 1: TỔNG QUAN VỀ NHẬN DẠNG TIẾNG NÓI
1.1 Giới thiệu
Nhận dạng tiếng nói là một quá trình nhận dạng mẫu, với mục đích là phân
lớp. thông tin đầu vào là tín hiệu tiếng nói thành một dãy các tuần tự các mẫu đã
được huấn luyện trước đó và đã được lưu vào trong bộ nhớ.Các mẫu là các đơn vị
nhận dạng chúng có thể là các từ hoặc các âm vị. Nếu các mẩu này là bất biến và
không thay đổi thì công việc nhận dạng thật đơn giản bằng cách so sánh dữ liệu
tiếng nói cần nhận dạng với các mẩu đã được huấn luyện và được lưu trong bộ
nhớ.Khó khăn cơ bản của nhận dạng tiếng nói là tiếng nói luôn biến đổi theo thời
gian và có sự khác biệt lớn giữa tiếng nói của những người nói khác nhau, về tốc
độ nói, ngữ cảnh và môi trường âm học khác nhau.Xác định những thông tin biến
thiên nào của tiếng nói là có ích và những thông tin nào là không có ích đối với
nhận dạng tiếng nói là rất quan trọng. Đây là một nhiệm vụ rất khó khăn mà ngay
cả với các kỹ thuật xác suất thống kê mạnh cũng khó khăn trong việc tổng quát hoá
từ các mẫu tiếng nói những biến thiên quan trọng cần thiết trong nhận dạng tiếng
nói.
Các nghiên cứu về nhận dạng tiếng nói dựa trên ba nguyên tắc cơ bản:
 Tín hiệu tiếng nói được biểu diễn chính xác bởi các giá trị phổ trong một
khung thời gian ngắn (short-term amplitude spectrum). Nhờ vậy ta có thể
trích ra các đặc điểm tiếng nói từ những khoảng thời gian ngắn và dùng các
đặc điểm này làm dữ liệu để nhận dạng tiếng nói.
 Nội dung của tiếng nói được biểu diễn dưới dạng chữ viết, là một dãy các
ký hiệu ngữ âm. Do đó ý nghĩa của một phát âm được bảo toàn khi chúng ta
phiên âm phát âm thành dãy các ký hiệu ngữ âm.
 Nhận dạng tiếng nói là một quá trình nhận thức. Thông tin về ngữ nghĩa

(semantics) và suy đoán (pragmatics) có giá trị trong quá trình nhận dạng
tiếng nói, nhất là khi thông tin về âm học là không rõ ràng.
Một hệ thống nhận dạng nói chung thường bao gồm hai phần: phần huấn
luyện (training phase) và phần nhận dạng (recognition phase). “Huấn luyện” là quá
trình hệ thống “học” những mẫu chuẩn được cung cấp bởi những tiếng khác nhau
(từ hoặc âm), để từ đó hình thành bộ từ vựng của hệ thống. “Nhận dạng” là quá
trình quyết định xem từ nào được đọc căn cứ vào bộ từ vựng đã được huấn luyện.
Sơ đồ tổng quát của hệ thống nhận dạng tiếng nói được thể hiện trên hình 1.1 .
Nhận dạng tiếng nói Việt Nam từ vựng lớn Trang - 2




Hình 1.1: Sơ đồ tổng quát hệ thống nhận dạng tiếng nói
Để thuận tiện cho việc kiểm tra và đánh giá kết quả, từ sơ đồ trên chúng ta
chia chương trình nhận dạng thành ba mô-đun riêng biệt:
 Mô-đun 1: Thực hiện việc ghi âm tín hiệu tiếng nói, tách tiếng nói khỏi nền
nhiễu và lưu vào cơ sở dữ liệu.
 Mô-đun 2: Trích đặc trưng tín hiệu tiếng nói đã thu ở mô-đun 1 bằng
phương pháp MFCC, đồng thời thực hiện ước lượng vector các vector đặc
trưng này.
 Mô-đun 3: Xây dựng mô hình Markov ẩn với 6 trạng thái, tối ưu hóa các hệ
số của HMM tương ứng với từng từ trong bộ từ vựng, tiến hành nhận dạng
một từ được đọc vào micro.

Hình 1.2: Tổng quan về các thành phần chính trong nhận dạng tiếng nói
Nhận dạng tiếng nói Việt Nam từ vựng lớn Trang - 3




1.2 Công thức cơ bản
Trong phần này sẽ giới thiệu một số ký hiệu sử dụng và một số công thức cơ bản.
Gọi A là tập hợp các cú âm để bộ nhận dạng dùng để xác định từ nào đã được nói.
A là một chuỗi các kí tự trong bảng alphabet A:
A = a
1
, a
2
, …, a
m
a
i
 A (1.1)
Gọi W = w
1
, w
2
, …, w
n
w
i
 W (1.2)
là một tập n chữ, những chữ này nằm trong một bộ từ vựng cố định cho trước.
P(W|A) là xác suất để tập chữ W được nói khi chuỗi cú âm quan sát được là A. Từ
tập chữ W bộ nhận dạng sẽ xác định một chuỗi chữ tốt nhất Ŵ để cho ra chuỗi
quan sát là A, tức là:
Ŵ = argmax
W
P(W|A) (1.3)
Theo công thức Bayes ta có:

(1.4)
Trong đó P(W) là xác suất để chuỗi W được nói, P(A|W) là xác suất quan sát được
A khi đọc chuỗi W, và P(A) là xác suất trung bình A được quan sát. P(A) được
tính theo công thức:
(1.5)
Vì A là cố định nên từ (1.3) và (1.5) ta có:
Ŵ = argmax
W
P(W)P(A|W) (1.6)
Theo công thức 1.6 thì bài toán nhận dạng tiếng nói (nhận ra chuỗi từ Ŵ) chính là
phải xác định được các xác suất P(W) và P(A|W). P(W) được tính thông qua mô
hình ngôn ngữ, còn xác suất P(A|W) được tính thông qua mô hình cú âm.
Ngoài ra còn một số công thức về xác suất khác:
Nhận dạng tiếng nói Việt Nam từ vựng lớn Trang - 4



P(x, y|z) = P(x|y, z)P(y|z) (1.7)
Công thức Bayes:
(1.8)
1.3 Các thành phần của một bộ nhận dạng tiếng nói

Hình 1.3: Các thành phần cơ bản của một hệ thống nhận dạng tiếng nói.
Ở phần 1.1 đã giới thiệu một quá trình nhận dạng tiếng nói, phần này sẽ giới
thiệu về bộ nhận dạng tiếng nói trong quá trình đó. Về cơ bản thì bộ nhận dạng
tiếng nói gồm hai phần: xử lý cú âm và giải mã. Trong đó bộ giải mã được cài đặt
nhiều thành phần khác nhau. Trong phần này sẽ giới thiệu về mô hình cú âm, mô
hình ngôn ngữ và tìm kiếm giả định.
1.3.1 Xử lý cú âm
Công việc đầu tiên của một bộ nhận dạng tiếng nói là xác định dữ liệu cú âm

được quan sát A. Bộ phận làm việc này gọi là front end, front end sẽ chuyển đổi
âm thanh (dưới dạng sóng) thành các ký tự a
i
. Việc xử lý tín hiệu âm thanh liên
quan nhiều đến lĩnh vực vật lý và sẽ không được nói sâu trong phạm vi của đế tài.
Nhận dạng tiếng nói Việt Nam từ vựng lớn Trang - 5



1.3.2 Mô hình cú âm
Quay trở lại công thức 1.6, bộ nhận dạng cần phải tính được P(A|W) là xác
suất khi người nói nói chuỗi từ W thì bộ phân tích cú âm phân tích được chuỗi cú
âm

A. Để phục vụ công việc nhận dạng, chúng ta cần phải tính P(A|W) của tất cả
các cặp A, W có thể. Điều này khó có thể thực hiện được, vì số lượng rất lớn. Và
nếu có tính hết được thì cũng rất khó có thể tìm kiếm được cặp A, W phù hợp.
Vì vậy để tính P(A|W) chúng ta cần một mô hình xác suất cú âm của chuỗi
từ mà người nói đã nói. Số lượng mô hình phụ thuộc vào cách mà người nói nói
chuỗi từ đó, vào nhiễu (tiếng ồn, tiếng vọng …), vị trí và các đặc tính của
microphone, và việc xử lý cú âm của front end.
Mô hình cú âm được sử dụng rộng rãi nhất trong các bộ nhận dạng tiếng nói
hiện nay là mô hình Markov ẩn (HMM), sẽ được thảo luận ở chương tiếp. Ngoài
ra còn nhiều loại mô hình khác, chúng có thể dựa vào thuật toán mạng nơron
(artificial neural networks) hoặc thuật toán qui hoạch động (dynamic time
warping). Những phương pháp này không được đề cập tới trong đề tài.
13.3 Mô hình ngôn ngữ
Công thức 1.6 cũng yêu cầu phải tính xác suất các chuỗi chữ W để tìm ra chuỗi
chữ có xác suất tốt nhất mà người dùng muốn nói chuỗi chữ W. Công thức Bayes
cho phép có nhiều cách khác nhau để phân tích P(W). Nhưng bởi vì bộ nhận dạng

muốn truyền đạt chuỗi văn bản một cách “tự nhiên” như những gì con người nói,
vì thế chúng ta sử dụng cách phân tích:

(1.9)
Bộ nhận dạng phải ước lượng xác suất P(w
i
|w
1
,…, w
i-1
). Chúng ta phải ước lượng
bởi vì dù với một giá trị n vừa phải và kích thước từ vựng hợp lý, thì xác suất
P(w
i
|w
1
,…, w
i-1
) có rất nhiều đối số.
Nhận dạng tiếng nói Việt Nam từ vựng lớn Trang - 6



Tuy nhiên, thật là vô lý nếu cho rằng việc lựa chọn chữ thứ i của người nói phụ
thuộc vào tất cả i-1 chữ trước trong toàn bộ những lời mà anh ta đã nói. Vì vậy,
chúng ta sẽ cho những chữ trước vào các lớp tương đối Ф(w
i
|w
1
,…, w

i-1
), công
thức 1.9 trở thành:

(1.10)
Sự khác biệt giữa các mô hình ngôn ngữ khác nhau chính là việc xác định Ф phù
hợp và một phương pháp để ước lượng P(w
i
| Ф(w
1
,…, w
i-1
)).
Việc xây dựng mô hình ngôn ngữ chỉ phụ thuộc vào bộ văn bản sử dụng, hoàn
toàn không phụ thuộc vào tiếng nói (không phụ thuộc vào việc ghi âm cho học).
1.3.4 Tìm kiếm giả định
Cuối cùng, trong công thức 1.6, để tìm chuỗi chữ mong đợi chúng ta cần phải tìm
trong tất cả các chuỗi chữ W có thể để tìm ra chuỗi có xác suất tốt nhất. Chúng ta
không thể tìm kiếm vét cạn vì số chuỗi chữ W cần tìm kiếm rất lớn.
Chúng ta cần phải tìm kiếm giả định, không xem xét toàn bộ các chuỗi chữ W mà
chỉ khảo sát các chuỗi chữ được gợi ý bởi mô hình cú âm A. Hiện nay có nhiều
cách để cài đặt tìm kiếm giả định. Trong chương 5 sẽ giới thiệu về phương pháp
tìm kiếm Viterbi, và tìm kiếm theo cây.
1.4. Mô hình Markov ẩn.
1.4.1 Giới thiệu chuỗi Markov
Như đã đề cập trong phần trên, mô hình cú âm tính xác suất P(A|W) dựa vào
mô hình HMM. Mô hình này không chỉ hữu dụng trong nhận dạng tiếng nói mà
còn trong nhiều lĩnh vực khác. Trước khi áp dụng nó vào trong mô hình cú âm ,
chúng ta sẽ xem xét khái niệm tổng quát về mô hình HMM. Trước hết là về chuỗi
Markov ẩn.

Gọi Q
1
, Q
2
, …, Q
n
, … là một chuỗi các biến ngẫu nhiên có giá trị được lấy
từ tập hữu hạn Q = {1, 2, …, c}. Theo Bayes ta có:
Nhận dạng tiếng nói Việt Nam từ vựng lớn Trang - 7




P(Q
1
,Q
2
,….Q
n
,)=
1, 2, , 1
1
( | )
i i
n
i
P Q Q Q Q 


(1.11)

Các biến ngẫu nhiên Q
1
, Q
2
, …, Q
n
, … gọi là chuỗi Markov, công thức 2.1 gọi
là công thức của chuỗi Markov. Mỗi biến trong chuỗi gọi là một trạng thái.
Tuy nhiên, nếu trong chuỗi Markov giá trị tại thời điểm t chỉ phụ thuộc vào giá trị
của điểm liền trước nó tức là:
P(Q
i
|Q
1
, Q
2
, …, Q
i-1
) = P(Q
i
|Q
i-1
) với mọi i (1.12)
Thì cơng thức của chuỗi Markov 2.1 trở thành:
P(Q
1
, Q
2
, …, Q
n

) =
i i - 1
n
i-1
P(Q |Q )

(1.13)
Trong phạm vi nhận dạng tiếng nói thì chuỗi Markov luôn có tính chất trên và
được gọi là giả thuyết First-order.
Chuỗi Markov là đồng nhất, tức là:
P(Q
i
= q’|Q
i-1
= q) = P(q’| q) với mọi q, q’  Q (1.14)
Ví dụ: cho chuỗi Markov:
Q = A B C D E C D
Tương ứng vị trí i = 1 2 3 4 5 6 7
Thì P(Q
4
= D|Q
3
= C) = P(Q
7
= D|Q
6
= C) = p(D|C).
p(q’|q) được gọi là hàm chuyển trạng thái và được biểu diễn bằng một ma trận
c x c. Với mọi q  Q ta có:
; p(q’|q) ≥ 0, q’  Q

Mỗi trạng thái đều có một xác suất đứng đầu chuỗi π
i
và: = 1
Dựa vào các tài liệu tham khảo và những thông tin về các hệ thống nhận dạng
đã xây dựng thành công chúng tôi thấy rằng: đối với nhận dạng tín hiệu tiếng nói
Nhận dạng tiếng nói Việt Nam từ vựng lớn Trang - 8



thì mô hình HMM thường được chọn là mô hình trái phải (left-right) có từ 5 đến
6 trạng thái. Qua quá trình thử nghiệm, mô hình có 6 trạng thái cho kết quả tốt
hơn nên trong chương trình của mình, các tác giả đã xây dựng một HMM với số
trạng thái là 6, xem hình

Hình 1.4: Mô hình HMM trái phải với 6 trạng thái
Hình 1.4 là mô hình một chuỗi Markov sáu trạng thái (c = 6). Trên hình mỗi
mũi tên cùng với xác suất gắn kèm biểu thị sự chuyển đổi giữa các trạng thái. Một
số trạng thái không có xác suất chuyển qua trạng thái khác, ngầm hiểu là
a(1|1) = a(2|2) = a(3|3) = a(4|4) =a(5|5) =a(6|6) = 0.

1.4.2 Cơ bản về mô hình Markov ẩn
Để mở đầu phần này chúng ta xét một ví dụ sau đây: Giả sử chúng ta có một
chuỗi Markov gồm ba trạng thái: nắng, mưa và nhiều mây, là ba trạng thái thời
tiết. Thời tiết của mỗi ngày chỉ có thể là một trong ba trạng thái trên. Cho ma trận
xác suất chuyển trạng thái như sau:
q
1
q
2
q

3

q
1
1/3 1/3 1/3
A= q
2
1/4 1/2 1/4
Nhận dạng tiếng nói Việt Nam từ vựng lớn Trang - 9



q
3
1/4 1/4 1/2
q
1
= nắng, q
2
= nhiều mây, q
3
= mưa.
Với a
ij
= p(q
j
|q
i
) là xác suất chuyển trạng thái từ i sang j.
Giả sử ngày đầu tiên là nắng (π

1
=1), ta có xác suất xuất hiện của chuỗi
“q
1
q
2
q
3
” (nắng-nhiều mây-mưa) là: p(q
2
| q
1
)* p(q
3
| q
2
)= 1/3*1/4 = 1/12. Nhiệm vụ
của chuỗi Markov đến đây là hết, nó cho phép tính xác suất của một chuỗi sự kiện
nào đó. Tuy nhiên chúng ta cần nhiều hơn thế.
Bây giờ, giả sử mỗi ngày một người chỉ làm một trong ba việc: mua sắm, đi
dạo và dọn dẹp. Tùy vào thời tiết trong ngày mà người này sẽ làm công việc phù
hợp. Cho ma trận xác suất người này làm một công việc nào đó tương ứng với thời
tiết trong ngày:
x
1
x
2
x
3


q
1
1/3 1/3 1/3
B= q
2
1/4 1/2 1/4
q
3
1/4 1/4 1/2
x
1
= mua sắm, x
2
= đi dạo, x
3
= dọn dẹp.
Với b
ij
= p(x
j
|q
i
) là xác suất quan sát được x
i
khi ở trạng thái q
i
.
Vấn đề đặt ra là: cho một chuỗi các công việc người này sẽ làm trong một số
ngày liên tiếp, phải tìm ra chuỗi thời tiết phù hợp nhất cho những ngày đó.
Một mô hình bao gồm chuỗi các trạng thái Q = q

1
, q
2
, …, q
n
tương ứng với
các xác suất chuyển trạng thái, và chuỗi các kết quả X = x
1
, x
2
, …, x
n
tương ứng
với các xác suất đầu ra như trên gọi là mô hình Markov ẩn (HMM). Kết quả đầu ra
còn gọi là các quan sát. Mỗi mô hình HMM có một trạng thái ban đầu duy nhất.
Sở dĩ gọi là “ẩn” bởi vì với một chuỗi quan sát cho trước, ta chưa biết được
chuỗi trạng thái tương ứng là gì.
Trong mô hình HMM thì:
Công thức tính xác suất của một chuỗi quan sát X trong mô hình HMM M như
sau:
Nhận dạng tiếng nói Việt Nam từ vựng lớn Trang - 10



P(X|M)=
( )
( , | )
1
1
L M

N n
P q X M
l
l


(1.15)
Trong đó:
L(M): tổng số trạng thái.
N: chiều dài chuỗi quan sát.
chuỗi quan sát từ a đến b.
trạng thái q
l
tại vị trí n (q
l
sinh ra quan sát x
n
).
Như vậy để tính P(X|M) cần phải xác định được các P( , |M). Hiện nay có
hai cách tính là tính tổng và dùng xấp xỉ Viterbi.
Phương pháp tính tổng:
L(M)
N n N n-1 n n-1 n-1
P(q ,X |M)= P(q ,X |M)P(q ,x |q ,X ,M)
n
k=1
1l l l l k k

(1.16)
Đặt = P( , |M), ta có:

L(M)
n n-1 n-1
α (l| M)= α (k | M)P(q ,x |q ,X ,M)
n n
k=1
n-1 1l k

(1.17)
Theo công thức 1.7 ta có:

L(M)
n n-1 n n-1 n-1 n n-1 n-1
P(q ,x |q ,M)= P(q |q ,X ,M)P(x |q ,q ,X ,M)
n n
k=1
1 1l l l k k k

(1.18)
Trạng thái tại vị trí n chỉ phụ thuộc trạng thái tại vị trí n-1 nên:

Các quan sát cũng độc lập với các trạng thái trước nên:

Công thức 2.8 được viết lại:

n n-1 n-1 n n-1 n
P(q ,x |q ,X ,M)= P(q |q ,M)P(x ,q ,M)
n n
1l k l k l
(1.19)


L(M)
n n-1 n
α (l|M)= α (k | M)P(q |q ,M)P(x ,q ,M)
n n
k=1
n-1 l k l

(1.20)
Nhận dạng tiếng nói Việt Nam từ vựng lớn Trang - 11



Quay trở lại ví dụ thời tiết ở trên, chúng ta sẽ dùng phương pháp tính tổng để
tính xác suất của chuỗi công việc X = {x
1
=“mua sắm”, x
2
=”đi dạo”, x
3
=”dọn dẹp”}.
Ta có n=3, l=3, bảng sau tính các giá trị :

l=1 (“nắng”) l=2 (“nhiều
mây”)
l=3 (“mưa”)
n=1 (“mua
sắm”)
a
1
(1) a

1
(2) a
1
(3)
n=2 (“đi
dạo”)
a
2
(1) a
2
(2) a
2
(3)
n=3 (“dọn
dẹp”)
a
3
(1) a
3
(2) a
3
(3)
Bảng 1.1 Bảng tính các giá trị α trong phương pháp tính tổng
Vì chúng ta giả sử ngày đầu tiên luôn luôn là nắng nên a
1
(1) =1, a
1
(2) =0, a
1
(3)

=0.
a
2
(1) = [a
2
(1) *p(q
1
|q
1
) + a
1
(2) *p(q
1
|q
2
) + a
1
(3) *p(q
1
|q
3
)]*p(x
2
|q
1
)
= (1*1/3 + 0*1/4 + 0*1/4)*0.3 = 0.1
a
2
(2) = [a

1
(1) *p(q
2
|q
1
) + a
1
(2) *p(q
2
|q
2
) + a
1
(3) *p(q
2
|q
3
)]*p(x
2
|q
2
)
= (1*1/3 + 0*1/2 + 0*1/4)*0.7 = 7/30
a
2
(3) = [a
1
(1)*p(q
3
|q

1
) + a
1
(2)*p(q
3
|q
2
) + a
1
(3)*p(q
3
|q
3
)]*p(x
2
|q
3
)
= (1*1/3 + 0*1/4 + 0*1/2)*0.1 = 1/30
a
2
(1) = [a
2
(1)*p(q
1
|q
1
) + a
2
(2)*p(q

1
|q
2
) + a
2
(3)*p(q
1
|q
3
)]*p(x
3
|q
1
)
= (0.1*1/3 + 7/30*1/4 + 1/30*1/4)*0.1 = 1/100
a
2
(2) = [a
2
(1)*p(q
2
|q
1
) + a
2
(2)*p(q
2
|q
2
) + a

2
(3)*p(q
2
|q
3
)]*p(x
3
|q
2
)
= (0.1*1/3 + 7/30*1/2 + 1/30*1/4)*0.2 = 19/600
Nhận dạng tiếng nói Việt Nam từ vựng lớn Trang - 12



a
2
(3) = [a
2
(1)*p(q
3
|q
1
) + a
2
(2)*p(q
3
|q
2
) + a

2
(3)*p(q
3
|q
3
)]*p(x
3
|q
3
)
= (0.1*1/3 + 7/30*1/4 + 1/30*1/2)*0.8 = 13/150
Vậy P(X|M) =
( | )
L(M)
L M
n
l=1



=
3
( )
1
3
l
l





= 1/100 + 19/600 + 13/150 = 77/600 = 0.12833
Phương pháp xấp xỉ Viterbi:
Với một mô hình HMM có số trạng thái lớn thì phương pháp tính tổng ở trên
sẽ phải sử dụng rất nhiều phép nhân. Để khắc phục điều này người ta dùng phương
pháp xấp xỉ Viterbi để biến các phép nhân thành tổng các log.
Từ công thức 2.10 thay tổng bằng lấy max:

n n-1 n
α (l | M)= max[ α (k | M)P(q | q ,M)]P(x | q ,M)
n n
n-1 l k l
(1.21)
Lấy log hai vế ta được:
n n-1
log
α (l | M)= max [logα (k | M)+logP(q | q ,M)]
n
n-1k l k
(1.22)
Hay:
n n-1 n
-logα (l | M)= min [-logα (k | M)-logP(q | q ,M)] -l
ogP(x |q ,M)
n n
n-1k l k l
(1.23)
Áp dụng công thức này cho ví dụ ở trên ta có:
log = max[log + logp(q
1

|q
1
) , log + logp(q
1
|q
2
) , log +
logp(q
1
|q
3
)] + log p(x
2
|q
1
) = max[log(1/3),-∞, -∞] + log0.3 = -1
Tương tự: log = -0.63202, log = -1.47712.
log = -1.33333, log = -0.83099, log = -0.43024.
Vậy:
P(X|M) = E-1.33333 + E-0.83099 + E-0.43024= 0.56532.
Nhận dạng tiếng nói Việt Nam từ vựng lớn Trang - 13



1.4.3 Tìm chuỗi chuyển trạng thái tốt nhất - Thuật toán Viterbi
Trong mô hình HMM nêu ở trên, nếu cho trước chuỗi quan sát X = x
1
, x
2
, …,

x
k
, thì chuỗi trạng thái Q = q
1
, q
2
, …, q
k
, nào là phù hợp nhất với nó (tương tự như
ví dụ ở phần trước: cho một chuỗi các công việc người này sẽ làm trong một số
ngày liên tiếp, phải tìm ra chuỗi thời tiết phù hợp nhất cho những ngày đó).
Tức là phải tính: max
q1,q2,…,qk
P(q
1
,q
2
,…,q
k
,|x
1
,x
2
,…,x
k
,q
0
)
Từ công thức 1.7 ta có:
P(q

1
, q
2
, …, q
k
| x
1
, x
2
, …, x
k
, q
0
) =
P(q ,q , ,q ,|x ,x , ,x |q )
1 2 1 2 0
k k
P(x ,x , ,x |q )
1 2 0
k

(1.24)
Vì vậy phải tính:
P(q ,q , ,q ,|x ,x , ,x |q )
1 2 1 2 0
k k
max
q ,q , ,q
P(x ,x , ,x |q )
1 2

k
1 2 0
k

Vì đã biết nên ta cần tính:
max P(q ,q , ,q ,|x ,x , ,x |q )
q ,q , ,q
1 2 1 2 0
k k
1 2
k


Đặt:
γ
i
(q
i
) =
max P(q ,q , ,q ,q |x ,x , ,x |q )
q ,q , ,q
i i
1 2 i-1 1 2 0
1 2 i-1

(1.25)
thì
( )
max
q k

q
 chính là giá trị cần tính.
Theo giả thuyết First-Order của mô hình HMM ta có:
P(q
1
, q
2
, …, q
i
, q
i+1
, …, q
k
, x
1
, x
2
, …, x
i
, x
i+1
, …, x
k
|q
0
) = P(q
1
, q
2
, …, q

i
, x
1
,
x
2
, …, x
i
|q
0
) P(q
i+1
, …, q
k
, x
i+1
, …, x
k
|q
i
)
Nên:
γ
i+1
(q
i+1
) =
max P(q ,q , ,q ,q ,q ,x ,x , ,x |q )
q ,q , ,q
i

1 2 i-1 i+1 1 2 i+1 0
i
1 2

Nhận dạng tiếng nói Việt Nam từ vựng lớn Trang - 14



=
max [P(q ,q , ,q ,q ,x ,x , ,x |q )P(q ,x |q )]
q ,q , ,q
i i i
1 2 i-1 1 2 0 i+1 i+1
i
1 2


i
(q
i
)
max P(q ,x |q )
q ,q , ,q
i
i+1 x+1
i
1 2

(1.26)
Đây chính là công thức cho thuật toán Viterbi.

Thuật toán Viterbi:
Thuật toán Viterbi định nghĩa công thức đệ quy cho công thức 2.16, gồm
các bước:
1 Khởi tạo:
Xét γ
0
(q
0
) = 1, γ
0
(q
i
) = 0 Với mọi i ≠ 0.
2. Lặp:
Dùng công thức 2.16 tính γ
1
(q) cho tất cả các trạng thái q.
γ
1
(q) = γ
0
(q’)max
q’
P(x
1
,q|q’) = P(q, x
1
|q
0
)

Sau đó tính γ
2
(q) cho tất cả các trạng thái q.
γ
2
(q) = γ
1
(q’) max
q’
P(x
2
,q|q’)
Chọn γ
2
(q’) = max
q
γ
2
(q) để dùng cho bước lặp tiếp theo.
Tiếp tục tính γ
i
(q) cho tất cả các trạng thái q.
Đánh dấu các trạng thái q’ thỏa mãn ở mỗi lần lặp.
Nếu trong một lần lặp có nhiều trạng thái q thỏa mãn max
q’
P(x
2
,q|q’) thì
chỉ chọn một và loại bỏ hết các giá trị khác.
3. Kết thúc:

Kết thúc khi lặp qua k bước, với k là chiều dài chuỗi quan sát.

Chuỗi trạng thái đã được đánh dấu qua mỗi lần lặp chính là chuỗi trạng thái
cần tìm.
Nhận dạng tiếng nói Việt Nam từ vựng lớn Trang - 15



Ví dụ: Quay trở lại ví dụ thời tiết ở trên, bây giờ chúng ta sẽ áp dụng thuật
toán Viterbi để xác định chuỗi thời tiết phù hợp nhất cho chuỗi công việc {“mua
sắm”, “đi dạo”, “dọn dẹp”}. Chúng ta cùng xem lại hai ma trận hệ số của ví dụ:
q
1
q
2
q
3

q
1
1/3 1/3 1/3
A= q
2
1/4 1/2 1/4
q
3
1/4 1/4 1/2
q
1
= nắng, q

2
= nhiều mây, q
3
= mưa.
Với a
ij
= p(q
j
|q
i
) là xác suất chuyển trạng thái từ i sang j.
x
1
x
2
x
3

q
1
0.6 0.3 0.1
B = q
2
0.1 0.7 0.2
q
3
0.1 0.1 0.8
x
1
= mua sắm, x

2
= đi dạo, x
3
= dọn dẹp.
Với b
ij
= p(x
j
|q
i
) là xác suất quan sát được x
i
khi ở trạng thái q
i
.
Lưu ý rằng theo công thức 1.7:
= P(q
i+1
|q
i
)P(x
i+1
|q
i+1
, q
i
) = a
i(i+1)
b
(i+1)(i+1)


Do giả sử ngày đầu luôn nắng nên: a
01
=1, a
02
= 0, a
03
= 0






γ
1
(1)=0.6 γ
1
(2)=0 γ
1
(3)=0
γ
2
(1)=0.6*1/3*0.3=0. γ
2
(2)=0.6*1/3*0.7=0. γ
2
(3)=0.6*1/3*0.1=0.
Nhận dạng tiếng nói Việt Nam từ vựng lớn Trang - 16




06 14 02
γ
3
(1)=0.14*1/4*0.1=0
.0035
γ
3
(2)=0.14*1/2*0.2=
0.014
γ
3
(3)=0.14*1/4*0.8=
0.028
Bảng 1.2 Bảng tính các giá trị γ của thuật toán Viterbi
Các ô tô màu xanh là các ô có giá trị lớn nhất trong hàng, và ta lấy các trạng
thái q’ ở đây. Vậy chuỗi trạng thái tốt nhất là {q
1
, q
2
, q
3
} hay: {“nắng”, “nhiều
mây”, “mưa”}.
1.4.4 Ước lượng các tham số xác suất cho HMM – Thuật toán Baum-Welch
Vấn đề cuối cùng trong mô hình HMM đó là cho trước một chuỗi quan sát X =
x
1
, x

2
, …, x
k
, làm sao để xác định các giá trị cho các tham số (xác suất của các
trạng thái, quan sát) để làm tối đa xác suất xuất hiện của chuỗi quan sát trên, tức là
tính cực đại P(X|M). Hiện nay không có cách nào xác định các giá trị trong mô
hình để có được xác suất chuỗi quan sát tối đa, mà chúng ta chỉ có thể ước lượng
được một cực đại cục bộ bằng các dùng thuật toán Baum-Welch (hay còn gọi là
thuật toán Forward-Backward).
Chúng ta bắt đầu thuật toán bằng các viết lại công thức Forward 2.10 như sau:

N
t+1 t+1
α (j)= P(X ,q )= [ α (j)α ]b
t
j ij
i=1
t+1 1
j(t+1)

(1.27)
Một cách tương tự, chúng ta cũng có thể định nghĩa ra công thức Backward có
giá trị tương đương công thức trên:

N
N t t
(i)= P(X ,q ,X )= [ (j)α ]b
i ij
j=1
t+1 1 1 t+1

j(t+1)
 


(1.28)
Hình 1.5 và 1.6 mô tả hai quá trình Forward và Backward.
Nhận dạng tiếng nói Việt Nam từ vựng lớn Trang - 17




Hình 1.5 Mô tả quá trình forward


Hình 1.6 Mô tả quá trình backward
Gọi 
t
(i, j) là xác suất trạng thái S
i
tại t và S
j
tại t+1 trong mô hình HMM tức
là:

t
(i, j) = P(q
t
=S
i
, q

t+1
=S
j
|X, M) (1.29)
Hình 1.5 mô tả cho 
t
(i, j).

Nhận dạng tiếng nói Việt Nam từ vựng lớn Trang - 18




Hình 1.7 Mô tả xác suất t(i, j)

Từ hình 1.7 ta thấy:
a
ij
b
j(t+1)
= P(S
i
, S
j
, X|M) = P(S
i
, S
j
|X, M) P(X|M) = 
t

(i, j) P(X|M)
Mà P(X|M) =
N N N N
P(S ,S ,X |M)=
α (i)a b β (j)
t
i j ij
i=1 j-1 i=1 j-1
t+1
j(t+1)
   

 
t
(i, j) =
( , , | )
( | )
i j
P S S X M
P X M
α (i)a b
t
ij
j(t+1)
N N
α (i)a b β (j)
t
ij
i=1 j-1
t+1

j(t+1)

 
(1.30)
Đặt: γ
t
(i) = P(q
t
=S
i
|X, M)
 γ
t
(i) =
1
( , )
N
t
j
i j



(1.31)
Gọi:5

1
1
( )
T

t
t
i




= Tổng xác suất trạng thái S
i
ở các vị trí trong mô hình

1
1
( , )
T
t
t
i j




= Tổng xác suất trạng thái S
j
theo sau S
i
trong mô hình
Ta có ước lượng:
i
= Xác suất trạng thái S

i
xuất hiện tại vị trí (t = 1) = γ
t
(i)
(1.32)


1
1
1
1
( , )
Tong xác suat trang thái Sj theo Si trong mô hình
Tong xác suat trang thái Si o các vi trí trong mô hình
( )
T
t
t
ij
T
t
t
i j
a
i






 




(1.33)
Nhận dạng tiếng nói Việt Nam từ vựng lớn Trang - 19




1
1
k
1
1
( )
Tong xác suat trang thái Si o các vi trí mà nó sinh ra quan sát x
Tong xác suat trang thái Si o các vi trí trong mô hình
( )
t k
T
t
t
x x
ij
T
t
t
i

b
i






 




(1.34)
Tổng Gọi là mô hình HMM có giá trị các tham số
i
,
ij
,
ik
được ước
lượng như trên. Baum và các cộng sự đã chứng minh được rằng: P(X| ) > P(X|M),
tức là chúng ta đã tìm được một mô hình mới có xác suất tạo ra chuỗi quan sát
lớn hơn trước. Tiếp tục làm các bước trên, nếu chúng ta thay vào vị trí của M và
lặp lại các bước tính ước lượng, chúng ta sẽ cải tiến được xác suất chuỗi X được
quan sát từ mô hình.

1.5. Biến đổi Fourier rời rạc.
1.5.1 Giới thiệu
Một bộ nhận dạng tiếng nói ngoài những thành phần đã nêu ở chương 1, chúng ta

còn cần đến một giải thuật, để tính toán phổ tần số của các tín hiệu tiếng nói đầu
vào. Biến đổi Fourier rời rạc là công cụ mạnh mẽ để giải quyết vấn đề này.
Như đã biết, tiếng nói là một dạng tín hiệu miền thời gian, có phổ tần số rất phức
tạp, cho nên không thể nhận dạng được. Chỉ khi nào thực hiện phép toán đổi trục,
từ miền thời gian sang miền tần số, chúng ta mới tính được phổ tần số của từng
điểm tín hiệu. Từ đó, kết hợp các phổ tần số này lại để nhận dạng được tiếng nói.
Biến đổi Fourier rời rạc chuyển đổi một hàm theo thời gian thành hàm theo tần số.
Đầu vào của biến đổi này là dãy tín hiệu hữu hạn rời rạc, thường được tạo ra từ
một nguồn liên tục. Những tín hiệu này thông thường là tín hiệu thời gian thực, và
luôn thay đổi đặc điểm trong quá trình nhận dạng, ví dụ như : tiếng nói, tín hiệu
sinh học, Vì vậy, cần phải áp dụng kỹ thuật Hamming Window như là bước tiền
xử lý của biến đổi Fourier. Đây là kỷ thuật để giảm bớt sự rò rỉ của tín hiệu.
Nhận dạng tiếng nói Việt Nam từ vựng lớn Trang - 20



1.5.2 Cơ bản về biến đổi Fourier rời rạc
Để xây dựng biến đổi Fourier rời rạc của dãy tuần hoàn, xuất phát từ chuỗi
Fourier của hàm liên tục tuần hoàn x
p
(t).
Xét hàm liên tục tuần hoàn x
p
(t), có chu kỳ
0
2



o

T
. Nếu x
p
(t) thỏa mãn các
điều kiện Dirichlet, thì có thể khai triển x
p
(t) thành chuỗi Fourier :





k
tjk
kp
etx C
0
)(

(1.31)
Với các hệ số : dtetx
T
T
tjk
pk
T
C






2
2
0
)(
0
1


(1.32)
Nếu hàm liên tục tuần hoàn x
p
(t) có phổ hữu hạn f < f
max
, thì có thể rời rạc
hóa x
p
(t) với chu kỳ T sao cho N.T = T
o
, và T thỏa mãn điều kiện của định lý lấy
mẫu
max
21 fT

. Theo định lý lấy mẫu, hàm tuần hoàn x
p
(t) xác định tại các giá trị
rời rạc t = nT và tạo thành dãy rời rạc tuần hoàn x
p

(nT), do đó có thể viết lại [4.1-
1] dưới dạng :






k
nTjk
kp
enx CT
0
)(


Vì NNTT
00
2


 nên :









k
njk
k
k
njk
kp
N
N
eenx CCT




2
2
0
0
)(

Khi thực hiện chuẩn hóa chu kỳ lấy mẫu T = 1 , thì x
p
(nT) = x
p
(n) và chu kỳ
của dãy tuần hoàn x
p
(t) là T
o
= N, nên có :






k
njk
k
p
N
enx C

2
.)(
(1.33)

Hay :




k
njk
pp
ex kX
N
n
1
)(
1
)(


(1.34)
Trong đó :
k
p
CX
N
k

)(
1
(1.35)

×