CHƯƠNG 1: TỔNG QUAN VỀ NHẬN DẠNG TIẾNG NÓI
1.1 Giới thiệu. 
1.2 Công thức cơ bản. 
1.3 Các thành phần của một bộ nhận dạng tiếng nói
1.3.1 Xử lý cú âm
1.3.2 Mô hình cú âm
13.3 Mô hình ngôn ngữ. 
1.3.4 Tìm kiếm giả định. 
1.4. Mô hình Markov ẩn.
1.4.1 Giới thiệu chuỗi Markov. 
1.4.2 Cơ bản về mô hình Markov ẩn.
1.4.3 Tìm chuỗi chuyển trạng thái tốt nhất - Thuật toán Viterbi
1.4.4 Ước lượng các tham số xác suất cho HMM – Thuật toán Baum-Welch
1.5. Biến đổi Fourier rời rạc.
1.5.1 Giới thiệu. 
1.5.2 Cơ bản về biến đổi Fourier rời rạc. 
1.5.3 Cửa sổ Hamming. 
1.5.4 Biến đổi Fourier nhanh và thuật toán Butterfly:
1.5.5 Cài đặt thuật toán biến đổi Fourier nhanh. 
CHƯƠNG 2 :HUẤN LUYỆN TIẾNG VIỆT NAM . 
2.1 Bộ từ điển Lexicom
2.2 Dữ liệu. 
2.2.1 Dữ liệu văn bản. 
2.2.2 Dữ liệu âm thanh. 
2.2.3 Tiếng ồn và nhiễu trong dữ liệu âm thanh. 
2.3 Huấn luyện tiếng Việt
2.3.1 Chuẩn bị dữ liệu. 
2.3.2 Các bước trong quá trình học tiếng Việt
CHƯƠNG 3: DEMO ĐỌC SỐ
3.1.Chương trình demo đọc số liên tục. 
3.2.Zip City. 
CHƯƠNG 4: TẠO MODEL DÙNG CHO SPHINX-4. 
4.1 Tạo model dùng cho sphinx-4.
4.2 Audio Tool.
CHƯƠNG 5: KẾT QUẢ ĐẠT ĐƯỢC
                
              
                                            
                                
            
 
            
                 67 trang
67 trang | 
Chia sẻ: lvcdongnoi | Lượt xem: 3537 | Lượt tải: 2 
              
            Bạn đang xem trước 20 trang tài liệu Nhận dạng tiếng nói Việt Nam từ vựng lớn, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trê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 = a1, a2, …, am ai  A (1.1) 
