ĐẠI HỌC THÁI NGUYÊN
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
NGUYỄN THỊ THU HUYỀN MÔ HÌNH MARKOV ẨN VÀ ỨNG DỤNG XÂY DỰNG HỆ THỐNG NHẬN DẠNG TIẾNG NÓI
LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH
THÁI NGUYÊN - 2018
ĐẠI HỌC THÁI NGUYÊN
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
NGUYỄN THỊ THU HUYỀN
MÔ HÌNH MARKOV ẨN VÀ ỨNG DỤNG XÂY DỰNG HỆ THỐNG NHẬN DẠNG TIẾNG NÓI Chuyên ngành: Khoa học máy tính Mã số: 8480101 LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH
Người hướng dẫn khoa học: TS. Vũ Vinh Quang
THÁI NGUYÊN - 2018
i
LỜI CAM ĐOAN
Tôi xin cam đoan rằng đây là công trình nghiên cứu của tôi, có sự hỗ trợ từ
Giáo viên hướng dẫn là TS. Vũ Vinh Quang . Các nội dung nghiên cứu và kết quả
trong đề tài này là trung thực và chưa từng được ai công bố trong bất cứ công trình
nghiên cứu nào trước đây. Những số liệu trong các hình phục vụ cho việc phân tích,
nhận xét, đánh giá được chính tác giả thu thập từ các nguồn khác nhau có ghi trong
phần tài liệu tham khảo. Ngoài ra, đề tài còn sử dụng một số nhận xét, đánh giá
cũng như số liệu của các tác giả, cơ quan tổ chức khác, và cũng được thể hiện trong
phần tài liệu tham khảo.
Nếu phát hiện có bất kỳ sự gian lận nào tôi xin hoàn toàn chịu trách nhiệm
trước Hội đồng, cũng như kết quả luận văn của mình.
Thái nguyên, ngày …... tháng …... năm 2018
Tác giả
NGUYỄN THỊ THU HUYỀN
ii
LỜI CẢM ƠN
Để hoàn thành luận văn này, em xin tỏ lòng biết ơn sâu sắc đến thầy TS. Vũ
Vinh Quang, đã tận tình hướng dẫn trong suốt quá trình viết luận văn tốt nghiệp.
Em chân thành cảm ơn quý thầy, cô trong trường Đại Học Công nghệ Thông
tin và Truyền thông đã tận tình truyền đạt kiến thức trong hai năm học tập. Với vốn
kiến thức được tiếp thu trong quá trình học là nền tảng cho quá trình nghiên cứu để
em hoàn thành luận văn.
Thái nguyên, ngày …... tháng …... năm 2018
Tác giả
NGUYỄN THỊ THU HUYỀN
iii
MỤC LỤC
LỜI CAM ĐOAN ...................................................................................................... i
LỜI CẢM ƠN ........................................................................................................... ii
DANH MỤC CÁC HÌNH ẢNH ............................................................................... v
DANH MỤC CÁC BẢNG BIỂU ........................................................................... vi
DANH MỤC CÁC TỪ VIẾT TẮT ....................................................................... vii
LỜI MỞ ĐẦU ............................................................................................................ 1
CHƯƠNG 1. MỘT SỐ KIẾN THỨC CƠ BẢN VỀ NHẬN DẠNG TIẾNG NÓI . 3
1.1. Khái niệm chung .................................................................................................. 3
1.1.1. Khái niệm nhận dạng tiếng nói ......................................................................... 3
1.1.2. Phân loại nhận dạng tiếng nói ........................................................................... 4
1.1.3. Hệ thống nhận dạng tiếng nói tự động .............................................................. 7
1.2. Các nghiên cứu hiện thời về nhận dạng tiếng nói ................................................ 8
1.2.1. Các nghiên cứu về nhận dạng tiếng nói ở nước ngoài ...................................... 8
1.2.2. Các nghiên cứu về nhận dạng tiếng nói tiếng Việt ........................................... 9
1.3. Các hướng tiếp cận nhận dạng tiếng nói ............................................................ 10
1.4. Những khó khăn trong nhận dạng tiếng nói ....................................................... 11
1.5. Xử lý tiếng nói.................................................................................................... 13
1.5.1. Khái niệm xử lý tiếng nói ................................................................................ 13
1.5.2. Kỹ thuật lấy mẫu tín hiệu ................................................................................ 13
1.5.3. Cấu trúc bộ lọc tín hiệu ................................................................................... 13
1.5.4. Kỹ thuật dò tìm điểm cuối ............................................................................... 15
1.5.5. Kỹ thuật rút trích đặc trưng ............................................................................. 16
1.5.6. Phương pháp tính hệ số MFCC ....................................................................... 18
1.6. Sơ lược về ngôn ngữ tiếng Việt ......................................................................... 23
1.6.1. Giới thiệu về âm tiết ........................................................................................ 23
1.6.2. Một số đặc điểm của âm tiết tiếng Việt .......................................................... 23
1.6.3. Lý thuyết về âm vị ........................................................................................... 25
CHƯƠNG 2. TỔNG QUAN VỀ MÔ HÌNH MẠNG MARKOV ẨN ................ 27
iv
2.1. Mô hình Markov ẩn ............................................................................................ 27
2.2. Các bài toán cơ bản của mô hình Markov ẩn ..................................................... 30
2.2.1. Bài toán 1 ........................................................................................................ 30
2.2.2. Bài toán 2 ........................................................................................................ 30
2.2.3. Bài toán 3 ........................................................................................................ 31
2.3. Các thuật toán cơ bản ......................................................................................... 31
2.3.1. Thuật toán tiến (forward) ................................................................................ 31
2.3.2. Thuật toán lùi (Backward) .............................................................................. 32
2.3.3. Các giải pháp giải quyết các bài toán cơ bản .................................................. 32
2.4. So sánh các loại mô hình Markov ẩn ................................................................. 33
CHƯƠNG 3. XÂY DỰNG HỆ THỐNG NHẬN DẠNG TIẾNG VIỆT ............. 35
3.1. Tổng quan về HTK (HMM Tool Kit) ................................................................ 35
3.1.1. Giới thiệu hệ thống .......................................................................................... 35
3.1.2. Mô hình các cấu trúc tập tin cơ bản khai báo HMM và MFCC cho nhận dạng
tiếng nói ............................................................................................................ 36
3.1.3. Các bước xây dựng một mô hình nhận dạng tiếng nói sử dụng HTK ............ 40
3.1.4. Một số Modul sử dụng trong quá trình xây dựng hệ thống nhận dạng tiếng nói
tiếng việt trong bộ công cụ HTK ...................................................................... 44
3.2. Xây dựng hệ thống nhận dạng chữ số Tiếng việt............................................... 47
3.2.1. Xây dựng cơ sở dữ liệu chữ số tiếng việt ....................................................... 47
3.2.2. Bảng phiên âm 10 chữ số tiếng Việt ............................................................... 47
3.2.3. Phương pháp xây dựng hệ thống nhận dạng chữ số tiếng việt ....................... 47
3.2.4. Các kết quả thực nghiệm ................................................................................. 48
KẾT LUẬN .............................................................................................................. 51
TÀI LIỆU THAM KHẢO ...................................................................................... 52
v
DANH MỤC CÁC HÌNH ẢNH
Hình 1.1: Quá trình phát âm sẽ khác nhau tùy theo người nói ................................... 6
Hình 1.2: Mô hình nhận dạng tiếng nói bán độc lập người nói .................................. 6
Hình 1.3: Cấu trúc cơ bản của hệ thống ASR ............................................................. 7
Hình 1.4: Cấu trúc hệ thống nhận dạng ngôn ngữ có thanh điệu ................................ 9
Hình 1.5. Ví dụ về lấy mẫu tín hiệu F(t) trên miền thời gian ................................... 13
Hình 1.6. Minh họa hoạt động của bộ lọc FIR .......................................................... 14
Hình 1.7. Minh họa hoạt động của bộ lọc IIR ........................................................... 15
Hình 1.8. Dò tìm điểm cuối dựa trên mức năng lượng ............................................. 16
Hình 1.9. Sơ đồ rút trích vevtor đặc trưng tổng quát ................................................ 17
Hình 1.10. Các bước xử lý tính hệ số MFCC ........................................................... 18
Hình 1.11. Sóng âm của chữ “ANH” trước khi làm phẳng (bên trái) và sau khi
làm phẳng (Bên phải)............................................................................... 19
Hình 1.12. Phân đoạn tín hiệu tiếng nói thành các khung có sự chồng lấp .............. 20
Hình 1.13. Cửa sổ Hamming ..................................................................................... 20
Hình 1.14. Cửa sổ Hanning ....................................................................................... 21
Hình 1.15. Cửa sổ hình chữ nhật ............................................................................... 21
Hình 2.1: Minh họa mô hình Markov trong nhận dạng tiếng nói với 5 trạng thái và
chèn sp ...................................................................................................... 28
Hình 2.2: Mô hình Markov ẩn với sáu trạng thái. ..................................................... 30
Hình 3.1: Minh họa sự giảm dần của năng lượng. .... Error! Bookmark not defined.
Hình 3.2. Các Module và các chức năng trong HTK. ............................................... 35
Hình 3.3. Các công cụ và chức năng trong HTK ...................................................... 36
Hình 3.4. Phân bố các tham số trong một số vector đặc trưng của HTK.................. 38
Hình 3.5. Các bước cơ bản xây dựng hệ thống nhận dạng tiếng nói ........................ 40
Hình 3.6: Mô hình HMM .......................................................................................... 42
vi
DANH MỤC CÁC BẢNG BIỂU
Bảng 1.1: So sánh tỷ lệ lỗi nhận dạng của con người và máy tính trong một số hệ
thống nhận dạng ......................................................................................... 8
Bảng 3.1: Bảng phiên âm 10 chữ số tiếng Việt ........................................................ 47
Bảng 3.2. Kết quả thử nghiệm hệ thống nhận dạng với bộ từ điển có chèn sp và
không chèn sp .......................................................................................... 49
Bảng 3.3. Kết quả thử nghiệm hệ thống nhận dạng với dữ liệu test trùng với dữ liệu
huấn luyện ................................................................................................ 50
vii
DANH MỤC CÁC TỪ VIẾT TẮT
Từ viết tắt Tiếng Anh Tiếng Việt
Artificial intelligence Trí tuệ nhân tạo AI
Augmented reality Tương tác thực tại ảo AR
Database Cơ sở dữ liệu CSDL
Database Management System Hệ quản trị cơ sở dữ liệu DBMS
Internet of things Internet vạn vật IoT
IR Information Retrieval Hệ thống tự động truy tìm
thông tin
MIRS Multimedia Indexing & Retrieval Hệ thống chỉ mục và truy tìm
System thông tin đa phương tiện
MMDBMS Multimedia Database Hệ thống quản trị cơ sở dữ liệu
Management System đa phương tiện
MRI Magnetic Resonance Imaging
VR Virtual reality Thực tế ảo
WWW World Wide Web
1
LỜI MỞ ĐẦU
Tiếng nói là một phương tiện giao tiếp cơ bản nhất của loài người, nó hình
thành và phát triển cùng với quá trình tiến hóa của loài người. Ngay từ khi hình
thành tiếng nói đã thể hiện được sức mạnh như: Khả năng truyền đạt thông tin,
tốc độ…
Ngày nay, nhờ sự phát triển mạnh mẽ của khoa học kỹ thuật, máy móc dần
dần thay thế các lao động bằng tay chân. Tuy nhiên để điều khiển máy móc, con
người phải làm khá nhiều thao tác vừa tốn thời gian vừa phức tạp và cần phải được
đào tạo. Chính vì lẽ đó, nhận dạng tiếng nói sẽ đóng vai trò rất quan trọng trong
giao tiếp giữa người và máy. Nó giúp con người có thể điều khiển máy móc, thiết bị
bằng giọng nói của mình đặc biệt là các thiết bị như: máy tính, điện thoại di động,
rô bốt…
Hiện nay, cùng với sự phát triển vượt bậc của ngành khoa học nhận dạng tiếng
nói, những chiếc điện thoại quay số bằng giọng nói đã ra đời, máy tính cá nhân với
phần mềm nhận dạng tiếng nói có thể trợ giúp cho những người khuyết tật về tay,
chân hay khiếm thính. . Tuy vậy, những thành tựu trên lại là những nghiên cứu về
nhận dạng tiếng nói ngôn ngữ nước ngoài. Với tiếng Việt, số lượng các nghiên cứu
còn khá ít và dường như ít được quan tâm. Có thể nói rằng những nghiên cứu nhận
dạng tiếng nói tiếng Việt chủ yếu tập trung vào nhận dạng từ rời rạc, hay hệ thống
nhận dạng liên tục nhưng với kích thước nhỏ.
Tuy nhiên, để ngành khoa học nhận dạng tiếng nói ở Việt Nam thực sự phát
triển và đạt được những thành tựu to lớn để áp dụng vào thực tế thì lĩnh vực nhận
dạng tiếng nói cần phát triển hơn nữa. Chính vì vậy, việc nghiên cứu nhận dạng
tiếng nói đặc biệt là nhận dạng tiếng nói tiếng Việt là rất cần thiết để xây dựng các
hệ thống nhận dạng, các ứng dụng nhận dạng tiếng nói thực sự hữu ích của riêng
tiếng Việt.
Đề tài này được xây dựng với mục đích tìm hiểu, nghiên cứu, so sánh và đánh
giá các phương pháp, các hướng tiếp cận nhận dạng tiếng nói hiện nay trên thế giới
như: Tiếp cận âm học, tiếp cận trí tuệ nhân tạo, nhận dạng mẫu thống kê (dựa vào
2
mô hình Markov ẩn (HMM), mạng Neural nhân tạo(ANN), hệ thống lai ghép giữa
mô hình Markov và mạng Neural (HMM/ANN). Trên cơ sở đó lựa chọn ra phương
pháp thích hợp nhất để áp dụng xây dựng hệ thống nhận dạng tiếng nói tiếng Việt.
Đề tài có kế thừa các kết quả nghiên cứu về nhận dạng tiếng nói ngôn ngữ
nước ngoài và một số kết quả nghiên cứu trong nước để đưa ra những điểm chung,
và riêng của ngôn ngữ tiếng Việt với ngôn ngữ nước ngoài từ đó thiết kế, xây dựng
và mở rộng bộ từ điển tiếng Việt cho hệ thống nhận dạng tiếng Việt liên tục.
Hiện nay, có hai hướng xây dựng hệ thống nhận dạng tiếng nói: hệ thống nhận
dạng từ rời rạc và hệ thống nhận dạng từ liên tục. Có thể nói rằng để xây dựng hệ
thống nhận dạng từ liên tục là rất khó khăn so với nhận dạng từ rời rạc. Nhưng một
hệ thống nhận dạng từ liên tục lại có ý nghĩa thực tế hơn nhiều so với hệ thống nhận
dạng từ rời rạc. Chính vì yếu tố trên nên đề tài tập trung nghiên cứu xây dựng hệ
thống nhận dạng tiếng Việt liên tục với hướng tiếp cận mẫu thống kê dựa vào mô
hình Markov ẩn (HMM). Với giới hạn thời gian làm đồ án, việc xây dựng một hệ
thống nhận dạng tiếng Việt liên tục với kích thước lớn là rất khó khăn vì vậy đề tài
giới hạn nghiên cứu hệ thống nhận dạng tiếng nói tiếng Việt cho 10 chữ số.
3
CHƯƠNG 1
MỘT SỐ KIẾN THỨC CƠ BẢN VỀ NHẬN DẠNG TIẾNG NÓI
1.1. Khái niệm chung
1.1.1. Khái niệm nhận dạng tiếng nói
Nhận dạng tiếng nói nhìn chung cũng là một quá trình nhận dạng mẫu, với
mục đích là phân lớp tín hiệu tiếng nói (đầu vào) thành một dãy tuần tự các mẫu đã
được học và lưu trữ trong bộ nhớ. Các mẫu có thể là các từ hay các âm vị.
Với đặc thù tiếng nói là một dạng tín hiệu biến thiên theo thời gian và có sự
khác biệt giữa tiếng nói của những người khác nhau, tốc độ nói khác nhau hay ngữ
cảnh và môi trường âm học khác nhau. Thậm chí tiếng nói của cùng một người
cũng không giống nhau: khi người đó khỏe thì tiếng nói của họ khác khi bị ốm. Đó
chính là khó khăn cơ bản nhất của nhận dạng tiếng nói. Việc xác định những thông
tin biến thiên nào là hữu ích và những thông tin nào là vô ích cho 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ả những kỹ thuật
xác suất thống kê mạnh cũng không thể tổng quát hóa từ các mẫu tiếng nói những
biến thiên nào là quan trọng và cần thiết cho nhận dạng tiếng nói.
Nhìn chung hiện nay 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 miền
thời gian ngắn (short-term amplitude spectrum). Nhờ yếu tố này ta có thể cắt khung
tiếng nói trong một khoảng thời gian nhất định để trích rút ra các đặc trưng làm dữ
liệu để nhận dạng tiếng nói.
Nội dung của tiếng nói ở dạng văn bản 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 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 và
suy đoán 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 không rõ ràng.
4
Ngành khoa học nhận dạng tiếng nói là một trong những ngành có lĩnh vực
nghiên cứu khá rộng. Lĩnh vực nghiên cứu của nhận dạng tiếng nói có liên quan tới
nhiều ngành khác nhau như:
Ngôn ngữ học (linguistics): Như đã nói ở trên khi chúng ta phiên âm phát
âm thành các ký hiệu ngữ âm thì ý nghĩa của một phát âm không thay đổi. Vậy sự
hiểu biết về cấu trúc của ngôn ngữ, đặc biệt là ngữ âm và vai trò của chúng trong
việc tạo ra tiếng nói là rất quan trọng khi chúng ta xây dựng hệ thống nhận dạng
tiếng nói.
Sinh lý học (physiology) và tâm lý học ứng dụng (applied psychology):
Kiến thức về cấu tạo bộ máy phát âm của con người, về quá trình sản sinh tiếng
nói cũng như phân tích âm học và ngôn ngữ tại bộ não để con người hiểu được
tiếng nói.
Xử lý tín hiệu số (digital signal processing): Các kỹ thuật xử lý tín hiệu số
dùng phân tích tín hiệu tiếng nói nhằm trích rút ra đặc trưng của tiếng nói cho quá
trình nhận dạng.
Âm học (acoustic): Nghiên cứu mối quan hệ giữa tín hiệu tiếng nói và cơ
chế sinh lý học của bộ máy phát âm của con người.
Lý thuyết nhận dạng: Các thuật toán dùng để phân loại dữ liệu thành các tập
mẫu dựa trên sơ sở tính toán khoảng cách giữa các đặc điểm của mẫu.
Lý thuyết thông tin và khoa học máy tính (information and computer
theory): Các thuật toán dùng để tính toán mô hình tham số của các mô hình thống
kê, các thuật toán mã hóa và giải mã (lập trình động, thuật toán giải mã Viterbi) để
quá trình nhận dạng tốt nhất.
1.1.2. Phân loại nhận dạng tiếng nói
Nếu xét về độ dài các câu từ cần nhận dạng ta có thể phân thành nhận dạng từ
liên tục và nhận dạng từ rời rạc. Ngoài ra ta còn có thể phân loại theo sự phụ thuộc
hay độc lập người nói.
5
a. Nhận dạng từ liên tục và nhận dạng từ rời rạc
Nhận dạng từ liên tục là nhận dạng tiếng nói được phát liên tục trong một
chuỗi tín hiệu, như một câu nói hay một đoạn văn được đọc bởi người dùng. Các hệ
thống nhận dạng loại này rất phức tạp, nó phức tạp bởi lẽ quá trình xử lý tiếng nói
liên tục là khó khăn hơn nhiều so với từng từ riêng lẻ. Quá trình xử lý tiếng nói liên
tục còn phụ thuộc vào việc người dùng nói nhanh hay chậm. Nếu người dùng nói
không có khoảng nghỉ thì việc tách từ là khó khăn. Và chính kết quả của quá trình
tách từ này có ảnh hưởng rất lớn tới các bước tiếp theo trong quá trình nhận dạng.
Trái lại, trong nhận dạng từ rời rạc thì các phát âm được nhận dạng chỉ bao
gồm một từ, hay một nhóm nhỏ các từ mà ở đó có các khoảng nghỉ trước và sau khi
phát âm mỗi từ. Nhận dạng tiếng nói với các từ rời rạc thường được ứng dụng trong
các chương trình dạng câu lệnh- điều khiển. Quá trình nhận dạng tiếng nói với các
từ rời rạc là dễ hơn nhiều so với quá trình nhận dạng tiếng nói liên tục.
b. Nhận dạng phụ thuộc người nói và độc lập người nói
Một hệ thống nhận dạng tiếng nói phụ thuộc người nói là một hệ thống dường
như chỉ phục vụ cho một người, nó sẽ không hiểu người khác nói gì nếu như không
có quá trình huấn luyện lại từ đầu. Do đó nên hệ thống nhận dạng tiếng nói phụ
thuộc người nói khó được chấp nhận rộng rãi bởi lẽ là quá tốn kém nếu bỏ ra kinh
phí lớn chỉ để xây dựng hệ thống phục vụ cho một cá nhân, hay không phải ai cũng
có đủ khả năng kiến thức và sự kiên nhẫn để ngồi huấn luyện lại hệ thống. Rõ ràng
rằng hệ thống nhận dạng tiếng nói loại này khó được áp dụng vào thực tế nhất là nơi
công cộng.
Để khắc phục những nhược điểm trên thì hệ thống nhận dạng tiếng nói độc lập
người nói là ưu việt hơn nhiều. Hệ thống nhận dạng tiếng nói độc lập người nói là lý
tưởng hơn, có ứng dụng rộng rãi hơn và đáp ứng được hầu hết các yêu cầu đề ra với
một hệ thống nhận dạng tiếng nói. Tuy nhiên, việc xây dựng một hệ thống nhận
dạng độc lập người nói có độ chính xác cao cũng gặp không ít khó khăn.
Trong thực tế mỗi vùng miền có một giọng nói khác nhau, mỗi người có một
giọng nói khác nhau, thậm chí cùng một người giọng nói cũng khác nhau ở những
6
thời điểm khác nhau (Hình 1.2). Đó là yếu tố ảnh hưởng rất lớn đến mức độ chính
xác trong nhận dạng tiếng nói. Để khắc phục nhược điểm này, hệ thống nhận dạng
độc lập người nói cần được thiết kế phức tạp hơn với lượng dữ liệu huấn luyện lớn
và đa dạng hơn nhiều lần. Nhưng làm được yêu cầu trên là khó và độ chính xác
trong nhận dạng cũng chưa phải là tối ưu. Do đó, trong thực tế để giải quyết chất
lượng nhận dạng người ta thường kết hợp cả hai phương pháp trên và xây dựng hệ
thống nhận dạng bán độc lập người nói. Phương pháp này được thực hiện bằng cách
thu một số lượng lớn các mẫu khác nhau để huấn luyện. Khi sử dụng hệ thống sẽ
điều chỉnh cho phù hợp với người nói bằng cách để người dùng trải qua một quá
trình ngắn để huấn luyện hệ thống (ví dụ như phần mềm nhận dạng tiếng nói được
tích hợp trong Office của Microsoft).
Hình 1.1: Quá trình phát âm sẽ khác nhau tùy theo người nói
Hình 1.2: Mô hình nhận dạng tiếng nói bán độc lập người nói
7
1.1.3. Hệ thống nhận dạng tiếng nói tự động
Hệ thống nhận dạng tiếng nói tự động (Automatic Speech Recognition –
ASR) là hệ thống tự động chuyển đổi tiếng nói thành chữ viết hay thành một
trong các chức năng của thiết bị. Các thành phần của một hệ thống nhận dạng
tiếng nói bao gồm:
Rút trích đặc trưng tiếng nói: Biến đổi tiếng nói (tín hiệu âm thanh) thành
chuỗi các vector đặc trưng cho quá trình nhận dạng đồng thời thực hiện quá trình dò
tìm điểm đầu cuối của tiếng nói và lọc nhiễu.
Phân lớp và nhận dạng: Đây thực chất là quá trình dựa vào mô hình âm
thanh, từ điển phát âm và mô hình ngôn ngữ của hệ thống để nhận dạng.
Giải mã: Quá trình giải mã có thể đơn giản là quá trình xuất ra chuỗi văn bản
cần nhận dạng từ tín hiệu âm thanh vào hoặc đó là một quá trình phân tích chuỗi
nhận được ứng với việc thực hiện tác vụ nào đó.
Hình 1.3: Cấu trúc cơ bản của hệ thống ASR
Hiện nay ASR có một số ứng dụng trong các lĩnh vực như: Điều khiển bằng
tiếng nói (quay số điện thoại…), trong điện tử viễn thông (tổng đài điện thoại…).
8
1.2. Các nghiên cứu hiện thời về nhận dạng tiếng nói
1.2.1. Các nghiên cứu về nhận dạng tiếng nói ở nước ngoài
Nghiên cứu nhận dạng tiếng nói đã được bắt đầu từ cuối thập niên 40 của thế
kỉ 20, công nghệ nhận dạng tiếng nói đã có bước đi khá dài và cũng đã đạt một số
thành tựu đáng kể. Một số phần mềm nhận dạng tiếng nói đã có mặt trên thị trường
như các phần mềm nhận dạng tiếng nói đọc chính tả của IBM, phần mềm nhận dạng
nói thật hay nói dối, …Và đặc biệt là với ngôn ngữ tiếng Anh hiện nay đã tạo được
bộ cơ sở dữ liệu quý là: là bộ từ điển Beep và CSLU. Trong lĩnh vực nghiên cứu các
ứng dụng nhận dạng tiếng nói trong viễn thông thì Speech Works là hãng phần mềm
khá nổi tiếng. Hiện nay trên thế giới đã có nhiều trung tâm nghiên cứu về nhận dạng
tiếng nói như: CSLU, Bell Labs, IBM Research Center, Microsoft Research…
Nhìn chung môi trường thu âm tiếng nói có ảnh hưởng rất lớn đến độ chính
xác của quá trình nhận dạng. Ở Mỹ hệ thống nhận dạng các số của thẻ tín dụng ngân
hàng được đọc bởi người bán hàng tại các hệ thống cửa hàng bán lẻ có độ chính
xác là 98% trong khi cùng hệ thống này trong môi trường phòng thí nghiệm thì độ
chính xác lên tới 99,7%. Theo một đánh giá của Barbara s. (2001), high-
Performance Automatic Speech Recognition via Enhanced Front-end Analysis and
Acoustic Modeling [1] ta có bảng so sánh tỷ lệ lỗi nhận dạng của các hệ thống nhận
dạng tiếng Anh so với khả năng nhận dạng của con người như sau (bảng 1.1):
Bảng 1.1: So sánh tỷ lệ lỗi nhận dạng của con người và máy tính trong một số hệ
thống nhận dạng
Hệ thống Kích thước từ vựng Hệ thống nhận dạng Con
nhận dạng tiếng nói (Máy tính) người
Liên tục 10 0.72% 0.009%
Các chữ cái 26 5% 1%
Giọng nói tự nhiên 2000 36.7% 3.8%
Qua bảng trên ta có thể thấy rằng tỷ lệ lỗi nhận dạng của con người là thấp
hơn nhiều so với tỷ lệ lỗi nhận dạng bằng máy và tỷ lệ này càng được thể hiện rõ
hơn trong môi trường nhiều nhiễu.
9
Bên cạnh các hệ thống nhận dạng tiếng nói ngôn ngữ châu Âu thì các hệ thống
nhận dạng tiếng nói cũng đã được nghiên cứu ở Trung Quốc, Nhật Bản, Thái Lan.
Nhìn chung, đã có nhiều nghiên cứu nhận dạng tiếng nói tiếng Trung đã được thực
hiện, một số hệ thống nhận dạng tiếng trung kích thước lớn đã được xây dựng. Còn
với ngôn ngữ Thái Lan, các nghiên cứu chủ yếu ở mức độ nhận dạng từ rời rạc. Tuy
nhiên, với hệ thống nhận dạng từ liên tục thì hệ thống nhận dạng 10 chữ số Thái
cũng đã đạt độ chính xác 96,89% .
1.2.2. Các nghiên cứu về nhận dạng tiếng nói tiếng Việt
Nhận dạng tiếng nói tiếng Việt đi sau thế giới rất lâu và những kết quả đạt
được còn rất hạn chế. Cho tới thời điểm hiện nay, các nghiên cứu nhận dạng tiếng
nói tiếng Việt còn rất ít và tập trung nhiều vào nghiên cứu nhận dạng từ rời rạc.
Hệ thống nhận dạng tiếng nói tiếng Việt giống như hệ thống nhận dạng các
ngôn ngữ có thanh điệu khác, bao gồm hai quá trình nhận dạng song song đó là:
nhận dạng các từ không có thanh điệu và nhận dạng thanh điệu rồi tổng hợp để đưa
ra quyết định. Hình 1.4 mô tả một hệ thống nhận dạng ngôn ngữ có thanh điệu nói
chung và tiếng Việt nói riêng:
Hình 1.4: Cấu trúc hệ thống nhận dạng ngôn ngữ có thanh điệu
Nghiên cứu về nhận dạng tiếng Việt được thực hiện đầu tiên Nhóm nghiên
cứu của PGS.TS Lương Chi Mai - Viện công nghệ thông tin. Trong những đã qua
Nhóm nghiên cứu đã đưa ra nhiều đề xuất và những kết quả quan trọng trong lĩnh
vực nhận dạng tiếng nói tiếng Việt trên các bài báo khoa học như: “Về xử lý tiếng
Việt trong công nghệ thông tin”,…
Ngoài ra, nghiên cứu của tiến sĩ Nguyễn Thành Phúc đã đưa ra hệ thống nhận
dạng tiếng Việt với mạng Neural và đưa ra mô hình phiên âm tiếng Việt.
10
Vào năm 2005, nhóm BK02 Đại học Bách khoa thành phố Hồ Chí Minh đã
xây dựng chương trình nhận dạng tiếng nói tiếng việt với mã nguồn mở của
Microsoft tuy nhiên kết quả còn nhiều hạn chế.
Nhìn chung, những nghiên cứu về nhận dạng tiếng nói tiếng Việt còn rất ít và
điều quan trọng nhất là chúng ta chưa có một bộ từ điển và bộ cơ sở dữ liệu tốt cho
tiếng Việt.
1.3. Các hướng tiếp cận nhận dạng tiếng nói
Nghiên cứu về nhận dạng tiếng nói được bắt đầu vào những năm 40 của thế kỉ
20 và đã đạt được những thành tựu đáng kể. Các nghiên cứu nhận dạng tiếng nói
dựa trên 3 hướng tiếp cận chính: Tiếp cận Âm học, tiếp cận Nhận dạng mẫu thống
kê (chủ yếu dựa trên mô hình Markov ẩn), tiếp cận Trí tuệ nhân tạo.
Hướng tiếp cận Âm học: Dựa vào các đặc điểm âm học được rút ra từ phổ âm
thanh. Tuy nhiên kết quả của hướng tiếp cận này còn thấp vì trong thực tế các đặc
trưng âm học có sự biến động rất lớn. Hơn nữa hướng tiếp cận này đòi hỏi tri thức
rất đầy đủ về âm học. Chính vì các yếu tố trên nên hướng tiếp cận này ít được lựa
chọn trong nghiên cứu nhận dạng tiếng nói.
Hướng tiếp cận Nhận dạng mẫu thống kê: Sử dụng các phương pháp máy
học dựa trên thống kê để học và rút ra mẫu tham khảo (từ điển) từ lượng dữ liệu
lớn. Sau đó, các mẫu cần nhận dạng được rút trích đặc trưng và phân vào lớp mà
xác suất mẫu cần nhận dạng thuộc vào lớp đó là lớn nhất. Hướng này đang được sử
dụng nhiều (chủ yếu là dựa vào mô hình Markov ẩn) và đã đạt được nhiều thành
công như trong nhận dạng tiếng nói ngôn ngữ Tiếng Anh, tiếng Trung Quốc.
Hướng tiếp cận Trí tuệ nhân tạo: Là sự kết hợp của cả hai hướng tiếp cận âm
học và tiếp cận nhận dạng mẫu thống kê. Hướng tiếp cận này kết hợp được cả tri
thức của chuyên gia và phương pháp nhận dạng mẫu thống kê. Tuy nhiên, hiện nay
phương pháp này chưa được áp dụng nhiều trong nghiên cứu nhận dạng tiếng nói vì
nó đòi hỏi một tri thức rất lớn. Đây sẽ là hướng tiếp cận trong tương lai của nhận
dạng tiếng nói.
11
Với mục đích nghiên cứu các phương pháp nhận dạng tiếng nói trên thế giới
hiện nay để áp dụng vào bài toán nhận dạng tiếng nói ngôn ngữ tiếng Việt, phần
tiếp theo của luận văn này sẽ đi sâu vào phân tích mô hình Markov ẩn để xây dựng
hệ thống nhận dạng tiếng nói ngôn ngữ tiếng Việt. Mô hình Markov ẩn được lựa
chọn bởi những lý do sau: Đây là mô hình được sử dụng rộng rãi trên thế giới trong
lĩnh vực nhận dạng nói chung và nhận dạng tiếng nói nói riêng. Với những thành
quả đã đạt được trên thế giới trong lĩnh vực nhận dạng tiếng nói, chúng ta có thể
thừa hưởng những thành quả này để áp dụng vào bài toán nhận dạng tiếng nói ngôn
ngữ tiếng Việt nhất là hiện nay ở nước ta chưa có nhiều nghiên cứu về nhận dạng
tiếng nói.
1.4. Những khó khăn trong nhận dạng tiếng nói
Qua các nghiên cứu về nhận dạng tiếng nói ngôn ngữ nước ngoài và Việt
Nam, ta có thể rút ra được những khó khăn cơ bản trong việc xây dựng một hệ
thống nhận dạng tiếng nói như sau:
Điều kiện môi trường: Tiếng nói có chất lượng thấp (nhiều nhiễu,…) do môi
trường thu âm, do thiết bị thu âm… là vấn đề rất khó giải quyết triệt để cho các hệ
thống nhận dạng tiếng nói. Trong môi trường phòng thí nghiệm, kết quả nhận dạng
có độ chính xác cao hơn so với môi trường bên ngoài, đặc biệt là môi trường có
nhiều nhiễu. Theo Olivier S. (1995), tỷ lệ lỗi của hệ thống nhận dạng tiếng nói với
tiếng nói có tỉ số tín hiệu trên nhiễu SNR > 40dB (SNR-Signal ti Noise Ratio)
thường tăng gấp nhiều lần (có thể lên tới 10 lần) so với tiếng nói có SNR>18dB.
Sự phụ thuộc người nói: Như đã nói ở trên, hệ thống nhận dạng tiếng nói có
thể độc lập người nói (speaker independent) hoặc phụ thuộc người nói (speaker
dependent). Để xây dựng một hệ thống nhận dạng độc lập người nói dành cho nhiều
người là khó khăn hơn nhiều so với việc xây dựng hệ thống nhận dạng tiếng nói chỉ
dành riêng cho từng người. Sự khó khăn này là do mỗi vùng miền, mỗi người có
một giọng nói khác nhau, ngay bản thân một người nói tiếng nói của họ cũng không
giống nhau tại các thời điểm khác nhau. Theo Tebelskis j.(1995), thì tỉ lệ lỗi nhận
dạng của hệ thống nhận dạng tiếng nói độc lập người nói thường cao gấp 3 đến 5
lần so với hệ thống nhận dạng tiếng nói phụ thuộc người nói.
12
Kích thước của từ điển nhận dạng: Kích thước bộ từ điển của hệ thống nhận
dạng càng lớn thì tỷ lệ hệ thống nhận dạng nhầm giữa các từ, các câu càng cao. Đặc
biệt, tiếng Việt là một ngôn ngữ rất phong phú về cách phát âm nên để xây dựng
một bộ từ điển lớn cho hệ thống tiếng nói tiếng Việt gặp rất nhiều khó khăn.
Sự biến đổi trong lời nói: Tốc độ của phát âm cũng ảnh hưởng tới độ chính
xác của hệ thống nhận dạng. Với những từ được phát âm rời rạc thì việc xây dựng
hệ thống nhận dạng dễ dàng và có độ chính xác cao hơn so với những từ phát âm
liên tục. Con người có thể hiểu được những tiếng cười, tiếng ho, tiếng “à, ơ” trong
lời nói, tuy nhiên đê máy hiểu được là vô cùng khó khăn.
Nhìn chung độ chính xác của hệ thống nhận dạng tiếng nói được đánh giá trên
cơ sở mức từ và mức câu. Để đánh giá độ chính xác của hệ thống nhận dạng ở mức
từ ta dùng công thức sau:
Trong đó:
N: Là tổng số từ cần nhận dạng.
S: Số từ bị nhận dạng nhầm (Substitution).
D: Số từ bị xóa (Delete).
I: Số từ bị chèn (Insertion).
Với hệ thống nhận dạng liên tục, mức câu độ chính xác được đánh giá theo
công thức:
Trong đó:
N: Tổng số câu cần nhận dạng.
S: Số câu nhận dạng sai.
13
1.5. Xử lý tiếng nói
1.5.1. Khái niệm xử lý tiếng nói
Tín hiệu (signal) là các sự vật, hiện tượng có mang hoặc chứa một thông tin
nào đó mà chúng ta có thể hiểu, được quy ước trước. Hầu hết các tín hiệu trong thế
giới thực đều ở dạng liên tục (tín hiệu tương tự), nó hết sức phức tạp, thiếu độ chính
xác đối với máy tính. Do đó, để máy tính có thể hiểu được các loại tín hiệu chúng ta
thường phải số hóa các loại tín hiệu này.
Tiếng nói cũng là một dạng tín hiệu tương tự, do đó để máy tính cũng như các
thiết bị có thể hiểu tín hiệu tiếng nói chúng ta cũng cần phải số hóa nó.
1.5.2. Kỹ thuật lấy mẫu tín hiệu
Hàm lấy mẫu là cầu nối giữa các hệ thống rời rạc và các hệ thống liên tục. nó
còn được gọi là: hàm Dirac delta, hàm sàng lọc,…
Xs(t)=
Đối với máy tính, có thể hiểu lấy mẫu đơn giản chỉ là việc cứ theo một chu kỳ
thời gian (với tín hiệu tiếng nói) ta đo tín hiệu một lần. Quá trình này sẽ tạo ra một
chuỗi các số biểu diễn cho tín hiệu và có thể xử lý được bởi máy tính.
Hình 1.5. Ví dụ về lấy mẫu tín hiệu F(t) trên miền thời gian
1.5.3. Cấu trúc bộ lọc tín hiệu
Trong xử lý tiếng nói bộ lọc có vai trò rất quan trọng, chúng được dùng với
hai mục đích chính:
14
Tách các tín hiệu cần thiết: Các tín hiệu ban đầu thường chứa đựng các nhiễu
hoặc các tín hiệu không mong muốn khác, các nhiễu này làm giảm đáng kể chất
lượng của tín hiệu. Vì vậy, cần phải tách riêng các tín hiệu cần thiết và loại bỏ các
tín hiệu nhiễu, dư thừa.
Khôi phục các tín hiệu bị biến dạng: Có một số trường hợp vì một nguyên
nhân nào đó (thường là nguyên nhân liên quan tới các thiết bị) sẽ làm cho các tín
hiệu vào bị méo mó. Yếu tố này sẽ ảnh hưởng tới chất lượng nhận dạng vì vậy cần
phải căn chỉnh lại để tăng chất lượng của tín hiệu số.
Trong thực tế kỹ thuật, để xử lý tiếng nói người ta thường dùng hai bộ lọc
tuyến tính sau:
a. Bộ lọc đáp ứng xung hữu hạn (Finite Impulse Response –FIR)
Bộ lọc đáp ứng xung hữu hạn là hệ có tín hiệu ra chỉ phục thuộc vào tín hiệu
vào nên hệ này còn được gọi là mạch không truy hồi hay mạch không đệ quy (non –
recursive).
Bộ lọc đáp ứng xung hữu hạn có công thức như sau:
Hình 1.6. Minh họa hoạt động của bộ lọc FIR
b. Bộ lọc đáp ứng xung vô hạn (Infinite Impulse Response –IIR)
Với bộ lọc đáp ứng xung vô hạn, hệ xử lý có đáp ứng xung có độ dài vô hạn
hay đáp ứng xung vô hạn. Tín hiệu ra không chỉ phụ thuộc vào tín hiệu vào mà còn
phụ thuộc vào chính quá khứ của tín hiệu ra, vì vậy chúng còn được gọi là các mạch
có truy hồi hay đệ qui.
15
Bộ lọc đáp ứng xung vô hạn có công thức như sau:
Hình 1.7. Minh họa hoạt động của bộ lọc IIR
1.5.4. Kỹ thuật dò tìm điểm cuối
Như đã nói ở trên, tín hiệu tiếng nói được lấy mẫu theo chu kì, tạo nên các
khung tín hiệu tiếng nói. Tuy nhiên, không phải tất cả các khung đều là của tín hiệu
tiếng nói. Vì vậy, dò tìm điểm cuối là một xử lý cố gắng tìm ra chính xác khi nào
người ta bắt đầu và kết thúc lời nói. Nó còn được dùng để xác định khi mà người ta
thực sự không nói gì (silence), hay nói những điều không mong đợi (bộ từ vựng
trong hệ thống nhận dạng không có từ đó). Khi đó, dò tìm điểm cuối sẽ giảm số
lượng khung không cần thiết đối với hệ thống nhận dạng. Tuy nhiên, dò tìm điểm
cuối là rất khó khăn, bởi vì có sự tồn tại của tiếng ồn nền, tiếng nói nền và sự liên
kết của các âm tiết tạo nên sự liên tục khó phân biệt đầu và cuối của câu, từ.
Để dò tìm điểm cuối ta thực hiện qua ba bước sau, sau mỗi bước chất lượng
của việc dò tìm điểm cuối sẽ được tốt hơn. Việc dò tìm điểm cuối dựa trên mức
năng lượng của tín hiệu được đặc trưng bằng:
(xem mục 3.2.2.2.)
Bước 1. Dò tìm thô: dựa trên kĩ thuật năng lượng ít chính xác nhất. Nó tìm
một đoạn mà mức năng lượng cao hơn đoạn trước đó và cho một số khung là điểm
bắt đầu (thường là 40 khung) trước khi gặp khung mức năng lượng cao hơn. Và một
16
số lượng khung (khoảng 20 khung) khác qua (không cần kiểm tra bất kì khung nào)
được cho là điểm cuối.
Bước 2. Dò tìm tinh: Bước này sẽ kiểm tra mức năng lượng của tiếng nói, nó
sẽ lọc ra điểm đầu và điểm cuối bằng cách cho rằng mức năng lượng của tiếng nói
cao hơn mức năng lượng của độ ồn nền ở một ngưỡng nào đó.
Bước 3. Kỹ thuật VUS (Voice, Unvoice and Silence): Kỹ thuật này sẽ phân
loại các khung thành đoạn vô thanh, hữu thanh hay khoảng lặng. Việc phân loại này
dựa trên sự phân bố năng lượng trong khung, phổ bị biến dạng và sự phân loại
khung trước đó. Kỹ thuật này giúp loại bỏ những phần tín hiệu không phải của tiếng
nói như: tiếng cười, tiếng thở hay âm thanh nền như tiếng xe cộ…
Hình 1.8. Dò tìm điểm cuối dựa trên mức năng lượng
1.5.5. Kỹ thuật rút trích đặc trưng
Đối với bất kì hệ thống nhận dạng nào (tiếng nói hay hình ảnh) việc rút trích
đặc trưng là rất quan trọng. Tín hiệu tiếng nói được thu vào vốn có kích thước lớn,
vệc rút trích ra các vector đặc trưng cần thiết sẽ làm giảm số lượng dữ liệu trong
quá trình huấn luyện và nhận dạng của hệ thống nhận dạng và tốc độ của hệ thống
sẽ được nâng cao. Ngoài ra, việc rút trích đặc trưng còn làm rõ sự khác biệt giữa
tiếng này với tiếng khác, làm mờ đi sự khác biệt của cùng một tiếng trong những
lần phát âm khác nhau.
17
Hình 1.9. Sơ đồ rút trích vevtor đặc trưng tổng quát
Các đặc trưng được trích ra phải thỏa mãn những điều kiện sau:
Nhỏ hơn rất nhiều so với tín hiệu gốc
Vẫn giữ lại những đặc điểm quan trọng của tín hiệu ban đầu.
Có nhiều dạng đặc trưng của tín hiệu tiếng nói, có thể chia thành 3 nhóm như sau:
Nhóm 1: Đặc trưng được rút ra nhờ mô phỏng theo mô hình bộ máy phát âm
của con người. Các đặc trưng này dựa vào phương pháp dự báo tuyến tính để rút ra
đặc trưng. Để rút trích ra đặc trưng dạng này ta thường dùng các phương pháp: LPC
(Linear Predictive coding) hay PLP (Perceptional Linear Prediction).
Nhóm 2: Đặc trưng rút ra dựa trên khả năng cảm nhận âm thính giác của con
người. Các đặc trưng của nhóm này sử dụng phương pháp phân tích Cepstral (sử
dụng các phép biến đổi Fourier ngược của Logarit phổ năng lượng của một tín hiệu)
và phổ âm (Spectral) còn gọi là phương pháp dãy bộ lọc. Để trích rút đặc trưng
dạng này ta thường dùng phương pháp MFCC (Mel Frequency Cepstral
Coeficients).
18
Nhóm 3: Dựa trên các đặc trưng về âm học như: cao độ, ngữ điệu,… Các đặc
trưng nhóm này ít được dùng cho nhận dạng âm tiết mà chủ yếu sử dụng cho nhận
dạng tâm trạng người nói,…
Qua những phân tích trên ta có thể thấy các dạng đặc trưng ở nhóm 1 và nhóm
2 có nhiều ưu điểm hơn cho việc nhận dạng tiếng nói. Điều này giải thích tại sao hai
phương pháp MFCC và PLP lại được sử dụng rộng rãi trong các hệ thống nhận
dạng tiếng nói hiện tại trên thế giới.
Phần tiếp theo, sẽ giới thiệu phương pháp trích chọn đặc trưng MFCC.
1.5.6. Phương pháp tính hệ số MFCC
Với phương pháp rút trích đặc trưng bằng cách tính các hệ số MFCC ta có các
bước tính được thể hiện như trong hình sau (hình 3.6).
Hình 1.10. Các bước xử lý tính hệ số MFCC
a. Làm rõ tín hiệu
Mục đích của việc làm rõ tín hiệu là tăng cường tín hiệu, làm nổi rõ các đặc
trưng của nó. Bộ làm rõ tín hiệu thường là bộ lọc thông cao. Như tên gọi của nó, bộ
lọc thông cao giữ lại các thành phần có tần số cao và loại bỏ đi các thành phần có
tần số thấp. Trong tín hiệu tiếng nói, các thành phần có tần số cao mang năng lượng
19
ít hơn nhiều so với những thành phần có tần số thấp, nhưng những vùng này lại lưu
giữ một phần tín hiệu quan trọng của tiếng nói. Để quá trình nhận dạng được tốt
hơn, chúng ta sẽ tăng cường tín hiệu trong vùng có tần số cao, làm cân bằng tín hiệu
giữa các vùng. Người ta còn gọi quá trình này là làm phẳng tín hiệu tiếng nói. Quá
trình lọc tín hiệu tiếng nói được thực hiện như sau:
Với mỗi giá trị s(n) trong chuỗi dữ liệu đầu vào S ={ s1, s2, …,sk}, áp dụng
phương trình sai phân:
Trong đó:
={ , ,…, }: Là chuỗi tín hiệu đã được xử lý tương ứng với
chuỗi đầu vào S ={ s1, s2, …,sk}.
n: Xác định mẫu tín hiệu ở thời điểm n
a: Là hệ số làm nổi, a thường nằm trong đoạn [0.95; 0.97], hệ số a càng cao thì
thành phần tín hiệu có tần số thấp bị loại đi càng nhiều.
Hình 1.11. Sóng âm của chữ “ANH” trước khi làm phẳng (bên trái) và sau
khi làm phẳng (Bên phải)
b. Tạo khung tín hiệu
Tín hiệu tiếng nói là loại tín hiệu luôn biến thiên theo thời gian, tuy nhiên
trong khoảng thời gian 10-20ms, tín hiệu tiếng nói được coi là tương đối ổn định.
Do đó tín hiệu tiếng nói thường được chia thành các khung kích thước 20-30ms với
vùng chồng lên nhau là 10-15ms.
20
Hình 1.12. Phân đoạn tín hiệu tiếng nói thành các khung có sự chồng lấp
c. Lấy cửa sổ
Để giảm thiểu sự gián đoạn tín hiệu ở đầu và cuối của mỗi khung ta sẽ lấy cửa
sổ tín hiệu ứng với mỗi khung. Một dãy tín hiệu con được lấy ra từ một tín hiệu dài
hơn hoặc dài vô hạn x(n) gọi là một cửa sổ tín hiệu.
Trong xử lý tiếng nói cũng như các tín hiệu số khác, các cửa sổ thường dùng
được biểu diễn thông qua cửa sổ Hamming tổng quát:
Với cửa sổ Hamming tổng quát, tùy thuộc vào giá trị của α ta sẽ có các cửa sổ
khác nhau:
Với α= 0.54 ta có cửa sổ Hamming, đây là loại cửa sổ thường được dùng
nhất trong việc lấy cửa sổ đối với tín hiệu tiếng nói.
Hình 1.13. Cửa sổ Hamming
21
Với α=0.5 ta có cửa sổ Hanning
Hình 1.14. Cửa sổ Hanning
Với α=1 ta có cửa sổ hình chữ nhật
Hình 1.15. Cửa sổ hình chữ nhật
d. DFT – Discete Fourier Transform
Tại bước này, với mỗi khung tín hiệu, biến đổi Fourier được áp dụng để
chuyển về miền tần số. Công việc tính toán được thực hiện bằng thuật toán FFT
(Fast Fourier Trasform).
22
e. Lọc theo thang tần số Mel (Mel-Frequency bandpass filter)
Các bộ lọc số được áp dụng để lọc các tín hiệu theo các dải tần số khác nhau.
Nó được thực hiện theo một hàm phi tuyến, thông thường là hàm số Mel :
Mel (f) = 2595. )
f. Logarit giá trị năng lượng (logarit of filter energies)
Các giá trị năng lượng thu được tại mỗi kênh lọc được lấy giá trị logarit
g. DCT (Discrete Cosin Transform)
Do giọng nói phát âm bởi con người có phổ khá trơn trên miền tần số, do vậy
các giá trị năng lượng của các bộ lọc gần nhau có sự tương quan khá gần. Bước xử
lý này biến đổi các giá trị năng lượng thành các hệ số ít tương quan với nhau hơn.
Các hệ số này được gọi là hệ số Cepstral.
Ci=
Trong đó N là số kênh lọc, là giá trị logarit năng lượng của mạch lọc thứ j,
i là bậc của hệ số Cepstral.
h. Chỉnh các giá trị Cepstral
Giá trị Cepstral bậc cao thường có giá trị rất thấp so với các giá trị Cepstral
bậc thấp. Sự khác biệt này gây ra khó khăn cho việc mô hình hóa dữ liệu như khi
dùng hàm mật độ xác suất Gauss. Hệ số Cepstral được điều chỉnh lại theo công thức
Sau bước này, ta thu được các giá trị MFCC.
i. Tính các giá trị delta MFCC
Các giá trị delta của các hệ số MFCC được tính toán nhằm phản ánh sự biến
thiên tiếng nói theo thời gian. Các giá trị delta được tính dựa trên các giá trị MFCC
của các khung tín hiệu lân cận. Ngoài ra các giá trị delta của delta cũng được tính
toán từ các giá trị delta.
23
1.6. Sơ lược về ngôn ngữ tiếng Việt
1.6.1. Giới thiệu về âm tiết
Khi giao tiếp, con người phát ra những chuỗi âm thanh nhất định, ta gọi đó là
dòng ngữ lưu. Trong từng dòng ngữ lưu, nếu đem chia cắt chúng ra ta sẽ được
những đơn vị cấu thành nhỏ hơn, đó là âm tiết, âm tố và âm vị. Trong đó, âm tiết là
đơn vị phân chia tự nhiên nhất trong lời nói, là đơn vị phát âm nhỏ nhất. Mỗi âm tiết
là một tiếng.
Ví dụ: “Nguyễn Thanh Huyền” có 3 âm tiết.
Về mặt sinh lý – vật lý, âm tiết được định nghĩa là một đơn vị mà khi phát âm
được đặc trưng bởi sự căng lên và trùng xuống của cơ thịt trong bộ máy phát âm.
Trong mỗi âm tiết, chỉ có một âm tố có khả năng tạo thành âm tiết (gọi là âm
tố âm tiết tính), còn lại là các yếu tố đi kèm, không tự mình tạo thành âm tiết được.
Âm tố âm tiết tính thường được được phân bố ở trung tâm, làm hạt nhân âm tiết. Đó
thường là các nguyên âm. Điều này dẫn tới hệ quả là một âm tiết khi được phát ra
thì phần năng lượng tập trung nhiều nhất ở phần giữa âm (có biên độ cao), đi về đầu
và cuối âm tiết thì năng lượng giảm dần.
Hình 3.1: Minh họa sự giảm dần của năng lượng.
1.6.2. Một số đặc điểm của âm tiết tiếng Việt
a. Là ngôn ngữ có kết cấu âm tiết tính
Một đặc điểm của tiếng Việt là ranh giới của nó và ranh giới của hình vị (đơn
24
vị nhỏ nhất có nghĩa) luôn luôn trùng nhau, nói cách khác, một âm tiết là một hình
thức biểu đạt của một hình vị.
Là vỏ ngữ âm của một hình vị hay một từ đơn nên mỗi âm tiết tiếng Việt
bao giờ cũng tương ứng với một ý nghĩa nhất định. Chính vì vậy, việc phá vỡ
hay xê dịch vị trí của các âm vị trong một đơn vị âm tiết là điều khó có thể xảy
ra. Nói cách khác, cấu trúc của âm tiết tiếng Việt là một cấu trúc chặt chẽ. Vì
thế, từ “ cá canh ” sẽ không bị nối âm thành “ các anh” , “ cảm ơn ” sẽ không
đọc thành “ cả mơn ”….
Các đặc điểm trên là chung cho một số ngôn ngữ như tiếng Việt, tiếng Hoa,
tiếng Thái…Căn cứ vào đặc điểm đó, người ta gọi các ngôn ngữ này là ngôn ngữ có
kết cấu âm tiết tính.
b. Mỗi âm tiết có thanh điệu riêng
Thanh điệu là một tập hợp những đặc trưng có liên quan đến độ cao (phụ
thuộc tần số rung động của dây thanh âm) của thanh cơ bản của âm tiết. Nó được
thể hiện trên tất cả những bộ phận hữu thanh trong âm tiết, nhất là các âm đoạn
nguyên âm tính (nguyên âm và bán nguyên âm) và các đoạn phụ âm mũi, dù là thủy
âm hay chung âm.
Thanh điệu có thể phân tích thành hai thành phần thường xuyên kết hợp với
nhau : âm vực (độ cao của thanh cơ bản) và âm điệu (hướng chuyển biến cao độ (độ
tăng giảm của tần số)) trong quá trình thể hiện. Vì vậy, mỗi thanh có thể được miêu
tả như một sự kết hợp của hai thông số nói trên.
Hệ thống thanh điệu của tiếng Việt có 6 âm tiết : Thanh ngang (thanh không
dấu), thanh huyền, thanh ngã, thanh hỏi, thanh sắc, thanh nặng.
c. Âm tiết có cấu trúc chặt chẽ và ổn định
Trong tiếng Việt, âm tiết có cấu trúc chặt chẽ, mỗi âm tố (âm vị) có một vị trí
nhất định trong âm tiết, tạo thành cấu trúc của một âm tiết như sau:
Âm tiết = Phụ âm đầu + Vần
Trong đó
Vần = Âm đệm + Âm chính + Âm cuối
Phụ âm đầu (thủy âm): Là yếu tố mở đầu âm tiết. Nó mang tính độc lập do
25
không tham gia vào việc đắp đổi về trường độ giữa các yếu tố bên trong âm tiết.
Các âm tiết tiếng Việt khi phát âm về mặt cấu âm bao giờ cũng mở đầu bằng một
động tác khép lại, dẫn đến chỗ cản trở không khí hoàn toàn hoặc bộ phận. Đó là
cách phát âm của các âm tiết như : bút, bát…Còn những âm tiết như ăn, uống…mặc
dù trên chữ viết, phụ âm vắng mặt, nhưng thực tế chúng cũng phải bắt đầu bằng một
động tác khép tín khe thanh, sau đó mở ra đột ngột gây nên một tiếng động.
Âm đệm : Đóng vai trò là âm lướt trong kết cấu âm tiết. Âm đệm ảnh hưởng
đến cách mở đầu của âm tiết (bên cạnh phụ âm đầu). Ví dụ chữ “ toàn ” khi phát
âm có hiện tượng tròn môi do tác động của âm điệu /-u-/, còn chữ “ tàn ” thì không
có hiện tượng tròn môi do không có âm đệm.
Âm chính : Là nguyên âm âm tiết tính trong âm tiết. Âm tiết chính có thể là
một nguyên âm đơn hay nguyên âm đôi.
Âm cuối : Là yếu tố kết thúc âm tiết. Các âm tiết tiếng Việt thường đối lập
bằng những cách kết thúc khác nhau. Một số âm tiết kết thúc bằng sự kéo dài và giữ
nguyên. Ví dụ : mới, đưa, cho…Số âm tiết khác kết thúc bằng cách biến đổi âm sắc
của âm tiết ở phần cuối do sự đóng lại của các âm cuối tham gia, ví dụ như : một,
mai, màng…Trong trường hợp đầu, ta có âm cuối là âm vị /zero/, trong trường hợp
sau ta có âm cuối là những âm vị bán nguyên âm hoặc phụ âm.
Thứ tự các loại hình âm vị trong cấu trúc của âm tiết như trên được giữ
nguyên không thay đổi cho mỗi âm tiết.
1.6.3. Lý thuyết về âm vị
Âm vị là đơn vị nhỏ nhất của ngữ âm, có mang chức năng phân biệt nghĩa và
nhận diện từ. Ngoài ra, nó cũng có thể được hiểu là đơn vị nhỏ nhất của cơ cấu âm
thanh ngôn ngữ.
a. Chức năng của âm vị
Các âm vị trên nguyên tắc phải có sự khác nhau, ít nhất về một đặc trưng
nào đó. Chính nhờ sự khác biệt này mà các âm vị có thể tạo ra sự khác biệt về
hình thức âm thanh của các hình vị và từ, tạo nên những tín hiệu khác biệt đối
với sự thụ cảm của con người. Theo đó, âm vị có 2 chức năng cơ bản : chức năng
khu biệt vỏ âm thanh của hình vị và từ, và chức năng cấu tạo nên những thành tố
26
của đơn vị có nghĩa.
b. Tách âm vị và xác định âm vị trên chuỗi sóng âm
Số lượng từ trong mỗi ngôn ngữ đều rất lớn. Xây dựng hệ nhận dạng theo từ
có khả năng phân biệt số lượng từ lớn đó quả là một thách thức. Thay vào đó, người
ta nghĩ ra cách xây dựng hệ nhận dạng dựa trên hướng tiếp cận âm vị. Theo đó, chỉ
cần nhận dạng khoảng vài chục âm vị sẽ có thể nhận dạng được toàn bộ từ của một
ngôn ngữ (theo thống kê, số âm vị trong một ngôn ngữ dao động trong khoảng 20
đến 60). Và đây cũng chính là hướng tiếp cận đúng đắn cho nhận dạng tiếng nói
tiếng Việt. Tuy nhiên, người ta lại gặp một khó khăn khác, đó là tách âm vị và xác
định âm vị trên chuỗi sóng âm : Cho một dãy tín hiệu tiếng nói đã thu sẵn. Nhiệm
vụ của chúng ta là tìm ra ranh giới của tất cả các âm vị và cho biết âm vị đó là âm vị
gì. Chưa nói đến khả năng thực hiện công việc đó tự động bằng máy mà ngay cả
con người vẫn có thể bị nhầm lẫn khi tách âm vị bằng tay do ranh giới giữa các âm
vị là mập mờ hay chồng lấp lên nhau. Cả khi 2 âm vị thuộc 2 âm tiết khác nhau, nếu
đứng kề nhau vẫn có thể xảy ra sự chồng lấp. Vì thế, công việc tách âm vị trên
chuỗi sóng âm chỉ mang tính tương đối.
Trong một số nghiên cứu nhận dạng tiếng Việt, một phương pháp tách và nhận
dạng âm vị tự động dùng mô hình HMM kết hợp mô hình ngôn ngữ để nhận dạng
âm vị Triphone (âm vị mang 3 thông tin, thông tin về nó, thông tin về âm vị đứng
trước, âm vị đứng sau) được nêu ra. Phương pháp này cơ bản giải quyết tốt công
việc học và tách âm vị một cách tự động bằng máy. Kết quả tách âm vị được dùng
cho quá trình nhận dạng tiếng nói tiếng Việt và đã thu được kết quả khả quan.
27
CHƯƠNG 2
TỔNG QUAN VỀ MÔ HÌNH MẠNG MARKOV ẨN
2.1. Mô hình Markov ẩn
Mô hình Markov được ứng dụng nhiều trong lĩnh vực nhận dạng giọng nói,
trong lĩnh vực sinh học như nhận dạng gene hoặc phân loại protein; xử lý tín hiệu,
xử lý hình ảnh và các ứng dụng khác liên quan đến chuỗi chuyển tiếp hoặc kết hợp
các thành phần, dữ kiện. Trong lĩnh vực điện, mô hình Markov được sử dụng như là
1 công cụ dự báo giá điện năng với các dữ liệu liên quan. Một trong những thông số
đặc trưng của mô hình Markov là các trạng thái ‘state’. Tùy thuộc vào việc xây
dựng mô hình Markov với các đối tượng khác nhau thì sẽ có các ‘state’ khác nhau.
Mô hình Markov có những hạn chế trong nhiều ứng dụng như các giá trị chuyển
‘state’ là các giá trị áp đặt sẵn, không thay đổi trong khi đối tượng, dữ liệu quan sát
luôn biến đổi theo thời gian. Để khắc phục tình trạng này, chúng ta sử dụng mô hình
Hidden Markov (Hidden Markov Model – HMM).
Mô hình Markov ẩn (Hidden Markov Model –HMM) là mô hình thống kê
dùng để mô hình hóa các loại tín hiệu theo thời gian, với các tham số không biết
trước và nhiệm vụ là xác định các tham số ẩn từ các tham số quan sát được, dựa trên
sự thừa nhận này. Các tham số của mô hình được rút ra sau đó có thể sử dụng để
thực hiện các phân tích kế tiếp, ví dụ cho các ứng dụng nhận dạng mẫu. Trong một
mô hình Markov điển hình, trạng thái được quan sát trực tiếp bởi người quan sát, và
vì vậy các xác suất chuyển tiếp trạng thái là các tham số duy nhất được sử dụng rất
thành công trong những ứng dụng về nhận dạng đặc biệt là nhận dạng tiếng nói.
Cấu trúc bên trong của HMM không phải dựa vào các kiến thức về tiếng nói, nhưng
nó lại có khả năng mô hình hóa tiếng nói tiếng nói theo thời gian dựa trên cấu trúc
được ràng buộc bằng toán học chặt chẽ. Thực tế nghiên cứu trong và ngoài nước
cho thấy, trong lĩnh vực nhận dạng tiếng nói mô hình Markov ẩn cho kết quả nhận
dạng tốt hơn các phương phápkhác.
Mô hình Markov ẩn thêm vào các đầu ra: mỗi trạng thái có xác suất phân bổ
trên các biểu hiện đầu ra có thể. Vì vậy, nhìn vào dãy của các biểu hiện được sinh ra
bởi HMM không trực tiếp chỉ ra dãy các trạng thái.
28
Hình 2.1: Minh họa mô hình Markov trong nhận dạng tiếng nói với 5 trạng thái và chèn sp
Mô hình Markov ẩn là kết quả mở rộng của mô hình Markov, ở đó
mỗi trạng thái S1, S2,…, SN trong mô hình Markov được gắn với một hàm phát xạ
quan sát (observation distribution). Trong mô hình Markov ẩn ngoài quá trình ngẫu
nhiên chuyển trạng thái, tại mỗi trạng thái còn có quá trình ngẫu nhiên sinh ra một
quan sát. Tập các quan sát O được sinh ra bởi dãy các trạng thái S1, S2,…, SN của
mô hình, mặt khác dãy các trạng thái này là không thấy được nên mô hình Markov
dạng này được gọi là mô hình Markov ẩn [2].
Một mô hình Markov ẩn gồm có:
N: Số trạng thái của mô hình. Các trạng thái của mô hình Markov ẩn thường
được ký hiệu bằng S= { S1 , S2 ,…,SN), trạng thái ở thời điểm t của mô hình ký hiệu
là qt với qt thuộc vào tập S.
M: Số các ký hiệu quan sát được (Observation symbol) ứng với một trạng
thái của mô hình Markov ẩn. Trong nhận dạng tiếng nói số các ký hiệu quan sát
là kích thước của bảng từ vựng của mô hình. Tập các ký hiệu quan sát được biểu
diễn bằng V= {v1, v2,…,vM }, ký hiệu quan sát ở thời điểm t kí hiệu là ot với ot
thuộc vào tập V.
A={ aij}: Tập xác suất chuyển trạng thái (state transition probability
distribution). Trong đó, aij là xác suất để trạng thái j xuất hiện tại thời điểm t+1 khi
trạng thái i đã xuất hiện tại thời điểm t.
29
aij=P(qt+1 = sj | qt = si)
B={bj(k)}: Tập xác suất phát xạ quan sát được trong các trạng thái
(observation symbol probability distribution in state). bj(k) là xác suất quan sát của
ký hiệu vk trong trạng thái j tại thời điểm t.
bj(k)=P(vk tại thời điểm t / qt =Sj)
Πi=P[qt = Sj], i thuộc vào tập [1, N] : Là tập xác suất khởi đầu (initial state
distribution). Πi là xác suất để trạng thái i được chọn tại thời điểm khởi đầu t=1:
Πi = P (q1 = S1) với :
Với các giá trị A, B, , M, N thích hợp, một mô hình Markov ẩn sinh ra chuỗi
các quan sát: O= {O1, O2,…}
Trong đó Oi lấy một trong các giá trị ở tập các ký hiệu quan sát V. Hoạt động
của mô hình Markov ẩn (HMM) được mô tả tóm tắt qua các bước như sau:
Bước 1: Chọn một trang thái khởi đầu q1 tương ứng với xác suất trạng thái
khởi đầu .
Bước 2: Gán t=1.
Bước 3: Chọn Oi = vk tương ứng với xác suất quan sát tại trạng thái Si: bi(k).
Bước 4: Chuyển sang trạng thái mới qt+1 =Sj tương ứng với xác suất chuyển
trạng thái aij.
Bước 5: Gán t=t+1, nếu t< Tquay lại bước 3; nếu t T thì kết thúc.
30
Hình 2.2: Mô hình Markov ẩn với sáu trạng thái.
Trong hình minh họa trên là một ví dụ về mô hình HMM với 6 trạng thái,
trong đó có trạng thái 1 là trạng thái khởi đầu và trạng thái 6 là trạng thái kết thúc.
Tập quan sát gồm có sáu quan sát O={o1, o2, o3, o4, o5, o6} được sinh ngẫu nhiên
bởi các trạng thái từ 2 đến 5. Mỗi trạng thái có thể chuyển sang trạng thái bên phải
nó hay chuyển sang chính nó trừ trạng thái khởi đầu chỉ có thể chuyển sang trạng
thái bên phải nó là trạng thái 2.
Thực tế, để biểu diễn một mô hình HMM người ta thường dùng bộ ký pháp
=(A, B, ), trong đó A, B và gọi là các tham số (parameters) của mô hình
Markov ẩn .
2.2. Các bài toán cơ bản của mô hình Markov ẩn
2.2.1. Bài toán 1
) đã được Với dãy quan sát O={o1, o2,…} và mô hình Markov ẩn =(A, B,
huấn luyện, chúng ta cần tính xác suất P(O/ ).
Đây là bài toán nhận dạng khi có một dãy các quan sát cho trước và tập các
mô hình Markov ẩn. Kết quả của tính toán trên sẽ giúp chúng ta tìm ra được mô
hình Markov ẩn có xác suất P(O/ ) tương ứng lớn nhất.
2.2.2. Bài toán 2
Giải quyết vấn dề tìm ra phương án tối ưu cho tập trạng thái q={q1, q2,…}
theo một tiêu chuẩn nào đó.
31
Đây chính là quá trình đi tìm phần ẩn của mô hình Markov, tức là tìm dãy
trạng thái q tối ưu. Bài toán thường được áp dụng vào bài toán gán nhãn cưỡng bức
dữ liệu huấn luyện.
2.2.3. Bài toán 3
Cho chuỗi quan sát O và mô hình Markov ẩn , ta phải hiệu chỉnh các tham số
A, B, của mô hình sao cho xác suất có điều kiện P(O/ ) là tối ưu.
Trong bài toán này chúng ta điều chỉnh tham số của mô hình Markov ẩn sao
cho nó có thể miêu tả chính xác nhất các quan sát đã được biết trước đó. Dãy quan
sát dùng để điều chỉnh tập tham số của mô hình gọi là tập dữ liệu huấn luyện
(training data). Với bài toán nhận dạng nói chung và nhận dạng tiếng nói nói riêng,
đây là vấn đề quan trọng, nó cho phép điều chỉnh các tham số để học các dữ liệu từ
các hiện tượng thực như tiếng nói.
2.3. Các thuật toán cơ bản
2.3.1. Thuật toán tiến (forward)
t(i) =P(o1, o2,……,ot, qt = si / )
Hàm forward được định nghĩa như sau:
t(i) được gọi là toán tử tiến là xác suất của chuỗi quan sát từng
Trong đó:
phần o1, o2,……,ot và trạng thái Si tại thời điểm t với điều kiện cho mô hình
Markov ẩn .
t(i) có thể tính được theo nguyên tắc đệ quy như sau:
Toán tử tiến
1(i) =
ibi (O1), 1 i ≤ N (với N là số trạng thái của mô hình Markov ẩn).
Bước 1: Khởi tạo
Bước 2: Đệ quy
t+1(j)=
Với t ∈ [1, T-1], j ∈ [1, N] ta có:
bj(Ot+1).
32
Bước 3: Kết thúc
T(i).
P(O/λ) =
2.3.2. Thuật toán lùi (Backward)
Gọi βt(i) là toán tử lùi, βt(i) là xác suất của chuỗi quan sát từng phần Ot+1, Ot+2, … OT và trạng thái Si tại thời điểm t với điều kiện mô hình Markov ẩn λ. Khi đó hàm Backward được định nghĩa như sau:
βt(i) = P(Ot+1, Ot+2, … OT /qt =Si, λ).
Toán tử lùi βt(i) có thể được tính theo các bước đệ quy như sau:
Bước 1: Khởi tạo
Với t=T ta có βT(i) = 1, 1 i ≤ N (với N là số trạng thái của mô hình Markov
ẩn).
Bước 2: Tính các βt(i) bằng phương pháp đệ quy
Với t ∈ [ T-1, 1], i∈ [1, T] ta có:
βt(i)= bj(Ot+1) βt+1+(i).
2.3.3. Các giải pháp giải quyết các bài toán cơ bản
a) Giải quyết bài toán 1
Để giải quyết bài toán 1 ta sử dụng thuật toán tiến (Forward). Áp dụng thuật toán Forward thì độ phức tạp là N2*T, so với phương pháp tính trực tiếp với độ phức tạp 2T*NT, thì ta thấy rằng thuật toán Forward đã giúp giảm đáng kể độ phức tạp. Ví dụ, với trường hợp số trạng thái của mô hình là N=5 và T=100 thì khi sử
dụng thuật toán forward máy tính chỉ phải thực hiện khoảng 3000 phép nhân so với 1072 phép nhân của phương pháp trực tiếp.
b) Giải quyết bài toán 2
Trong bài toán này, chúng ta phải tìm dãy trạng thái q=(q1, q2,…,qT) tối ưu
) cho trước tương ứng với một dãy quan sát O=(o1, o2,…,oT) và mô hình =(A, B,
để P(O,S/ ) là lớn nhất.
Để giải quyết vấn đề trên, người ta thường dùng thuật toán tìm kiếm Viterbi.
Đây là thuật toán dựa trên phương pháp lập trình động (Dynamic Programing
method) để tìm ra một dãy các trạng thái tối ưu duy nhất.\
c) Giải quyết bài toán 3
33
Với một mô hình Markov ẩn, vấn đề tìm ra được chuỗi các tham số A, B và
để xác suất P(O/λ) lớn nhất là vấn đề rất quan trọng và khó khăn. Thực tế, chúng ta
chưa có phương pháp tối ưu để giải quyết vấn đề này. Tuy nhiên, chúng ta có thể
dùng thuật toán Baum-Welch để điều chỉnh bộ tham số cho phù hợp.
Xét toán tử ξt(i,j) là xác suất của hệ thống ở trạng thái i tại thời điểm t và
trạng thái j tại thời điểm t+1 với điều kiện có chuỗi quan sát O và mô hình
Markov ẩn λ.
ξt(i,j) = P(qt = si,qt+1= sj /O, λ)
khi đó:
ξt(i,j)=
γt(i) =
Kết hợp γt(i) và ξt(i,j), ta có:
= xác suất của hệ thống ở trạng thái I tại thời điểm t=1, tức là bằng γt(i).
ij=
j=
;
Khi đó, = ( , , ) là mô hình đã được ước lượng lại.
2.4. So sánh các loại mô hình Markov ẩn
Có nhiều cách phân loại mô hình Markov ẩn, trong đó người ta thường phân
biệt dựa vào đặc trưng của ma trận chuyển trạng thái Aij, có thể phân loại thành mô
hình Markov ẩn có liên kết đầy đủ và mô hình Markov ẩn trái phải. Hoặc là dựa vào
tính chất của hàm mật độ xác suất quan sát Bj(k), người ta phân loại thành mô hình
Markov ẩn rời rạc (DHMM), mô hình Markov ẩn liên tục (CDHMM), mô hình
Markov ẩn bán liên tục (SCHMM):
- DHMM: Đối với mô hình Markov ẩn rời rạc, không gian vector đặc trưng
của tín hiệu tiếng nói được chia vào hữu hạn các vùng bằng một thủ tục phân nhóm
chẳng hạn như lượng hóa vector(VQ).
34
- CDHMM: Lỗi lượng tử hóa vector đã được loại trừ bằng cách sử dụng hàm
mật độ liên tục thay vì lượng hóa vector. Trong CDHMM phân bố xác suất trên
không gian vector âm học được mô hình hóa trực tiếp sử dụng hàm mật độ xác suất
liên tục chẳng hạn như hàm trộn của các hàm Gauss.
- SCHMM: Mô hình này cung cấp chi tiết dữ liệu mô hình hóa thông qua việc
chia sẻ các tham số. Mô hình này là một sự kết hợp giữa DHMM và CDHMM.
35
CHƯƠNG 3
XÂY DỰNG HỆ THỐNG NHẬN DẠNG TIẾNG VIỆT
3.1. Tổng quan về HTK (HMM Tool Kit)
3.1.1. Giới thiệu hệ thống
HTK là một công cụ nhận dạng mạnh mẽ do Steve Young và các đồng nghiệp
của ông nghiên cứu và phát triển. HTK tích hợp hầu hết các kĩ thuật về mô hình
Markov ẩn, các kĩ thuật về xử lý và nhận dạng tiếng nói. Ngoài ra, nó còn cho phép
ta xây dựng các mô hình ngôn ngữ, cú pháp văn phạm để quá trình nhận dạng tiếng
nói đạt hiệu quả cao hơn. Hình 4.1 và 4.2 thể hiện tổng quan các chức năng và cấu
trúc của bộ công cụ HTK.
Hình 3.2. Các Module và các chức năng trong HTK.
36
Hình 3.3. Các công cụ và chức năng trong HTK
Với mục đích nghiên cứu ứng dụng của HTK trong xử lý và nhận dạng tiếng
nói, luận văn sẽ trình bày chi tiết về các cấu trúc trong HTK có liên quan tới nhận
dạng tiếng nói trong phần tiếp theo.
3.1.2. Mô hình các cấu trúc tập tin cơ bản khai báo HMM và MFCC cho nhận
dạng tiếng nói
a/ Cấu trúc tập tin vector HTK được minh họa qua cấu trúc sau:
Struct Feature VectorFile
{
long nSameples; // số mẫu trong tập tin
long sampPeriod;
// tần số mẫu =tần số cửa sổ (tính theo 100ns)
Short int sampSize;
Short int parmKind;//loại mẫu
37
FeatureVector sample [nSample];
}
Với parmKind được định nghĩa như sau:
0: WAVEFORM (sample wave)
1: LPC (Linear Prediction Filter Coeficients)
2: LPREFC (Linear Prediction Reflection Coeficients)
3: LPCEPSTRA (LPC Cepstral Cofeicients)
4: MFCC (Mel-Frequency Ceptral Cofeicients)
5: FBANK (Log Mel-Filter bank chanel outputs)
6: USER (User defined sample kind)
Ngoài ra, HTK còn hỗ trợ các dạng tập tin cho phép ta rút trích các Vector đặc
trưng khác nhau như sau:
_E: Đặc trưng dạng năng lượng
_D: Trong tập Vector đặc trưng có các hệ số đạo hàm cấp 1
_A: Trong tập Vector đặc trưng có các hệ số đạo hàm cấp 2
_0: Có hệ số Ceptral thứ 0 (đầu tiên).
Hình 3.4 dưới đây là một ví dụ về sự phân bố các tham số trong một số vector
đặc trưng được rút trích bằng HTK với các định dạng khác nhau:
38
Hình 3.4. Phân bố các tham số trong một số vector đặc trưng của HTK
b/ Cấu trúc tập tin mô hình Markov ẩn (HMM) được tạo bởi HTK
Mô hình HMM được tạo bằng HTK có cấu trúc như sau:
Trong cấu trúc tập tin HMM:
~h”hmm”: Tên mô hình như ở hình trên là mô hình hmm1
Phần thân được bao bọc ở giữa
39
Với mô hình Markov ẩn tạo bởi HTK người dùng có thể thay đổi số chiều của
vector đặc trưng cho phù hợp với mục đích của mình.
c/ Cấu trúc tập tin đánh nhãn dữ liệu
Với các dữ liệu dùng để huấn luyện hay nhận dạng sẽ được đánh nhãn (được
đặt cùng tên với tập tin dữ liệu nhưng có kiểu mạc định là .lab). Mỗi dòng sẽ đánh
dấu cho vị trí bắt đầu và kết thúc cho từng từ. Trong HTK có hỗ trợ nhiều dạng tập
tin đánh nhãn nhưng dạng tập tin đánh nhãn Master Lable File hay được dùng, nó
có cú pháp như sau:
Ví dụ ta có tập tin thu âm dữ liệu là 001.wav lưu trữ nội dung gồm các số “ba
moojt nawm chisn” thì khi đó tập tin đánh nhãn của nó là:
40
3.1.3. Các bước xây dựng một mô hình nhận dạng tiếng nói sử dụng HTK
Qua tìm hiểu cách xây dựng hệ thống nhận dạng tiếng Anh và tiếng Thái trong
ASR Lap và HTK Book , Ta nhận thấy rằng để xây dựng hệ thống nhận dạng tiếng
nói đơn giản cần thực hiện theo các bước như sau:
Hình 3.5. Các bước cơ bản xây dựng hệ thống nhận dạng tiếng nói
Bước 1: Tạo tập tin cấu trúc văn phạm
Cấu trúc văn phạm là một đồ thị có hướng tổng quát. Nó chứa các cấu trúc câu
có thể có trong ngữ cảnh của ứng dụng mà ta muốn dùng trong hệ thống nhận dạng.
41
Ví dụ nếu ta muốn xây hệ thống nhận dạng tiếng nói để nhận dạng chữ khi người
dùng đọc các từ hay cụm từ có các từ “ Vũ”, “Vinh”, “Quang” thì ta có tập tin cấu
trúc văn phạm như sau
//gram.txt
$digit = Vũ| Vinh |Quang;
(SENT-START <$digit> SENT-END)
Bước 2: Tạo từ điển
Muốn xây dựng từ điển thì bước đầu tiên là tập hợp tất cả các từ được dùng
trong ngữ cảnh. Các từ này được xếp thứ tự alphabet trong tập tin và phải được
phiên âm tương ứng. Qui cách phiên âm rất quan trọng, nó ảnh hưởng rất lớn tới
hệ thống nhận dạng.
Tiếp tục với ví dụ trên ta có tập tin từ điển như sau:
#dict
Vũ V ux
Vinh V i nh
Quang Q u a ng
Bước 3: Tạo tập tin huấn luyện.
Ở bước này ta sẽ thực hiện quá trình thu âm dữ liệu huấn luyện và file âm
thanh được lưu trữ dưới dạng mở rộng *.wav.
Bước 4: Để huấn luyện một tập các mô hình HMM, với tất cả các file dữ
liệu huấn luyện chúng ta phải có một tập tin tương ứng mức độ các âm vị liên quan.
Với ví dụ trên tập tin Straincript có dạng:
#!MLF!#
"*/001.lab"
V
ux
.
42
"*/002.lab"
v
i
nh
"*/003.lab"
q
u
a
ng
.
Bước 5: Rút trích đặc trưng
Tại bước này, các file âm thanh mà ta đã thu ở bước 3 sẽ được rút đặc trưng với
modul HCopy trong HTK. HTK hỗ trợ 2 dạng đặc trưng MFCC và LPC. MFCC nên
được sử dụng vì nó tốt hơn .
Bước 6, 7: Tạo mô hình HMM và trộn hàm Gauss vào mô hình
Tại bước này, chúng ta sẽ định nghĩa ra một mô hình cho HMM. Việc gán thông
tin nào cho prototype là không quan trọng, chủ yếu là chúng ta xây dựng một cái
khung cho mô hình ban đầu. Một mô hình tốt mà HTK Book đề xuất là mô hình 3
trạng thái trái – giữa – phải tuần tự.
Hình 3.6: Mô hình HMM
Sau đây là mô hình Prototype HMM khởi tạo ban đầu:
43
Mô hình prototype khởi đầu gồm có 5 trạng thái, độ dài của mỗi vector đặc
trưng được khởi tạo là 39. Trong đó hệ số MFCC_0 = 13, hệ số delta = 13 và hệ số
gia tốc (delta của delta) = 13.
Bước 8: Tạo bộ dữ liệu kiểm tra
Trong bước này, ta sẽ thu âm dữ liệu để chuẩn bị cho quá trình đánh giá mô
hình vừa khởi tạo ở trên. Dữ liệu để đánh giá sẽ được thu âm và trích chọn đặc
trưng như dữ liệu huấn luyện.
Bước 9: Đánh giá
44
Với mô hình nhận dạng vừa khởi tạo, ta sẽ thực hiện đánh giá dựa trên bộ dữ
liệu kiểm tra đã được tạo ở bước 6. HTK hỗ trợ cho phép chúng ta đánh giá hệ
thống theo thuật toán Viterbi.
Bước 10: Nhận dạng thời gian thực (Online)
Ở bước này ta sẽ tạo tập tin định dạng cho phép hệ thống nhận dạng trực tiếp
khi có người dùng đọc vào. Nó sẽ chuyển thành dạng văn bản hay các câu lệnh điều
khiển khi ta tích hợp vào các hệ thống.
Để thực hiện được các quá trình như xử lý tiếng nói, nhận dạng ở các bước
trên ta sẽ sử dụng các modul trong bộ công cụ HTK như: HVite, HCopy, HCompv,
HRest, HResult…
3.1.4. Một số Modul sử dụng trong quá trình xây dựng hệ thống nhận dạng tiếng
nói tiếng việt trong bộ công cụ HTK
1) HCopy
Modul này sẽ copy một hay nhiều file dữ liệu vào một file đầu ra được chỉ
định trước, nó chuyển đổi dữ liệu sang dạng tham số. Là modul để rút trích đặc
trưng trong tập tin chứa tiếng nói. HCopy được sử dụng theo các bước sau:
Bước 1: Tạo tập tin script dùng để chứa tên các tập tin cần chuyển đổi và tên
các tập tin kết quả (chẳng hạn như đặt tên là chuyendoi.scp).
Mỗi dòng trong tập tin script chứa 2 đường dẫn:
Tên_tập_tin_cần_xử_lý Tên_tập_tin_kết_quả_tương_ứng
Ví dụ:
c:/YOU_2/wave/1.mfc
c:/YOU_2/wave/10.mfc
c:/YOU_2/wave/11.mfc
c:/YOU_2/wave/12.mfc
c:/YOU_2/wave/13.mfc
c:/YOU_2/wave/14.mfc
c:/YOU_2/wave/15.mfc
45
Bước 2: Tạo một tập tin cấu hình có tên HCopy.cfg chứa các thông tin như
kiểu tập tin nguồn, kiểu tập tin đích, kích thước cửa sổ…
Ví dụ:
Bước 3: Thực thi lệnh để tạo ra tập tin đích, chẳng hạn dòng lệnh như sau:
HCopy –C HCopy.cfg –S chuyendoi.scp
2) HParse
Modul này dùng để tạo tập tin mô hình ngôn ngữ từ tập tin văn phạm. có thể
sử dụng bằng cách sau:
Bước 1: Tạo tập tin văn phạm phù hợp với ngữ cảnh (chẳng hạn đặt tên là
gram), Ví dụ tập tin đó như sau:
$digit= moojt | hai | ba | boosn | nawm | sasu | bary | tasm | chisn | khoong;
(<$digit>)
Bước 2: Thực thi lệnh HParse:
HParse gram wdnet
Kết thúc quá trình này ta thu được tập tin wdnet. Tập tin này được dùng để
gán nhãn trong modul HVite.
3) HVite
HVite là modul được dùng để nhận dạng trong hệ thống nhận dạng tiếng nói
bằng mô hình Markov ẩn, được sử dụng qua các bước như sau:
Bước 1: Tạo tập tin script chứa tất cả các tập tin cần nhận dạng ví dụ đặt tên là
test.scp.
46
Bước 2: Chuẩn bị các tập tin như: từ điển dict, mạng ngôn ngữ wdnet, các mô
hình HMM hmmlist, tập các mô hình HMM đã huấn luyện hmmset.
Bước 3:Thực thi lệnh HVite với các dòng lệnh về các tham số:
HVite –w wdnet –I recout.mlf –S test.scp –H hmmset dict hmmlist
Kết thúc lệnh tệp tin Master lable recout.mlf chứa mô tả các dữ liệu cần nhận
dạng được tạo ra.
4) HCompV
HCompV đùng để khởi tạo mô hình Markov ẩn khi tập tin huấn luyện chưa
được đánh nhãn. Các bước sử dụng HCompV như sau:
Bước 1: Tạo tập tin script chứa tất cả tập tin dùng huấn luyện (chẳng hạn đặt
tên là train.scp).
Bước 2: Tạo mô hình HMM khởi đầu như đã nêu ở trên (4.1.1) giả sử tên
là proto.
Bước 3:Thực thi HCompV với lệnh sau:
HCompV –S train.scp proto
Kết thúc lệnh ta thu được mô hình HMM với tham số của tập tin dữ liệu.
5) HRest
Dùng để huấn luyện mô hình HMM, được thực hiện theo các bước sau:
Bước 1: Tạo tập tin script chứa tất cả các tập tin dùng để huấn luyện (chẳng
hạn có tên là Train.scp).
Bước 2: Khởi tạo tập tin mô hình Hmm bằng HCompV như đã nói ở trên.
Bước 3: Thực thi lệnh HRest với dòng lệnh và tham số như:
HRest –S train.scp vidu
Kết thúc lệnh trên ta thu được mô hình HMM đã huấn luyện trong tập tin vidu.
47
3.2. Xây dựng hệ thống nhận dạng chữ số Tiếng việt
3.2.1. Xây dựng cơ sở dữ liệu chữ số tiếng việt
Cơ sở dữ liệu trong thực nghiệm của Luận văn là cơ sở dữ liệu với 1000 mẫu
trong tập huấn luyện và 100 mẫu trong tập test. Để thuận tiện cho việc gán nhãn, dữ
liệu được thu theo các câu đã được phát sinh ngẫu nhiên (dạng văn bản) nhờ công
cụ HTK.
3.2.2. Bảng phiên âm 10 chữ số tiếng Việt
Cách phiên âm có vài trò rất quan trọng đảm bảo chất lượng của hệ thống
nhận dạng. Luận văn sử dụng bảng phiên âm âm vị cho hệ thống nhận dạng 10 chữ
số tiếng Việt như sau:
Bảng 3.1: Bảng phiên âm 10 chữ số tiếng Việt
Chữ số Phiên âm chính tả Phiên âm âm vị
0 Khoong /Kh/ /oo/ /ng/
1 Moojt /m/ /ooj/ / t/
2 Hai /h/ / a // i/
3 Ba /b/ / a /
4 Boosn /b//oos//n/
5 Nawm /n//aw//m
6 Sasu /s//as//u/
7 Bary /b//ar//y/
8 Tasm /t//as//m/
9 Chisn /ch//is//n/
3.2.3. Phương pháp xây dựng hệ thống nhận dạng chữ số tiếng việt
Phương pháp xây dựng hệ thống nhận dạng 10 chữ số phát âm tiếng Việt được
tiến hành theo các bước sau:
Từ điển: được xây dựng dựa trên bảng phiên âm âm vị bao gồm 2 loại từ điển
cho 2 thực nghiệm khác nhau để đánh giá độ chính xác và chọn ra bộ từ điển thích hợp.
Một từ điển không chèn các sp (short pause) và một từ điển có chèn thêm các sp.
48
Sử dụng bộ công cụ HTK để xử lý rút trích đặc trưng của dữ liệu huấn luyện
và dữ liệu Test.
Xây dựng mô hình Markov ẩn với hàm phát xạ quan sát là hàm mật độ
Gauss.
Số lượng trạng thái trong mô hình Markov ẩn là 5 trạng thái, trong đó có 1
trạng thái khởi đầu và 1 trạng thái kết thúc không có phát xạ quan sát.
Sử dụng vector đặc tính phổ gồm hệ số MFCC, giá trị năng lượng cùng các
delta, delta- delta của các giá trị này tạo thành tập 39 đặc tính phổ tương ứng với
mỗi khung tín hiệu 10ms.
Tiến hành buộc các âm vị không có đủ bộ dữ liệu huấn luyện theo phương
pháp dùng cây (tree- based). Các âm vị trong tập dữ liệu kiểm tra mà không có
mặt trong dữ liệu huấn luyện sẽ được tổng hợp từ các âm vị đã được huấn luyện
giống nhất.
Thử nghiệm trộn nhiều hàm Gauss và mix các trạng thái.
3.2.4. Các kết quả thực nghiệm
a) Thử nghiệm với từ điển có chèn short pause và không chèn short pause
Trong khi nói, giữa những câu những từ sẽ có khoảng ngừng nghỉ khác nhau.
Để máy có thể phân biệt được điều này là rất khó khăn. Để kiểm tra sự ảnh hưởng
của yếu tố ngừng nghỉ giữa các câu các từ tới độ chính xác của hệ thống luận văn đã
tiến hành thử nghiệm trên 2 bộ từ điển phiên âm 10 chữ số tiếng việt khác nhau.
Một bộ từ điển phiên âm không chèn thêm các âm quy định là khoảng nghỉ và một
bộ từ điển có chèn thêm các sp quy định là những khoảng nghỉ giữa các từ.
+Từ điển không chèn thêm các sp:
49
+Từ điển có chèn thêm các sp:
Kết quả của thử nghiệm độ chính xác của hệ thống nhận dạng theo 2 bộ từ
điển ở trên được cho trong bảng sau:
Bảng 3.2. Kết quả thử nghiệm hệ thống nhận dạng với bộ từ điển có chèn sp và không chèn sp
Hệ thống nhận dạng Mức câu Mức từ
Bộ từ điển không chèn SP 56% 90%
Bộ từ điển có chèn SP 70% 90%
Như vậy, với bộ từ điển có chèn thêm các sp độ chính xác mức câu sẽ tăng
lên. Đây sẽ là bộ từ điển được chọn để tiến hành các thực nghiệm về sau.
b) Thử nghiệm với dữ liệu test nằm trong dữ liệu huấn luyện và độc lập với dữ
liệu huấn luyện
Trong quá trình thực nghiệm phát sinh ra vấn đề đó là có những câu trong dữ
liệu test mà không có mặt trong dữ liệu huấn luyện. Như vậy hệ thống phải nhận
dạng các câu các âm tiết mà nó chưa được học trước đó. Nếu tập dữ liệu được bổ
sung thì độ chính xác của kết quả nhận dạng có thể được nâng lên. Để nghiên cứu
độ tốt nhất của hệ thống có thể đạt tới, ta cần thử nghiệm trong trường hợp dữ liệu
test trùng với dữ liệu huấn luyện.
Trong thực nghiệm này, dữ liệu huấn luyện là 1000 mẫu và dữ liệu test cũng
50
chính là dữ liệu huấn luyện. Kết quả thu được là tốt hơn so với thử nghiệm dữ liệu
test độc lập với dữ liệu huấn luyện.
Kết quả thực nghiệm được cho ở bảng sau:
Bảng 3.3. Kết quả thử nghiệm hệ thống nhận dạng với dữ liệu test trùng với dữ
liệu huấn luyện
Hệ thống nhận dạng Mức câu Mức từ
Dữ liệu test trùng với dữ liệu huấn luyện 80% 95%
Dữ liệu test độc lập với dữ liệu huấn luyện 70% 90%
51
KẾT LUẬN
Nhận dạng tiếng nói là một trong những vấn đề rất khó trong lĩnh vực nhận
dạng. Trong quá trình thực hiện luận văn, em đã gặp không ít khó khăn nhất là về
mặt tài liệu, vì lí do ở Việt Nam những nghiên cứu về nhận dạng tiếng nói là không
nhiều, và những người chuyên sâu trong lĩnh vực còn rất ít. Tuy nhiên, với sự cố
gắng và sự động viên giúp đỡ của các thầy cô em đã hoàn thiện luận văn của mình
và có những đóng góp sau:
Nghiên cứu các phương pháp nhận dạng tiếng nói, đánh giá và lựa chọn
phương pháp phù hợp để xây dựng hệ thống nhận dạng tiếng nói tiếng Việt.
Tìm hiểu phương pháp xử lý trích chọn đặc trưng và đánh giá tầm quan trọng
của việc trích chọn đặc trưng tiếng nói với hệ thống nhận dạng.
Tìm về bộ công cụ HTK đặc biệt là các bước tổng quát để xây dựng một hệ
thống nhận dạng tiếng nói.
Tìm những đặc điểm quan trọng của ngôn ngữ tiếng Việt để xây dựng hệ
thống nhận dạng tiếng nói tiếng Việt.
Nghiên cứu xây dựng hệ thống nhận dạng 10 chữ số phát âm tiếng Việt.
Xây dựng được bộ cơ sở dữ liệu với 1000 câu làm dữ liệu huấn luyện và 100
câu làm dữ liệu Test.
Tìm hiểu mô hình phiêm âm âm vị tiếng việt.
Xây dựng hệ thống nhận dạng, đánh giá kết quả thực nghiệm
Trong khoảng thời gian ngắn, điều kiện cơ sở vật chất phục vụ cho quá trình
thu âm dữ liệu còn rất hạn chế nên lượng dữ liệu thu vào chưa phong phú (độ đa
dạng, số lượng và chất lượng), cho nên kết quả đạt được trong hệ thống nhận dạng
chưa cao. Trong thời gian tiếp sau, luận văn tiếp tục cải thiện độ chính xác của hệ
thống nhận dạng bằng cách bổ sung thêm về cơ sở dữ liệu cho hệ thống.
52
TÀI LIỆU THAM KHẢO
[1]. Barbara S, “High- Performance Automatic Speech Recognition via Enhanced
Front-end Analysis and Acoustic Modeling”,Ph.D.Thesis, University of
California, 2001.
[2]. Hosom J.P, Cole R.A, and Cosi P, “ Improverment in Neural-Network
Training and Search technique for continunous Digit recognition” Australia
Journal of Intelligent information processing systems, vol.5,no.5, pp.227-284,
1998.
[3]. Đặng Ngọc Đức, “Nghiên cứu ứng dụng mạng Neural và mô hình Markov ẩn
vào trong nhận dạng tiếng Việt”, Luận án tiến sĩ toán học, Đại học Quốc Gia
Hà Nội, 2004.
[4]. Đỗ Xuân Thọ, Lê Hữu Tĩnh, “Giáo trình tiếng Việt 2”, nhà xuất bản Giáo
dục, 1997.
[5]. Lương Chi Mai, Hồ Tú Bảo, “Về xử lý tiếng Việt trong công nghệ thông tin”,
Báo cáo khoa học, Viện công nghệ thông tin.
[6]. Nguyễn Thành Phúc, “Một phương pháp nhận dạng lời Việt: áp dụng phương
pháp kết hợp mạng Neural với mô hình Markov ẩn”, Luận án tiến sĩ Kỹ thuật,
Đại học Bách khoa Hà Nội, 2000.
[7]. http://luanvan.net.vn/luan-van/luan-van-nhan-dang-tieng-noi-tieng-viet-su-
dung-mang-no-ron-nhan-tao-va-mo-hinh-markov-an-52153/
[8]. http://4tech.com.vn/forums/showthread.php/5055-T%C3%ACm-
hi%E1%BB%83u-m%C3%B4-h%C3%ACnh-Markov-%E1%BA%A9n
[9]. http://doc.edu.vn/tai-lieu/luan-van-nhan-dang-tieng-noi-tieng-viet-tim-hieu-
va-ung-dung-54092/