Gọi W = w1, w2, …, wn wi  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à: 
Ŵ = argmaxWP(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ó: 
Ŵ = argmaxWP(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ự ai. 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(wi|w1,…, wi-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(wi|w1,…, wi-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 Ф(wi|w1,…, wi-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(wi| Ф(w1,…, wi-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 Q1, Q2, …, Qn, … 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(Q1,Q2,….Qn,)= 1, 2, ......, 11 ( | )i i
n
i
P Q Q Q Q 
 (1.11) 
Các biến ngẫu nhiên Q1, Q2, …, Qn, … 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(Qi|Q1, Q2, …, Qi-1) = P(Qi|Qi-1) với mọi i (1.12) 
Thì cơng thức của chuỗi Markov 2.1 trở thành: 
 P(Q1, Q2, …, Qn) = 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(Qi = q’|Qi-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(Q4 = D|Q3 = C) = P(Q7 = D|Q6 = 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: 
 q1 q2 q3 
 q1 1/3 1/3 1/3 
 A= q2 1/4 1/2 1/4 
Nhận dạng tiếng nói Việt Nam từ vựng lớn Trang - 9 
 q3 1/4 1/4 1/2 
q1 = nắng, q2 = nhiều mây, q3 = mưa. 
Với aij = p(qj|qi) 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 
“q1q2q3” (nắng-nhiều mây-mưa) là: p(q2| q1)* p(q3| q2)= 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: 
 x1 x2 x3 
 q1 1/3 1/3 1/3 
 B= q2 1/4 1/2 1/4 
 q3 1/4 1/4 1/2 
x1 = mua sắm, x2 = đi dạo, x3 = dọn dẹp. 
Với bij = p(xj|qi) là xác suất quan sát được xi khi ở trạng thái qi. 
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 = q1, q2, …, qn 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 = x1, x2, …, xn 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 nP q X Ml 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 ql tại vị trí n (ql sinh ra quan sát xn). 
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-1P(q ,X |M)= P(q ,X |M)P(q ,x |q ,X ,M)nk=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 nk=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-1P(q ,x |q ,M)= P(q | q ,X ,M)P(x |q ,q ,X ,M)n nk=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 nP(q ,x | q ,X ,M)= P(q | q ,M)P(x ,q ,M)n n1l 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 nk=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 = {x1=“mua sắm”, x2=”đi dạo”, x3=”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”) 
a1(1) a1(2) a1(3) 
n=2 (“đi 
dạo”) 
a2(1) a2(2) a2(3) 
n=3 (“dọn 
dẹp”) 
a3(1) a3(2) a3(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 a1(1) =1, a1(2) =0, a1(3) 
=0. 
a2(1) = [a2(1) *p(q1|q1) + a1(2) *p(q1|q2) + a1(3) *p(q1|q3)]*p(x2|q1) 
 = (1*1/3 + 0*1/4 + 0*1/4)*0.3 = 0.1 
a2(2) = [a1(1) *p(q2|q1) + a1(2) *p(q2|q2) + a1(3) *p(q2|q3)]*p(x2|q2) 
 = (1*1/3 + 0*1/2 + 0*1/4)*0.7 = 7/30 
a2(3) = [a1(1)*p(q3|q1) + a1(2)*p(q3|q2) + a1(3)*p(q3|q3)]*p(x2|q3) 
 = (1*1/3 + 0*1/4 + 0*1/2)*0.1 = 1/30 
a2(1) = [a2(1)*p(q1|q1) + a2(2)*p(q1|q2) + a2(3)*p(q1|q3)]*p(x3|q1) 
 = (0.1*1/3 + 7/30*1/4 + 1/30*1/4)*0.1 = 1/100 
a2(2) = [a2(1)*p(q2|q1) + a2(2)*p(q2|q2) + a2(3)*p(q2|q3)]*p(x3|q2) 
 = (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 
a2(3) = [a2(1)*p(q3|q1) + a2(2)*p(q3|q2) + a2(3)*p(q3|q3)]*p(x3|q3) 
 = (0.1*1/3 + 7/30*1/4 + 1/30*1/2)*0.8 = 13/150 
Vậy P(X|M) = ( | )L(M) L Mnl=1  
 = 3 ( )1 3 ll   
 = 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 nn-1 l k l (1.21) 
Lấy log hai vế ta được: 
n n-1logα (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)] - logP(x | q ,M)n nn-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(q1|q1) , log + logp(q1|q2) , log + 
logp(q1|q3)] + log p(x2|q1) = 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 = x1, x2, …, 
xk, thì chuỗi trạng thái Q = q1, q2, …, qk, 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: maxq1,q2,…,qkP(q1,q2,…,qk,|x1,x2,…,xk,q0) 
Từ công thức 1.7 ta có: 
P(q1, q2, …, qk| x1, x2, …, xk, q0) = 
P(q ,q ,...,q ,| x ,x ,...,x |q )1 2 1 2 0k k
P(x ,x ,...,x | q )1 2 0k
 (1.24) 
Vì vậy phải tính: 
P(q ,q ,...,q ,| x ,x ,...,x | q )1 2 1 2 0k kmaxq ,q ,...,q P(x ,x ,...,x | q )1 2 k 1 2 0k
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 0k k1 2 k
Đặt: 
γi(qi) = max P(q ,q ,...,q ,q | x ,x ,...,x |q )q ,q ,...,q i i1 2 i-1 1 2 01 2 i-1
 (1.25) 
thì ( )maxq 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(q1, q2, …, qi, qi+1, …, qk, x1, x2, …, xi, xi+1, …, xk|q0) = P(q1, q2, …, qi, x1, 
x2, …, xi|q0) P(qi+1, …, qk, xi+1, …, xk|qi) 
Nên: 
γi+1(qi+1) = max P(q ,q ,...,q ,q ,q ,x ,x ,...,x |q )q ,q ,...,q i1 2 i-1 i+1 1 2 i+1 0i1 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 i1 2 i-1 1 2 0 i+1 i+1i1 2
=γi(qi)max P(q ,x |q )q ,q ,...,q ii+1 x+1i1 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(q0) = 1, γ0(qi) = 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’)maxq’P(x1,q|q’) = P(q, x1|q0) 
Sau đó tính γ2(q) cho tất cả các trạng thái q. 
γ2(q) = γ1(q’) maxq’P(x2,q|q’) 
Chọn γ2(q’) = maxq γ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 maxq’P(x2,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ụ: 
 q1 q2 q3 
 q1 1/3 1/3 1/3 
 A= q2 1/4 1/2 1/4 
 q3 1/4 1/4 1/2 
q1 = nắng, q2 = nhiều mây, q3 = mưa. 
Với aij = p(qj|qi) là xác suất chuyển trạng thái từ i sang j. 
 x1 x2 x3 
 q1 0.6 0.3 0.1 
 B = q2 0.1 0.7 0.2 
 q3 0.1 0.1 0.8 
x1 = mua sắm, x2 = đi dạo, x3 = dọn dẹp. 
Với bij = p(xj|qi) là xác suất quan sát được xi khi ở trạng thái qi. 
Lưu ý rằng theo công thức 1.7: 
 = P(qi+1|qi)P(xi+1|qi+1, qi) = ai(i+1)b(i+1)(i+1) 
Do giả sử ngày đầu luôn nắng nên: a01=1, a02 = 0, a03 = 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à {q1, q2, q3} 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 = 
x1, x2, …, xk, 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: 
 Nt+1 t+1α (j)= P(X ,q )= [ α (j)α ]btj iji=1t+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: 
 NN t t(i)= P(X ,q ,X )= [ (j)α ]bi ijj=1t+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 Si tại t và Sj tại t+1 trong mô hình HMM tức 
là: 
 t(i, j) = P(qt=Si, qt+1=Sj|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: 
aijbj(t+1) = P(Si, Sj, X|M) = P(Si, Sj|X, M) P(X|M) =  t(i, j) P(X|M) 
Mà P(X|M) = N N N NP(S ,S ,X | M)= α (i)a b β (j)ti j iji=1 j-1 i=1 j-1 t+1j(t+1)    
   t(i, j) = 
( , , | )
( | )
i jP S S X M
P X M
α (i)a bt ij j(t+1)
N N α (i)a b β (j)t iji=1 j-1 t+1j(t+1)
 
 (1.30) 
Đặt: γt(i) = P(qt=Si|X, M) 
  γt(i) = 1 ( , )
N
tj
i j
 (1.31) 
Gọi:5 
 1
1
( )T tt i
 = Tổng xác suất trạng thái Si ở các vị trí trong mô hình 
 1
1
( , )T tt i j
 = Tổng xác suất trạng thái Sj theo sau Si trong mô hình 
Ta có ước lượng: 
i = Xác suất trạng thái Si 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
tt
ij T
tt
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
tt
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 xp(t). 
Xét hàm liên tục tuần hoàn xp(t), có chu kỳ 02 oT . Nếu xp(t) thỏa mãn các 
điều kiện Dirichlet, thì có thể khai triển xp(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 xp(t) có phổ hữu hạn f < fmax , thì có thể rời rạc 
hóa xp(t) với chu kỳ T sao cho N.T = To , và T thỏa mãn điều kiện của định lý lấy 
mẫu max21 fT  . Theo định lý lấy mẫu, hàm tuần hoàn xp(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 xp(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
NN eenx CCT
 2
2
0
0
)( 
Khi thực hiện chuẩn hóa chu kỳ lấy mẫu T = 1 , thì xp(nT) = xp(n) và chu kỳ 
của dãy tuần hoàn xp(t) là To = N, nên có : 
k
njk
kp
Nenx C
2
.)( (1.33) 
Hay : 
k
njk
pp ex kXN
n 1)(1)(  (1.34) 
Trong đó : kp CXN
k
)(1 (1.35) 
Nhận dạng tiếng nói Việt Nam từ vựng lớn Trang - 21 
ở đây, Xp(k) là biên độ của các dao động điều hòa ứng với tần số góc 1 kk  , 
nó là dãy phức. Còn 1 là tần số góc rời rạc cơ bản ứng với chu kỳ N của dãy tuần 
hoàn xp(t) : 
N
2
1  (1.36) 
Do dãy xp(t) và hàm njke 1 đều tuần hoàn với chu kỳ N nên có thể viết lại [4.1-
4] cho một chu kỳ N : 
1
0
1)(1)(
N
k
njk
pp enx kXN
 (1.37) 
Biểu thức (1.37) chính là chuỗi Fourier rời rạc của dãy tuần hoàn xp(n) , hay 
còn gọi là biến đổi Fourier rời rạc ngược. 
Để tìm biểu thức của biến đổi Fourier rời rạc thuận, nhân cả hai vế của (1.37) 
với thừa số njme 1 , sau đó lấy tổng theo n = 0  (N - 1) : 
 
1
0
1
0
1
0
111 )(1)(
N NN
n k
njmnjk
p
n
njm
p eekenx XN
 
hay: 
 
1
0
)(
1
0
1
0
11
1)()(
NNN
k
nmkj
n
p
n
njm
p eenx N
kX  (1.38) 
Theo tính chất của hàm trực chuẩn có : 
mKhi
mKhi
e
k
k
N
N
n
nmkj
0
11
0
)( 11  
nên từ [4.1-8]nhận được : 
 
1
0
1)()(
N
n
njk
pp enxkX
 (1.39) 
Biểu thức (1.39) chính là biến đổi Fourier rời rạc thuận của dãy tuần hoàn 
xp(n). Kết hợp cả hai biểu thức (1.37)và (1.39) nhận được cặp biến đổi Fourier rời 
rạc của dãy tuần hoàn xp(n), trong đó Xp(k) là dãy phức của biến tần số góc rời rạc 
1 kk  , với 1 được xác định theo (1.36) 
 )()( )()()( kjpkjpp ee kAkXkX   
Mô đun )(kX p là dãy biên độ tần số rời rạc. 
Nhận dạng tiếng nói Việt Nam từ vựng lớn Trang - 22 
Argumen )(k là dãy pha tần số rời rạc. 
Ap(k) là dãy độ lớn, còn )(k là dãy pha. 
Ví dụ5.1 : Xác định Xp(k) của dãy tuần hoàn xp(n) = n với chu kỳ N = 4. 
Giải : Theo công thức biến đổi Fourier rời rạc thuận (1.39) có : 
 
3
0
3
0
1
0
24
2
1 ..)()(
n
njk
n
njk
n
njk
pp enenenx
N
kX
 
Tại k = 0 : 0
3
0
0 6632100 2.)( j
n
nj
p eenX  
Tại k = 1 : 
 
3
0
2
3
22 3201 ..)(
n
jjjnj
p eeeenX
 
78,0.322321)( jp ejjjX
 
Tại k = 2 : 
 
3
0
32. 3202 ..)(
n
jjjnj
p eeeenX
 
j
p eX
 .223212)( 
Tại k = 3 : 
 
3
0
3. 2
9
2
3
2
3
3203 ..)(
n
jjjnj
p eeeenX
 
78,0.322323)( jp ejjjX  
Trên hình 1.8 là đồ thị của dãy xp(n) = n có chu kỳ N = 4, và đồ thị của các 
dãy biên độ tần số Xp(k) , pha tần số )(k . 
32-1-2 0
32
1
32
1
32
1
32
1
1 765-3-4-5-6-7-8 98
23 3
6
23 3
6
23 3
6
23 3
6
n
x(n)
n
Nhận dạng tiếng nói Việt Nam từ vựng lớn Trang - 23 
Xp(k) 
 )(k 
 Hình 1.8 : Đồ thị các dãy xp(n), Xp(k), )(k ở ví dụ 6.1. 
1.5.3 Cửa sổ Hamming 
Hamming window được định nghĩa như sau : 
 Với i = 0, 1,...., M (1.40 
Tín hiệu nhận dạng sẽ được nhân với một hàm cửa sổ trước khi đi qua thuật toán 
biến đổi Fourier nhanh. Tất cả các giá trị nằm bên ngoài khoảng lấy mẫu đều bằng 
0. Hamming window được ứng dụng rất rộng rãi trong phân tích phổ tần số của tín 
hiệu, và thiết kế các bộ lọc tín hiệu. 
Ví dụ: Tín hiệu tiếng nói có thể thay đổi trong khoảng thời gian từ 10 – 20 ms, do 
đó kích thước cửa sổ phù hợp là 20 ms, cứ 10 ms thì biến đổi Fourier rời rạc sẽ 
được cập nhật một lần. 
Nhận dạng tiếng nói Việt Nam từ vựng lớn Trang - 24 
 Hình 1.9 Cửa Sổ Hamming 
 Hình 1.10 Biến đổi FFT của Hamming Window 
1.5.4 Biến đổi Fourier nhanh và thuật toán Butterfly: 
Để thực hiện được biến đổi Fourier rời rạc trong nhận dạng tiếng nói, chúng tôi lựa 
chọn thuật toán biến đổi Fourier nhanh với giải thuật Butterfly. Quá trình nhận 
dạng trải qua 3 giai đoạn như sau : 
Giai đoạn đầu tiên 
Phân rã tín hiệu tiếng nói miền thời gian N điểm thành N tín hiệu miền thời gian 
cho mỗi điểm riêng lẻ. 
Nhận dạng tiếng nói Việt Nam từ vựng lớn Trang - 25 
Ví dụ : 
Một tín hiệu tiếng nói gồm 16 điểm được phân rã như sau : 
 Hình 1.11 FFT Decomposition 
Quá trình này trải qua 4 giai đoạn : để phân rã từ một tín hiệu miền thời gian gồm 
16 điểm thành 16 tín hiệu riêng lẻ cho mỗi điểm. Từ thực nghiệm, chúng tôi rút ra 
cần log2N giai đoạn để phân rã tín hiệu N điểm, ví dụ tín hiệu 16 điểm (24) cần 4 
giai đoạn, tín hiệu 512 điểm (27) cần 7 giai đoạn. 
Song song với việc phân rã tín hiệu, chúng tôi cũng sử dụng thuật toán bit reversal 
sorting để lọc các tín hiệu ở những điểm chẳn, lẻ khác nhau. Ví dụ, mẫu số 3 
(0011) được hoán đổi với mẫu số 12 (1100), mẫu số 4 (0100) được hoán đổi 
chuyển thành mẫu số 2 (0010). 
Nhận dạng tiếng nói Việt Nam từ vựng lớn Trang - 26 
 Hình 1.12 Bit Reversal Sorting 
Giai đoạn 2 
Xác định phổ tần số 
 cho một điểm, ở giai đoạn này không cần làm gì cả. Bởi vì, lúc này mỗi điểm tín 
hiệu là một phổ tần số. 
Giai đoạn 3 
Kết hợp N phổ tần số thành một phổ tần số duy nhất theo thứ tự đảo ngược thứ tự 
mà quá trình phân rả đã diễn ra. Đây là giai đoạn cuối cùng và cũng là giai đoạn 
khó khăn nhất của giải thuật Fast Fourier Transform. 
Ví dụ: để kết hợp 16 phổ tần số riêng lẻ của từng điểm, bước đầu tiên chúng tôi kết 
hợp 16 phổ tần số đó thành 8 phổ tần số cho mỗi 2 điểm. Tiếp đó, thành 4 phổ tần 
số cho mỗi 4 điểm. Cứ tiếp tục như thế cho đến khi, kết quả cuối cùng của biến đổi 
Fourier nhanh là một phổ tần duy nhất của 16 điểm. 
Nhận dạng tiếng nói Việt Nam từ vựng lớn Trang - 27 
Hình 3.1 thể hiện cách thức kết hợp từ các phổ tần số riêng lẻ thành một phổ tần số 
duy nhất của tín hiệu. Đối với miền thời gian, mỗi phổ tần số sẽ được kết hợp với 
0, đối với miền tần số các phổ tần số này sẽ được lặp lại. 
 Hình 1.13 FFT Synthesis 
Thuật toán Butterfly: 
Thuật toán Butterfly là giải thuật cơ bản của biến đổi Fourier nhanh. Giải thuật này 
kết hợp các kết quả tính toán của từng biến đổi Fourier rời rạc (DFTs) riêng lẻ 
thành một biến dổi Fourier rời rạc lớn hơn chứa tất cả (DFT), và ngược lại phân rả 
một biến đổi Fourier rời rạc thành các biến đổi nhỏ hơn. Cấu trúc của giải thuật 
Butterfly tương tự như thuật toán Viterbi. 
Nếu biến đổi Fourier rời rạc có kích thước là 2 và chỉ có 2 mẫu đầu vào là 
x0, x1 
Nhận dạng tiếng nói Việt Nam từ vựng lớn Trang - 28 
 Hình 1.14 Basic butterfly 
Biến đổi Fourier rời rạc có kích thước N 
 Hình 1.15 Basic butterfly computation in the 
 decimation-in-time FFT algorithm 
Trong đó k là số nguyên phụ thuộc vào phần biến đổi được tính. 
 Và 
1.5.5 Cài đặt thuật toán biến đổi Fourier nhanh 
Chúng tôi đã cài đặt thành công giải thuật biến đổi Fourier rời rạc để tính toán các 
tín hiệu liên tục. Biến đổi Fourier nhanh phân tích tín hiệu thành các thành phần 
tần số. Ở đây, chúng tôi phân tích trên một cửa sổ dữ liệu âm thanh thay vì trên 
toàn thời gian nói. Cửa sổ này là sản phẩm của việc ứng dụng Hamming Window 
vào tín hiệu. Kết quả trả về là độ lớn phổ của dữ liệu trong cửa sổ Hamming. Mỗi 
giá trị phổ trả về đại diện cho độ lớn của tần số cụ thể cho dữ liệu trong cửa sổ 
Hamming. Hình 1. là tín hiệu kết quả của FTT và hình 3.9 là phổ tần số của câu 
Nhận dạng tiếng nói Việt Nam từ vựng lớn Trang - 29 
nói “khoa công nghệ thông tin”. Phổ tần số trục tung là trục tần số, trục hoành là 
trục thời gian. Bóng tối là độ lớn của tần số tại thời điểm t tương ứng. 
Hình 1.16 Tín hiệu của câu nói "khoa công nghệ thông tin” (kết quả của FFT) 
 Hình 1.17. Phổ tần số của câu nói "khoa công nghệ thông tin” 
Nhận dạng tiếng nói Việt Nam từ vựng lớn Trang - 30 
CHƯƠNG 2 :HUẤN LUYỆN TIẾNG VIỆT NAM 
2.1 Bộ từ điển Lexicom 
Lexicon là bộ từ điển dùng để thể hiện các chữ thành các đơn vị phát âm 
(phonemes). Nó là một thành phần quan trọng trong hệ thống nhận dạng tiếng nói. 
Nhóm chúng em đã xây dựng được lexicon tiếng Việt theo phiên âm chuẩn quốc 
tế. Lexicon tiếng Việt hơn 12 nghìn chữ sử dụng 41 phonemes cho cả hai miền 
Nam và Bắc. 
Ví dụ: BIẾC B 4 IY AH K 
... 
NGỜI NG 1 ER Y 
NGỞ NG 3 ER 
NGỠ NG 2 ER 
NGỢ NG 5 ER 
... 
NHA N Y 0 AA 
... 
Trong đó các dấu “ngang”, “huyền”, “ngã”, “hỏi”. “sắc” và “nặng” được biểu 
diễn bằng các số tương ứng “0”, “1”, “2” , “3”, “4” và “5”. 
Có nhiều chữ người miền Nam và miền Bắc phát âm khác nhau. Người miền 
Trung thì phát âm hoặc giống người Bắc hoặc giống người Nam. Chính vì thế mà 
nhóm em chỉ làm lexicon cho hai miền Nam và Bắc. Đây là cách phát âm phổ 
thông theo hai miền chứ không phải cách phát âm địa phương. 
Ví dụ: 
BÀN B 1 AA NG Phiên âm theo giọng miền Nam 
BÀN(2) B 1 AA N Phiên âm theo giọng miền Bắc 
Nhận dạng tiếng nói Việt Nam từ vựng lớn Trang - 31 
2.2 Dữ liệu 
Dữ liệu học là một phần không thể thiếu trong nhận dạng tiếng nói. Dữ liệu 
học quyết định trực tiếp đến kết quả nhận dạng. Dữ liệu học gồm hai phần là dữ 
liệu văn bản và dữ liệu âm thanh. Dữ liệu âm thành là những tập tin âm thanh thu 
âm những câu trong dữ liệu văn bản. 
2.2.1 Dữ liệu văn bản 
Tùy vào mục đích của việc nghiên cứu và chương trình ứng dụng nhận dạng 
tiếng nói khác nhau thì có bộ dữ liệu văn bản khác nhau. Thường thì bộ dữ liệu 
văn bản được chọn theo chủ đề của ứng dụng. 
Ví dụ: 
Bộ dữ liệu văn bản đọc số từ 0 đến 9: kích thước từ vựng là 10 gồm các chữ 
“không”, “một” ... “chín” và là bộ dữ liệu có kích thước từ vựng nhỏ nhất. Dưới 
đây là một số câu trong bộ dữ liệu đọc số mà nhóm em đã làm. 
 KHÔNG HAI BỐN SÁU TÁM 
 MỘT KHÔNG NAM BẢY 
 NĂM HAI BỐN BỐN 
 CHÍN KHÔNG MỘT 
 BA MỘT KHÔNG BẢY 
 Trong đó: là bắt đầu một câu 
 là kết thúc một câu. 
 Bộ dữ liệu từ vựng lớn là bộ dữ liệu gồm tất cả các chữ tiếng Việt: kích 
thước từ vựng hơn 8 nghìn chữ. Dưới đây là một số câu trong bộ dữ liệu từ vựng 
lớn: 
Nhận dạng tiếng nói Việt Nam từ vựng lớn Trang - 32 
 TRẦN THỊ MAI ANH 
 ĐÊ HÁT KHÔNG BẢY ĐÊ TÊ HÁT 
 CÔNG NGHỆ PHẦN MỀM 
 HỆ QUẢN TRỊ CƠ SỞ DỮ LIỆU 
 NGUYỄN CÔNG BÌNH 
Để có được một bộ dữ liệu từ vựng lớn thì nhóm chúng em phải thu thập dữ 
liệu từ nhiều nguồn như báo chí, tác phẩm văn học, internet... Từ dữ liệu ban đầu 
chúng em đã tách đoạn, tách câu, lọc bỏ những chữ không đúng chuẩn tiếng Việt, 
những chữ tiếng nước ngoài, những chữ viết tắt, con số để được một bộ dữ liệu 
chuẩn có các câu như trên. 
2.2.2 Dữ liệu âm thanh 
Dữ liệu âm thanh phụ thuộc vào bộ dữ liệu văn bản. Nó bao gồm tất cả các tập 
tin âm thanh thu âm các câu trong bộ dữ liệu văn bản. Bộ dữ liệu văn bản cho nhận 
dạng số gồm 200 câu thì bộ dữ liệu âm thanh là 200 tập tin âm thanh. Nhóm chúng 
em đã ghi âm dữ liệu thành tập tin có đuôi là .raw. Tập tin âm thanh .raw có độ 
nén cao, dung lượng nhỏ thích hợp cho việc ghi âm dữ liệu lớn. 
Một tập tin âm thanh chuẩn là một tập tin không có tiếng ồn và nhiễu, các chữ 
phải được đọc rõ ràng. 
 Hình 2.1 Sóng của câu "ba bốn bảy" không bị ồn và nhiễu 
Trong qua trình thu âm, người thu âm có thể đọc nhanh làm mất tiếng dẫn đến 
các chữ bị dính liền vào nhau. Điều này dẫn đến việc khi chúng ta cho huấn luyện 
thì kết quả sẽ bị sai, và khi nhận dạng cũng sẽ cho kết quả không chính xác. Ví dụ: 
Nhận dạng tiếng nói Việt Nam từ vựng lớn Trang - 33 
câu thu âm là “tôi đi” do đọc nhanh làm cho chữ “tôi” dính liền vào chữ “đi”. Khi 
nhận dạng có thể cho kết quả sai là “tô đi” chứ không phải “tôi đi”. 
 Hình 2.2 Câu "tôi đi" được đọc rõ ràng 
 Hình 2.3 Câu "tôi đi" khi đọc quá nhanh 
Ngược lại, nếu người thu âm đọc quá chậm và kéo dài chữ thì cũng dẫn đến 
huấn luyện và nhận dạng bị sai. Ví dụ: chữ “tôi” được đọc kéo dài dẫn đến khi 
nhận dạng có thể ra kết quả sai là “tôôôi đi” thay vì là “tôi đi”. 
 Hình 2.4 Chữ “tôi” khi đọc ngân dài 
Bộ dữ liệu âm thanh phải được thu âm rõ ràng, dứt khoát từng chữ (đọc như 
đọc chính tả). Người thu âm dữ liệu học cũng đóng vai trò rất quan trọng. Người 
thu âm nằm trong độ tuổi từ 18 đến 51 chia đều theo độ tuổi, cân bằng cả giọng 
nam và giọng nữ. Số lượng người thu âm lớn, trải đều theo lứa tuổi, cân bằng số 
nam và nữ làm cho hệ thống trở lên phong phú hơn, linh hoạt hơn và khả năng 
thích ứng cao. Ví dụ như huấn luyện 1000 người đọc, khi người thứ 1001 đọc thì 
hệ thống dễ dàng thích nghi với giọng của người này và cho kết quả nhận dạng 
chính xác. 
Nhận dạng tiếng nói Việt Nam từ vựng lớn Trang - 34 
2.2.3 Tiếng ồn và nhiễu trong dữ liệu âm thanh 
Tiếng ồn, nhiễu ảnh hưởng rất lớn đến quá trình học dữ liệu và nhận dạng. 
Tiếng ồn, nhiễu là do nhiều nguyên nhân như tiếng ồn xe cộ, công trường, người 
nói chuyện..., và nhiễu chủ yếu là do microphone. 
 Hình 2.5 Câu “ba bốn bảy” thu âm bị ồn và nhiễu 
Lưu ý: khi thu âm nên chọn thời gian và địa điểm yên tĩnh thích hợp để hạn 
chế tiếng ồn, và chọn microphone ít gây nhiễu. 
2.3 Huấn luyện tiếng Việt 
Bộ huấn luyện mà nhóm em sử dụng là SphinxTrain. Đây là bộ huấn luyện 
phát triển bởi trường đại học Carnegie Mellon. Sau đây nhóm em xin trình bày về 
quá trình chuẩn bị dữ liệu và huấn luyện đọc số tiếng Việt. 
2.3.1 Chuẩn bị dữ liệu 
Dữ liệu cho nhận dạng đọc số tương đối đơn giản vì kích thước từ vựng nhỏ 
với 10 chữ số. Bộ dữ liệu đọc số nhóm em chuẩn bị là 200 câu và do nhiều người 
thu âm. Để học tiếng Việt thì chúng ta phải chuẩn bị các dữ liệu đầu vào như sau: 
VT.dic 
Là tập tin từ điển tiếng Việt theo phiên âm quốc tế (lexicon). Đây là lexicon 
cho đọc số, chỉ có 10 chữ “không”, “một”, ..., “chín”. 
Từ điển đọc số tiếng Việt phiên âm quốc tế: 
BA B 0 AA 
B\u1ea2Y B 3 AY 
B\u1ed0N B 4 AO NG 
Nhận dạng tiếng nói Việt Nam từ vựng lớn Trang - 35 
CH\u00cdN T Y 4 IY N 
HAI HH 0 AA Y 
KH\u00d4NG K HH 0 AW NG 
M\u1ed8T M 5 AO K 
N\u0102M N 0 AH M 
S\u00c1U SH 4 AW 
T\u00c1M T 4 AA M 
VT.filler 
Là một tập tin đóng vai trò là một bộ lọc nhiễu. 
 SIL 
 SIL 
 SIL 
Trong đó: 
 : khoảng nặng đầu câu 
 : khoản nặng trong câu 
 : khoảng nặng cuối câu 
VT.phone 
Là tập tin chứa các phonemes xuất hiện trong từ điển đọc số (VT.dic) và trong 
bộ lọc nhiễu (VT.filler), có 20 phonemes được sử dụng cho 10 chữ từ 0 đến 9 là: 
0 
3 
Nhận dạng tiếng nói Việt Nam từ vựng lớn Trang - 36 
4 
5 
AA 
AH 
AO 
AW 
AY 
B 
HH 
IY 
K 
M 
N 
NG 
SH 
SIL 
T 
Y 
Các phonemes này phải duy nhất trong tập tin VT.phone và chỉ gồm những 
phonemes mà chúng ta cần (xuất hiện trong VT.dic và VT.filler). 
VT_train.transcription 
Là tập tin chứa các câu mà chúng ta dùng để học. Dưới đây là một số câu 
trong 200 câu dùng để huấn luyện đọc số: 
…………………………………….......................................................................... 
 N\u0102M HAI B\u1ed0N B\u1ed0N 
Nhận dạng tiếng nói Việt Nam từ vựng lớn Trang - 37 
 CH\u00cdN KH\u00d4NG M\u1ed8T 
 BA M\u1ed8T KH\u00d4NG B\u1ea2Y 
 M\u1ed8T B\u1ea2Y CH\u00cdN 
 BA S\u00c1U N\u0102M 
 CH\u00cdN B\u1ea2Y HAI 
 M\u1ed8T KH\u00d4NG HAI B\u1ed0N 
 N\u0102M KH\u00d4NG HAI 
 M\u1ed8T KH\u00d4NG HAI B\u1ed0N 
 KH\u00d4NG N\u0102M M\u1ed8T BA KH\u00d4NG M\u1ed8T 
B\u1ed0N BA 
 KH\u00d4NG N\u0102M M\u1ed8T BA KH\u00d4NG KH\u00d4NG 
B\u1ed0N S\u00c1U 
 KH\u00d4NG N\u0102M M\u1ed8T BA KH\u00d4NG M\u1ed8T 
B\u1ed0N HAI 
 CH\u00cdN KH\u00d4NG KH\u00d4NG M\u1ed8T 
 HAI N\u0102M T\u00c1M CH\u00cdN 
 BA HAI 
……………………………………..................................................................... 
Thu âm 800 câu đọc số và lưu các tập tin âm thanh .raw trong thư mục wav. 
VT _train.fileids 
Là tập tin chứa tất cả tên các tập tin âm thanh trong thư mục wav (không để 
đuôi .raw), thứ tự tên tập tin âm thanh trong VT_train.fileids tương ứng với thứ tự 
câu được thu âm trong tập tin VT_train.transcription (số dòng trong 
VT_train.fileids phải bằng số dòng trong VT_train.transcription). 
001 
Nhận dạng tiếng nói Việt Nam từ vựng lớn Trang - 38 
002 
003 
...... 
800 
Chú ý kiểm tra: 
 Các tập tin .dic, .filler, .phones, and .transcription nội dung đều viết hoa. 
 Mỗi tập tin đều có một dòng trống ở cuối. 
 Phải có cùng số dòng trong tập tin .transcription và tập tin .fileids. 
 Chắc chắn rằng tập tin .phone không có dòng nào bị trùng lắp. 
2.3.2 Các bước trong quá trình học tiếng Việt 
Bước 1 Tạo ra thư mục VT nằm trong cùng một thư mục với SphinxTrain 
Bước 2 Mở CMD đưa đường dẫn tới thư mục VT và thực hiện lệnh: 
perl .../SphinxTrain/scripts_pl/setup_SphinxTrain.pl –task VT 
Nhận dạng tiếng nói Việt Nam từ vựng lớn Trang - 39 
Bước 3 Tạo ra một cấu trúc cây có các tập tin và thư mục như sau 
VT 
 wav 
 etc 
 VT.dic 
 VT.filler 
 VT.phone 
 VT _train.fileids 
 VT _train.transcription 
 feat.params 
 sphinx_train.cfg 
Trong thư mục wav chứa tất cả các tập tin âm thanh mà chúng ta dùng để chạy 
quá trình học. 
Nhận dạng tiếng nói Việt Nam từ vựng lớn Trang - 40 
Tập tin feat.params và sphinx_train.cfg là của SphinxTrain có sẵn. Các tập tin 
VT.dic, VT.filler, VT.phone, VT _train.fileids, VT _train.transcription đã được 
chuẩn bị trước. 
Bước 4: Kiểm tra lại cấu hình 
Mở file sphinx_train.cfg và lưu ý đến các thuộc tính $CFG_BASE_DIR, 
$CFG_SPHINXTRAIN_DIR nếu chúng ta đã di chuyển thư mục. 
Ví dụ: 
$CFG_BASE_DIR = "C:/VT"; 
$CFG_SPHINXTRAIN_DIR = "C:/VT"; 
Tìm thuộc tính $CFG_WAVFILE_EXTENSION và điền thông tin thích hợp 
(raw hoặc wav). 
Xét thuộc tính $CFG_WAVFILE_TYPE phù hợp. 
 Mặc định là: $CFG_WAVFILE_TYPE = 'raw'; 
Chọn loại mô hình huấn luyện: 
$CFG_HMM_TYPE = '.cont.'; # Sphinx-3. Sphinx-4 
#$CFG_HMM_TYPE = '.semi.'; # Sphinx-2, PocketSphinx 
Bước 5: Tạo mô hình: 
Thực hiện lệnh sau: 
 perl ./scripts_pl/make_feats -ctl etc/VT_train.fileids 
Nhận dạng tiếng nói Việt Nam từ vựng lớn Trang - 41 
Sau đó là lệnh: 
perl ./scripts_pl/RunAll.pl 
Nhận dạng tiếng nói Việt Nam từ vựng lớn Trang - 42 
Trong quá trình học SphinxTrain đã ghi lại tất cả các bước trong tập tin 
VT.html như dưới đây. 
Nhận dạng tiếng nói Việt Nam từ vựng lớn Trang - 43 
Nhận dạng tiếng nói Việt Nam từ vựng lớn Trang - 44 
Nhận dạng tiếng nói Việt Nam từ vựng lớn Trang - 45 
Nhận dạng tiếng nói Việt Nam từ vựng lớn Trang - 46 
Nhận dạng tiếng nói Việt Nam từ vựng lớn Trang - 47 
Nhận dạng tiếng nói Việt Nam từ vựng lớn Trang - 48 
Nhận dạng tiếng nói Việt Nam từ vựng lớn Trang - 49 
Nhận dạng tiếng nói Việt Nam từ vựng lớn Trang - 50 
CHƯƠNG 3: DEMO ĐỌC SỐ 
3.1.Chương trình demo đọc số liên tục 
Đây là demo về nhận dạng đọc số tiếng Việt Nam liên tục. 
Để chạy demo đọc số: chạy file HelloNGram.java. 
Chọn “Bắt Đầu” để bắt đầu đọc nhận dạng, “Đóng” để kết thúc demo. 
Kết quả chạy demo đọc số liên tục như sau: 
 Hình 3.1: Màn hình ban đầu của demo đọc số 
 Hình 3.2:Màn hình sau khi nhận dạng một câu đọc số 
3.2.Zip City 
Đây là một demo minh họa về nhận dạng số. ZipCity sẽ nghe đọc mã bưu điện 
và sẽ hiển thị tỉnh, thành phố tương ứng. 
Nhận dạng tiếng nói Việt Nam từ vựng lớn Trang - 51 
Sau khi ZipCity chạy, bấm vào nút speak và đọc mã bưu điện Các chữ số 
được nhận dạng và hiển thị tỉnh, thành phố tương ứng. 
Nhận dạng tiếng nói Việt Nam từ vựng lớn Trang - 52 
 Hình 3.3: Màn hình ZipCity khi nhận dạng 
Nhận dạng tiếng nói Việt Nam từ vựng lớn Trang - 53 
CHƯƠNG 4: TẠO MODEL DÙNG CHO SPHINX-4 
4.1 Tạo model dùng cho sphinx-4. 
Model được tạo ra trong sphinx-4. 
Bước 1: Tạo thư mục sphinx-4/models/VT 
Bước 2: Trong thư mục VT tạo cấu trúc cây thư mục như sau: 
cd_continuous_8gau/means 
cd_continuous_8gau/mixture_weights 
cd_continuous_8gau/variances 
cd_continuous_8gau/transition_matrices 
dict/ VT.dic 
dict/ VT.filler 
etc/VT_8gau_13dCep_16k_40mel_130Hz_6800Hz.4000.mdef 
etc/VT_8gau_13dCep_16k_40mel_130Hz_6800Hz.ci.mdef 
Các file trong thư mục cd_continuous_8gau là các tập tin trong 
VT/model_parameters/ VT.ci_cont / là kết quả của quá trình học. 
Hai tập tin trong thư mục dict là hai tập tin VT.dic và VT.filler đã được chuẩn 
bị khi học dữ liệu. 
Thư mục etc sử dụng hai file trong VT/model_architecture/ là kết quả của quá 
trình học. 
Đổi tên các tập tin cho giống với cây thư mục ở trên. 
Giải thích tên tập tin VT_8gau_13dCep_16k_40mel_130Hz_6800Hz.jar: 
 VT: là tên của bộ dữ liệu được sử dụng để huấn luyện mô hình. 
 8gau: số gaussians 
 13dCep: số lượng điểm dữ liệu phổ. 
Nhận dạng tiếng nói Việt Nam từ vựng lớn Trang - 54 
 16k: tỷ lệ mẫu của dữ liệu huấn luyện. 
 40mel: số lượng các bộ lọc mel 
 130Hz: tần số tối thiểu. 
 6800Hz: tần số tối đa. 
Trong thư mục sphinx-4/models/VT tạo tập tin model.props với nội dung: 
description = any description of your model file 
modelClass = 
edu.cmu.sphinx.model.acoustic.VT_8gau_13dCep_16k_40mel_130Hz_6800Hz.M
odel 
modelLoader = 
edu.cmu.sphinx.model.acoustic.VT_8gau_13dCep_16k_40mel_130Hz_6800Hz.M
odelLoader 
isBinary = true 
featureType = 1s_c_d_dd 
vectorLength = 39 
sparseForm = false 
numberFftPoints = 512 
numberFilters = 40 
gaussians = 8 
minimumFrequency = 130 
maximumFrequency = 6800 
sampleRate = 16000 
dataLocation = cd_continuous_8gau 
modelDefinition = etc/VT.ci.mdef 
Nhận dạng tiếng nói Việt Nam từ vựng lớn Trang - 55 
Trong thư mục sphinx-4/models/VT/etc tạo tập tin variables.def có nội 
dung: 
set exptname = VT 
set vector_length = 13 
set dictionary = $base_dir/lists/VT.dic 
set fillerdict = $base_dir/lists/VT.filler 
set statesperhmm = 3 
set skipstate = no 
set gaussiansperstate = 8 
set feature = 1s_c_d_dd 
set n_tied_states = 4000 
set agc = none 
set cmn = current 
set varnorm = no 
Bước 3: Chỉnh sửa tập tin build.xml trong sphinx-4: 
Chú ý thêm các tag tương ứng ở các vị trí thích hợp trong tập tin xml, có thể 
sửa name và value của thẻ có sẵn nếu không muốn build cái có trước. 
Thêm các thuộc tính: 
<property name="test_name" value = 
"VT_8gau_13dCep_16k_40mel_130Hz_6800Hz"/> 
Tìm thẻ target có tên create_all_model_classes thêm vào: 
Nhận dạng tiếng nói Việt Nam từ vựng lớn Trang - 56 
Tìm thẻ target có tên delete_all_model_classes thêm vào: 
Tìm thẻ target có tên create_all_models thêm vào: 
Bước 4: Rebuild 
Trong cmd tới đường dẫn sphinx-4 rồi thực hiện lệnh: 
ant 
 Chú ý: Máy phải cấu hình biến môi trường cho ant trước đó. 
Bước 5: Để sử dụng trong sphinx-4 
Sửa file cấu hình: 
<component name="VT" 
type="edu.cmu.sphinx.model.acoustic.VT_8gau_13dCep_16k_40mel_130Hz_680
0Hz.Model"> 
<component name="sphinx3Loader" 
Nhận dạng tiếng nói Việt Nam từ vựng lớn Trang - 57 
Type="edu.cmu.sphinx.model.acoustic.VT_8gau_13dCep_16k_40mel_130Hz_68
00Hz.ModelLoader"> 
<component name="dictionary" 
 type="edu.cmu.sphinx.linguist.dictionary.FullDictionary"> 
 <property name="dictionaryPath" 
value="resource:/edu.cmu.sphinx.model.acoustic.VT_8gau_13dCep_16k_40mel_1
30Hz_6800Hz.Model!/edu/cmu/sphinx/model/acoustic/VT_8gau_13dCep_16k_40
mel_130Hz_6800Hz/dict/VT.dic"/> 
 ... 
4.2 Audio Tool. 
Để phục vụ cho việc ghi âm dữ liệu nhóm chúng em đã xây dụng một bộ công 
cụ hỗ trợ ghi âm và kiểm tra dữ liệu sau khi ghi âm là Audio Tool. Audio Tool 
gồm hai phần là recorder.jar và player.jar 
Recorder 
Recorder.jar dùng để ghi âm dữ liệu thành tập tin âm thanh .raw có độ nén 
cao, dung lượng thấp. 
Nhận dạng tiếng nói Việt Nam từ vựng lớn Trang - 58 
 Hình 4.1 Màn nhìn cấu hình ghi âm 
Chạy file recorder.jar. Khi cửa sổ Audio Tool hiện lên chọn Edit -> Option, 
màn hình Config suất hiện. Vì tool hỗ trợ tự động save file nên cần phải đặt một số 
thông số cấu hình sau: 
Record Fotmat: là thông số cấu hình cho file âm thanh. 
Output Dir: đường dẫn chỉ nơi sẽ lưu các file âm thanh. 
Train File: là đường dẫn tới file chứa các câu cần thu âm. 
Length Name: là độ dài tên file âm thanh. 
Jum Line: dòng bắt đầu thu âm. 
Init Name: là ký tự gắn trước tên file âm thanh (nếu cần). 
Begin Name: tên file bắt đầu thu âm. 
Nhận dạng tiếng nói Việt Nam từ vựng lớn Trang - 59 
 Hình 4.2 Màn hình ghi âm 
Sau khi cấu hình thì có thể bắt đầu ghi âm. Câu cần ghi âm được hiển thị trên 
màn hình. Bấm Record để ghi âm, Stop để kết thúc ghi âm. Sau khi bấm Stop thì 
chương trình tự động cho nghe lại câu vừa ghi âm, hoặc bấm Play để nghe lại lần 
nữa. Nếu muốn save và chuyển sang câu khác thì chỉ cần bấm Next. 
Khi chúng ta muốn mở nghe một tập tin đã ghi âm thì chọn File -> Open. Nếu 
muốn ghi âm lại câu đó chỉ việc bấm record ghi âm như thường, sau đó chọn File -
> Save để lưu đè lên tập tin đó. 
Player 
Player.jar hỗ trợ nghe nhiều file âm thanh liên tiếp, dùng để kiểm tra lại dữ 
liệu sau khi ghi âm. Giúp chúng ta phát hiện những file không đạt chất lượng, 
những file ghi âm sai. 
Nhận dạng tiếng nói Việt Nam từ vựng lớn Trang - 60 
 Hình 4.3 Màn hình của player khi mới khởi động 
File -> Open để chọn danh sách các file .raw cần nghe. 
Edit -> Compare để chọn tập tin chứa các câu đã ghi âm. 
Nhận dạng tiếng nói Việt Nam từ vựng lớn Trang - 61 
 Hình 4.4 Màn hình kiểm tra dữ liệu 
Khi nghe thì câu text và dạng sóng được hiển thị song song trên màn hình. 
Điều này giúp chúng ta kiểm soát được dữ liệu thu âm một cách chính xác. Những 
file không đúng hoặc không đạt chất lượng thì chúng ta có thể chọn Del để xóa đi. 
Nhận dạng tiếng nói Việt Nam từ vựng lớn Trang - 62 
CHƯƠNG 5: KẾT QUẢ ĐẠT ĐƯỢC 
Sau một quá trình học và thực hiện đề tài với sự giúp đỡ tận tình của thầy giáo 
hướng dẫn là thầy Lê Quân Hà, nhóm em đã đạt được kết quả như sau: 
- Đã huấn luyện được mô hình cú âm cho tiếng Việt. 
- Đã hoàn thành demo nhận dạng số liên tục và demo Zip Code cho 4 người 
huấn luyện nước Việt Nam của tiếng Việt Nam. 
- Độ chính xác nhận dạng đọc số như sau: 
Nhận 
dạng đúng 
Nhận 
dạngsai 
Tổng 
số 
% tỉ lệ đúng 
% tỉ lệ lỗi 
4644 356 5000 92.88% 7.12% 
Bảng 5.1 Độ chính xác cho nhận dạng số 3 người Huấn Luyện 
            Các file đính kèm theo tài liệu này:
 Nhận dạng tiếng nói Việt Nam từ vựng lớn.pdf Nhận dạng tiếng nói Việt Nam từ vựng lớn.pdf