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

Nghiên cứu công nghệ nhận dạng tiếng nói và ứng dụng xây dựng hệ thống hỗ trợ dịch cabin

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

LỜI CẢM ƠN
Trước khi bước vào quá trình trình bày chi tiết về quá trình học tập và thực
hiện đồ án tốt nghiệp của bản thân mình trong thời gian qua. Cho phép tôi được
gửi lời cảm ơn đến những người đã bên tôi, động viên và giúp đỡ tôi trong quá
trình thực hiện nghiên cứu, tìm hiểu về đề tài cũng như quá trình hoàn thiện đề
tài, để bản thân tôi có thể hoàn thành đúng thời hạn với đề tài nghiên cứu của bản
thân.
Cho phép tôi gửi lời cảm ơn tới Ban giám hiệu trường Đại học Công nghệ
thông tin và truyền thông và các thầy cô đã và đang tham gia công tác giảng dạy
tại trường đã cố gắng nỗ lực để có thể tạo một môi trường học tập tốt nhất cho
bản thân tôi và các bạn sinh viên trong trường với những trang thiết bị hỗ trợ
luôn được chú ý nâng cấp hiện đại hơn qua mỗi năm.
Cho phép tôi gửi lời cảm ơn tới những thầy cô trong bộ môn Hệ thống
thông tin – Khoa công nghệ thông tin – Trường đại học Côg nghệ thông tin và
truyền thông đã hết mình giảng dạy, truyền đạt kiến thức chuyên ngành và định
hướng cho tôi cùng các bạn sinh viên về những hướng đi của bản thân làm sao để
phù hợp với năng lực của bản thân.
Cho phép tôi gửi lời cảm ơn chân thành tới TS. Nguyễn Văn Tới – người
thầy hướng dẫn tôi thực hiện đồ án tốt nghiệp này. Cảm ơn thầy đã tạo điều kiện
và xây dựng định hướng kĩ càng hơn cho bản thân tôi để tôi có thể thực hiện đề
tài nghiên cứu của mình một các tốt nhất.
Tiếp theo cho tôi gửi lời cảm ơn chân thành tới PGS.TS. Nguyễn Ái Việt –
người đã tận tình chỉ bảo, định hướng cụ thể để bản thân tôi có được sự chuẩn bị
rõ ràng, tiếp thu những ý kiến bổ ích và để bản thân tôi thực hiện đồ án tốt nghiệp
này với đề tài: “Nghiên cứu công nghệ nhận dạng tiếng nói và ứng dụng xây
dựng hệ thống hỗ trợ dịch Cabin”.
Qua đây cũng cho tôi gửi lời cảm ơn tới cô Lê Ngọc Hồng – Chủ tịch
HĐQT kiêm Giám đốc Công ty VIEGRID JSC, cùng toàn thể các anh chị nhân
viên trong công ty đã tạo điều kiên cho em được làm việc trong môi trường

1




nghiêm túc và hướng dẫn cũng như chỉ bảo tận tình cho bản thân em trong quá
trình thực hiện đề tài nghiên cứu của bản thân tại đây.
Cuối cùng cho tôi được gửi lời cảm ơn chân thành tới tất cả mọi người,
những người thân, bạn bè đã luôn bên cạnh tôi, động viên, giúp đỡ tôi để tôi có
thể vững tâm hơn thực hiện đồ án của mình với sự nỗ lực hết mình của bản thân.
Xin chân thành cảm ơn!
Thái Nguyên, ngày … tháng … năm ……
Sinh viên thực hiện

Nguyễn Khắc An

2


MỤC LỤC
LỜI CẢM ƠN .....................................................................................................1
MỤC LỤC ..........................................................................................................3
DANH MỤC HÌNH ẢNH ...................................................................................5
MỞ ĐẦU ............................................................................................................6
TÓM TẮT NỘI DUNG.......................................................................................8
CHƯƠNG I: SƠ LƯỢC VỀ DỊCH CABIN.........................................................9
1.1 Khái niệm dịch Cabin............................................................................9
1.2 Thành phần cơ bản. ...............................................................................9
1.3 Hiện trạng thực tế................................................................................10
CHƯƠNG II: TỔNG QUAN VỀ NHẬN DẠNG TIẾNG NÓI..........................11
2.1. Tổng quan về nhận dạng tiếng nói......................................................11
2.1.1. Khái niệm ...................................................................................11
2.1.2. Nguyên tắc của nhận dạng tiếng nói ............................................12

2.1.3. Cách tiếp cận...............................................................................12
2.2. Một số công trình nghiên cứu về nhận dạng tiếng nói.........................12
2.2.1. Quốc tế .......................................................................................12
2.2.2. Việt Nam ....................................................................................16
2.3. Ứng dụng của nhận dạng tiếng nói .....................................................16
CHƯƠNG III: CMU SPHINX...........................................................................18
3.1. Giới thiệu ...........................................................................................18
3.1.1 Các tính năng chính......................................................................18
3.1.2 Các lợi ích khi sử dụng Sphinx.....................................................19
3.2. Kiến trúc Sphinx ................................................................................19
3.2.1 Bộ ngoại vi (FontEnd)..................................................................21
3.2.2 Bộ giải mã (Decoder) ...................................................................22
3.2.3 Bộ ngôn ngữ (Linguist) ................................................................23
CHƯƠNG IV: CHƯƠNG TRÌNH DEMO ........................................................26
4.1. Cài đặt................................................................................................26
4.1.1 Tải các gói Sphinx cần thiết .........................................................26

3


4.1.2 Cài đặt..........................................................................................26
4.2. Xây dựng bộ ngôn ngữ .......................................................................28
4.2.1 Xây dựng bộ từ điển.....................................................................28
4.2.2 Xây dựng mô hình ngôn ngữ........................................................29
4.2.3 Xây dựng mô hình âm học ...........................................................32
4.2.4 Tiến hành huấn luyện ...................................................................36
4.2.5 Huấn luyện thích nghi ..................................................................38
4.3. Chương trình Demo............................................................................43
4.3.1. Giao diện chương trình demo: .....................................................43
4.3.2. Đánh giá......................................................................................43

KẾT LUẬN.......................................................................................................53
1. Kết quả đạt được...................................................................................53
2. Những điểm hạn chế. ............................................................................53
3. Hướng nghiên cứu và phát triển. ...........................................................53
TÀI LIỆU THAM KHẢO .................................................................................55
NHẬN XÉT CỦA GIÁO VIÊN HƯỚNG DẪN................................................57

4


DANH MỤC HÌNH ẢNH
Hình 1.1 : Mô hình dịch Cabin hiện nay ..............................................................9
Hình 2.1: Mô hình tổng quát của nhận dạng tiếng nói........................................11
Hình 3.1: Kiến trúc Sphinx ................................................................................20
Hình 3.2: Kiến trúc tổng quát bộ Ngoại vi .........................................................21
Hình 3.3: Chuỗi các Dataprocessor trong quá trình xử lý...................................22
Hình 3.4: Ví dụ một đồ thị tìm kiếm đơn giản....................................................25
Hình 4.1: cài đặt Sphinx trên Ubuntu.................................................................26
Hình 4.2: Sơ đồ quá trình tạo mô hình ngôn ngữ bằng công cụ CMUcmltk .......29
Hình 4.4: Giao diện ứng dụng nhận dạng trên HDH Window ............................43
Hình 4.5: Blue score – AJHope – Direct............................................................44
Hình 4.6: Accuracy – AJHope – Direct .............................................................45
Hình 4.7: Blue score - Kennedy - Direct............................................................45
Hình 4.8: Accuracy - Kennedy – Direct.............................................................46
Hình 4.9: Blue score - Nicxon – Direct..............................................................46
Hình 4.10: WER – Nicxon – Direct ...................................................................47
Hình 4.11: Accuracy - Nicxon - Direct ..............................................................47
Hình 4.12: Blue score - Kennedy nhận dạng AJHope ........................................48
Hình 4.13: WER – Kennedy nhận dạng AJHope ...............................................48
Hình 4.14: Accuracy - Kennedy nhận dạng AJHope..........................................49

Hình 4.15: Blue score - Kennedy nhận dạng Nicxon .........................................49
Hình 4.16: WER – Kennedy nhận dạng Nicxon.................................................50
Hình 4.17: Accuracy - Kennedy nhận dạng Nicxon ...........................................50
Hình 4.18: Blue score - Kennedy nhận dạng Nicxon .........................................51
Hình 4.19: WER – Kennedy nhận dạng Nicxon.................................................51
Hình 4.20: Accuracy - Kennedy nhận dạng Nicxon ...........................................52

5


MỞ ĐẦU
Công nghệ nhận dạng tiếng nói, một trong những lĩnh vực luôn dành được
những sự quan tâm hàng đầu của những nhà nghiên cứu trong lĩnh vực Công
nghệ thông tin. Ngay từ những năm giữa thế kỉ XX, tức là khi công nghệ thông
tin mới bắt đầu được đặt nền móng để phát triển, những đề tài hay ý tưởng về
nhận dạng tiếng nói và xử lý ngôn ngữ đã được hình thành. Cùng với quá trình
phát triển công nghệ thông tin, và các bước đột phá trong việc nâng cấp phần
cứng, cải thiện hiệu năng sử dụng và sự ra đời của các hệ điều hành hỗ trợ người
dùng thân thiện hơn; nhận dạng tiếng nói cũng ngày càng nhận được sự quan tâm
nhiều hơn để nghiên cứu và ứng dụng vào thực tế, nhằm mục đích hỗ trợ tối đa
người dùng thiết bị và tăng thêm hiệu năng sử dụng thiết bị cá nhân cũng như các
thiết bị máy móc khác.
Ngày nay, khi công nghệ phát triển mạnh mẽ và thay đổi liên tục, khi mà
các thiết bị phần cứng, đặc biệt là các thiết bị di động đang rơi vào quá trình bão
hoà. Nhận dạng tiếng nói lại trở thành một trong những đề tài được chú ý đến
hàng đầu cũng với những công nghệ thực tế ảo, máy tính lượng tử… Các ông lớn
trong lĩnh vực công nghệ như Google, Samsung, Apple… đều góp mặt tham gia
nghiên cứu và có cho mình những sản phẩm riêng để ứng dụng vào thực tế cho
các sản phẩm của mình.
Nhận thấy tiềm năng to lớn của lĩnh vực này, cùng với sự định hướng của

giáo viên hướng dẫn. Em đã lựa chọn đề tài nghiên cứu: “Nghiên cứu về nhận
dạng tiếng nói và ứng dụng để xây dựng hệ thống hỗ trợ dịch Cabin”. Với mục
đích nghiên cứu về công nghệ nhận dạng tiếng nói, và tìm các xây dựng ứng
dụng công nghệ này vào lĩnh vực thực tế để hỗ trợ cho người dùng những sản
phẩm mang tính ứng dụng cao và hữu ích cho cuộc sống. Và hi vọng những đóng
góp nhỏ bé trong bài nghiên cứu của bản thân sẽ phần nào được sử dụng vào thực
tế. Trong đồ án này, em xin được trình bày về bộ công cụ nhận dạng tiếng nói
Sphinx với quá trình cài đặt, huấn luyện và đánh giá mức độ hiệu quả của bộ
công cụ này, nhằm có hướng đi thích hợp cho dự án.

6


Trong quá trình nghiên cứu và thực hiện đề tài, bản thân em không thể tránh
khỏi những sai sót và những điểm hạn chế. Mong quý thầy cô và các bạn sẽ tham
gia đóng góp ý kiến để bản thân em có thể hoàn thiện tốt hơn đề tài của bản thân,
cũng như quá trình thực hiện ứng dụng thực tế sau này được tốt hơn nữa.

7


TÓM TẮT NỘI DUNG
Bài luận văn được chia làm 3 chương:
- Chương I : Sơ lược về dịch Cabin
o Giới thiệu về khái niệm dịch Cabin
o Các thành phần cấu thành
o Tình hình thực tế, đánh giá tính hiệu quả
- Chương II: Tổng quan về nhận dạng tiếng nói
o Khái niệm về nhận dạng tiếng nói
o Giới thiệu một số mô hình liên quan

o Tính ứng dụng của mô hình, đánh giá sự hiểu quả và tiềm năng phát
triển. Nêu ra khó khăn hạn chế
- Chương III: CMU Sphinx
o Giới thiệu CMU Sphinx
o Các thành phần cấu thành, nguyên lý hoạt động.
o Cài đặt chương trình
o Xây dựng thư viện mẫu
- Chương IV: Demo
o Đưa ra lý do chọn đề tài
o Các bước thực hiện
o Đánh giá tính hiệu quả của sản phẩm.
- Kết quả đạt được, hạn chế.
- Hướng phát triển.

8


CHƯƠNG I: SƠ LƯỢC VỀ DỊCH CABIN
1.1 Khái niệm dịch Cabin.
Dịch Cabin được hiểu đơn giản là quá trình phiên dịch trực tiếp, dịch song
song. Nhiệm vụ của người dịch Cabin là lắng nghe người đọc đồng thời phiên
dịch lại thành ngôn ngữ mà người nghe yêu cầu. Giúp cho cuộc đối thoại được
diễn ra hiệu quả và liên tục hơn.
Đây là một công việc khá phức tạp và đòi hỏi phiên dịch viên ngoài việc am
hiểu rõ về 2 ngôn ngữ còn phải có khả năng lắng nghe, phản xạ nhanh với tình
huống và yêu cầu tính chính xác cao.
1.2 Thành phần cơ bản.

Hình 1.1 : Mô hình dịch Cabin hiện nay
Thành phần cơ bản của mô hình dịch Cabin thường được sử dụng hiện nay

bao gồm một phiên dịch viên và các thiết bị thu phát âm thanh cần thiết.
- Phiên dịch viên: đây là người tham gia trực tiếp vào quá trình dịch.
Thông thường họ sẽ được ngồi trong một phòng kín được gọi là Cabin, nhiệm vụ
của họ sẽ là đeo tai nghe để nghe trực tiếp âm thanh từ người nói, đồng thời dịch
song song với quá trình ấy sang ngôn ngữ người nghe yêu cầu và có thể hiểu
được cuộc trò chuyện.

9


- Thiết bị thu âm, phát âm: bao gồm tai nghe, mic và một số thiết bị hỗ trợ
khác để quá trình phiên dịch diễn ra được dễ dàng hơn với phiên dịch viên.
1.3 Hiện trạng thực tế.
Thực tế, công việc này được mệnh danh là dành cho các “quái kiệt” vì mức
độ khó, và tính chất phức tạp của công việc.
Trong một thời điểm gần như đồng thời, người phiên dịch phải lắng nghe
người nói qua tai nghe và dịch song song cùng lúc cho người nghe có thể lắng
nghe và nắm bắt được nội dung câu chuyện. Điều này khiến người phiên dịch
viên phải tập trung cao độ, lắng nghe, xử lý và ứng biến rất nhanh nhạy để có thể
bắt kịp theo câu chuyện, và phản ánh đúng sự truyền đạt của người nói.
Chưa hết, ngoài ra khó khăn còn gặp phải đó là trong các cuộc hội thảo
mang tính đặc thù về chuyên ngành, việc ngôn ngữ chuyên ngành cũng là một trở
ngại không hề nhỏ trong quá trình phiên dịch của người phiên dịch viên.
Ngày nay, với sự hội nhập cao, các cuộc đàm phán diễn ra liên tục với mật
độ dày đặc, đặt ra một sự cấp bách cho công việc này. Nhân lực để đáp ứng cho
mô hình dịch Cabin ngày càng giảm, và chất lượng cũng phần nào bị ảnh hưởng
nhiều. Giá nhân công cho mỗi chương trình hội thảo cũng không hề rẻ. Trung
bình khoảng từ 200$ - 300$/ngày. Đặc biệt trong những hội thảo mang tính đặc
thù giá phải trả cho phiên dịch viên có thể lên tới 1000$/ngày.
Điều cấp bách ấy đặt ra cho chúng ta một ý tưởng về ứng dụng các giải

pháp của công nghệ thông tin vào phục vụ nhu cầu phiên dịch, nhằm giải quyết
bài toán dịch Cabin và giảm đi sự lệ thuộc vào con người như trước đây.

10


CHƯƠNG II: TỔNG QUAN VỀ NHẬN DẠNG TIẾNG NÓI
2.1. Tổng quan về nhận dạng tiếng nói
2.1.1. Khái niệm
Nhận dạng tiếng nói là một quá trình nhận dạng mẫu, với mục đích là phân
lớp thông tin đầu vào là các tín hiệu tiếng nói thành một dãy tuần tự các mẫu đã
được học trước đó và lưu trữ trong bộ nhớ.
Các mẫu là các đơn vị nhận dạng, chúng có thể là các từ, hoặc các âm vị.
Nếu các mẫu này là bất biến và không thay đồi thì công việc nhận dạng tiếng nói
trở nên đơn giản hơn bằng các so sánh các tín hiệu tiếng nói cần nhận dạng với
các mẫu đã được học và lưu trữ trong bộ nhớ. Khó khăn cơ bản của nhận dạng
tiếng nói đó là tiếng nói luôn biến thiên 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, 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 những 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á các từ, các mẫu tiếng nói,
những biến thiên quan trọng cần thiết trong việc nhận dạng tiếng nói.

Hình 2.1: Mô hình tổng quát của nhận dạng tiếng nói

11


2.1.2. Nguyên tắc của 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 3 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. 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à dữ liệu để 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 từ phát âm được bảo toàn khi chúng
ta phiên â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 tin về âm
học không rõ ràng.
2.1.3. Cách tiếp cận
Các tiếp cận nhận dạng tiếng nói bằng thống kê bao gồm: sử dụng mô hình
Markov ẩn (HMM), mạng noron, sử dụng cơ sở tri thức,…
2.2. Một số công trình nghiên cứu về nhận dạng tiếng nói
2.2.1. Quốc tế
Giao tiếp người-máy là một lĩnh vực nghiên cứu lớn và khó nhưng lại có
nhiều ứng dụng thực tiễn. Tiếng nói là một phương tiện giao tiếp tự nhiên nhất
của con người và vì vậy, nghiên cứu để máy tính có thể hiểu tiếng nói của con
người, hay còn gọi là nhận dạng tiếng nói tự động (Automatic Speech
Recognition –ASR), đã trải qua quá trình 70 năm phát triển. Những nỗ lực
nghiên cứu đầu tiên về ASR đã được tiến hành trong thập niên 50 với ý tưởng
chính là dựa trên ngữ âm. Do kĩ thuật xử lí tín hiệu số cũng như khả năng máy
tính còn giới hạn, các hệ thống nhận dạng lúc đó chỉ tập trung khai thác đặc trưng
phổ cộng hưởng (spectral resonances) đối với các nguyên âm của tín hiệu, sau
khi đi qua các bộ lọc tương tự. Trong giai đoạn này, có các hệ thống đáng chú ý
như: hệ thống nhận dạng ký số rời rạc của Bell-lab (1952), bộ nhận dạng 13 âm
vị của trường đại học College–Anh (1958) .

12



Trong thập kỉ 1960, điểm đáng ghi nhận nhất là ý tưởng của tác giả người
Nga, Vintsyuk khi ông đề xuất phương pháp nhận dạng tiếng nói dựa trên qui
hoạch động theo thời gian (Dynamic Time Warping –DTW). Đáng tiếc là mãi
đến những năm 1980, phương pháp này mới được thế giới biết đến. Cuối những
năm 1960, Reddy ở trường đại học CMU (Mỹ) đã đề xuất những ý tưởng đầu
tiên về nhận dạng tiếng nói liên tục bằng kĩ thuật đánh dấu đường đi và truy vết
lùi tìm kết quả.
Đến những năm 70, nghiên cứu về nhận dạng tiếng nói đã bước đầu thu
được các kết quả khích lệ, làm nền tảng cho những phát triển sau này. Trước tiên
là bài toán nhận dạng từ rời rạc được giải quyết dựa trên ý tưởng của các nhà
khoa học người Nga và Nhật. Velichko và Zagoruyko (ở Nga) là những người đi
tiên phong trong việc áp dụng ý tưởng về phân lớp mẫu cho ASR. Sakoe và
Chiba (Nhật) đề xuất các kĩ thuật sử dụng phương pháp qui hoạch động. Và
Itakura, trong thời gian ở Bell-lab, đã đưa ra phương pháp mã hoá dự báo tuyến
tính (Linear Predictive Coding –LPC) làm tiền đề cho việc áp dụng các tham số
phổ LPC vào ASR. Các hệ thống ASR đáng chú ý của giai đoạn này gồm: Harpy
và Hearsay-II của trường đại học CMU-Mỹ, hệ thống HWIM của BBN.
Nghiên cứu về ASR trong thập kỉ 80 đánh dấu phép dịch chuyển trong
phương pháp luận: từ cách tiếp cận đối sánh mẫu sang cách tiếp cận sử dụng mô
hình thống kê. Ngày nay, hầu hết các hệ thống ASR đều dựa trên mô hình thống
kê được phát triển ở thập kỉ này, cùng với những cải tiến ở thập kỉ 90. Một trong
những phát minh quan trọng nhất ở thập kỉ 80 là mô hình Markov ẩn (Hidden
Markov Model –HMM). Mặc dù HMM được áp dụng thành công ở một số
phòng LAB (chủ yếu là IBM và viện nghiên cứuthuộc bộ Quốc phòng Mỹ)
nhưng phải đợi đến vài năm sau đó, mô hình này mới được xuất bản và phổ biến
trên thế giới. Ngoài ra, hai đề xuất quan trọng khác của giai đoạn này là tổ hợp
Cepstrum và mô hình ngôn ngữ:
Furui đề xuất sử dụng tổ hợp của các hệ số phổ cùng với đạo hàm bậc 1 và

bậc 2 của chúng, như là những đặc trưng cơ sở cho ASR. Phương pháp này dù
được đề xuất cuối những năm 70 nhưng đã không được áp dụng suốt một thời

13


gian dài. Ngày nay, hầu hết các hệ thống nhận dạng tiếng nói đều sử dụng tổ hợp
đặc trưng này.
Những nhà khoa học thuộc công ty IBM là những người đi tiên phong
trong việc phát triển mô hình ngôn ngữ (Language Model –LM). Đây là một
công cụ hiệu quả trong việc lựa chọn chuỗi từ nhận dạng và đã được áp dụng
thành công trong tất cả các hệ thống ASR ngày nay, đặc biệt là các hệ thống nhận
dạng tiếng nói liên tục với bộ từ vựng lớn.
Các hệ thống ASR ra đời trong thời gian này có thể kể đến: hệ thống
Sphinx của trường đại học CMU, Byblos của công ty BBN, Decipher của viện
SRI, và các hệ thống khác của Lincoln Labs, MIT và AT&T Bell Labs.
Thập niên 90 ghi nhận một số kết quả nghiên cứu mới trong lĩnh vực phân
lớp mẫu. Cụ thể, bài toán phân lớp theo mô hình thống kê (dựa trên luật quyết
định Bayes), đòi hỏi phương pháp ước lượng các phân bố cho dữ liệu, được
chuyển thành bài toán tối ưu, bao gồm phép cực tiểu lỗi phân lớp bằng thực
nghiệm. Sự chuyển đổi này về mặt bản chất xuất phát từ ý tưởng sau đây: mục
tiêu của phân lớp là cực tiểu lỗi chứ không phải cung cấp hàm phân bố phù hợp
với dữ liệu nhận dạng. Khái niệm cực tiểu lỗi này đã làm nảy sinh một số kĩ thuật
như phương pháp huấn luyện riêng biệt (Discriminative Training). Hai dạng điển
hình của phép huấn luyện này là: CME (Minimum Classification Error) và MMI
(Maximum Mutual Information). Kết quả thực nghiệm cho thấy các phương pháp
huấn luyện mới đưa ra kết quả nhận dạng tốt hơn so với phương pháp huấn luyện
cực đại xác suất trước đó. Ngoài ra, nhận dạng tiếng nói trong môi trường nhiễu
cũng rất được quan tâm. Để nâng cao hiệu suất nhận dạng cho dữ liệu nhiễu, một
số kỹ thuật đã được đề xuất như: MLLR (Maximum Likelihood Linear

Regression), PMC (Parallel Model Combination).
Cuối cùng, các ứng dụng được phát triển trong giai đoạn này gồm: hệ
thống trả lời thông tin tự động cho các chuyến bay (Air Travel Information
Service –ATIS), hệ thống ghi lại các bản tin phát thanh (Broadcast News
Transcription System)….

14


Đến những năm đầu của thế kỷ 21, các nghiên cứu tập trung vào việc nâng cao
kết quả nhận dạng tiếng nói, thông qua chương trình có tên gọi EARS (Effective
Affordable Reusable Speech-to-Text) . Tới thời điểm này, tiếng nói được giả thiết là
đã được thu âm trong môi trường bình thường, không bị ràng buộc bởi bất cứ điều
kiện nào (các điều kiện giả thiết trước đây thường bao gồm tiếng nói được thu trong
phòng sạch cách âm và do người bản xứ đọc). Đích hướng tới của chương trình này là
khả năng nhận dạng, tóm tắt và chuyển ngữ các đoạn audio, giúp cho người đọc hiểu
nhanh nội dung của chúng thay vì phải nghe toàn bộ.
Hiện nay, với các ngôn ngữ phổ biến như tiếng Anh, tiếng Pháp, tiếng Tây
Ban Nha, các công trình nghiên cứu về nhận dạng tiếng nói đã thu được những
kết quả rất tốt, có nhiều ứng dụng thực tiễn được triển khai như:
- Hệ thống giao tiếp hỏi đáp thông tin tự động qua điện thoại.
- Hệ thống truy vấn thông tin thoại.
- Hệ thống thông dịch tiếng nói xuyên ngữ tự động.
- Các trạm kiểm soát, hệ thống điều khiển sử dụng tiếng nói.
- Các ứng dụng tiếng nói trên thiết bị di động.
Về mặt kinh tế và thương mại, công nghệ nhận dạng tiếng nói đã thay đổi
cách con người tương tác với hệ thống và thiết bị, không còn bó buộc trong cách
thức tương tác truyền thống (như thông qua bàn phím của máy tính hay điện
thoại) mà chuyển sang tương tác trực tiếp bằng giọng nói. Trong môi trường kinh
tế cạnh tranh, các ứng dụng dần dần đã chuyển sang tích hợp tính năng tương tác

âm thanh. Việc ứng dụng và khách hàng có thể tương tác với nhau thông qua âm
thanh không có nghĩa là loại bỏ giao diện đồ họa truyền thống mà nó cung cấp
thêm một cách truy cập thông tin và dịch vụ tiện lợi, tự nhiên hơn.
Về mặt nghiên cứu khoa học, các hệ thống nhận dạng tiếng nói hiện tại
đều dựa trên phương pháp thống kê và so khớp mẫu. Phương pháp này đòi hỏi
các tri thức về ngữ âm và một lượng lớn dữ liệu huấn luyện, bao gồm cả dạng âm
thanh và dạng văn bản, để huấn luyện bộ nhận dạng. Lượng dữ liệu huấn luyện
càng lớn, bộ dạng dạng càng có nhiều khả năng đưa ra kết quả chính xác hơn.

15


2.2.2. Việt Nam
Tại Việt Nam, đây vẫn được coi là một lĩnh vực còn khá mới mẻ và chưa có
nhiều công trình nghiên cứu chuyên sâu về lĩnh vực này. Hiện tại, có một số
nhóm nghiên cứu chính về bài toán nhận dạng tiếng nói liên tục với bộ từ vựng
lớn (LVCSR). Nhóm đầu tiên thuộc Viện Công nghệ Thông tin do PGS. Lương
Chi Mai đứng đầu, với phương pháp ANN và công cụ CSLU được sử dụng. Nhóm
thứ hai thuộc trường Đại học Khoa học Tự nhiên thành phố HồChí Minh do PGS.
Vũ Hải Quân đứng đầu, với phương pháp HMM và công cụ HTK được sử dụng,
các nghiên cứu của nhóm tập trung vào bài toán truy vấn thông tin tiếng Việt,
nhận dạng tiếng nói, hệ thống giao tiếp giữa người và máy, tìm kiếm bằng giọng
nói,...
Trong thời gian gần đây, nhóm sinh viên đại học Quốc Gia Hà Nội do
TS. Phan Xuân Hiếu làm trưởng nhóm đã cho ra đời ứng dụng “Trợ lý ảo VAV” cũng sử dụng chương trình nhận dạng tiếng nói để hỗ trợ người dùng thực
hiện giao tiếp người – máy thông qua quá trình nhận dạng tiếng nói và thực hiện
lệnh điều khiển tới thiết bị di động. Hiện tại, chương trình này đang được thử
nghiệm trên các thiết bị chạy Hệ điều hành Android. Đây là một ứng dụng khá
thú vị, nhằm hỗ trợ cho người dùng các giao tiếp cơ bản như tìm tên trong danh
bạ, gọi điện, tìm đường,… thông qua việc điều khiển bằng giọng nói.

2.3. Ứng dụng của nhận dạng tiếng nói
Ứng dụng nhận dạng tiếng nói ngày nay đang được sử dụng ngày một rộng
rãi và phổ biến. Trên thế giới đã có rất nhiều nghiên cứu về hệ thống nhận dạng
tiếng nói (tiếng Anh) đã và đang được ứng dụng hiệu quả như: Via Voice của
IBM, Spoken Toolkit của CSLU (Central of Spoken Language Understanding)…
nhưng trong tiếng Việt thì còn rất nhiều hạn chế.
Công nghệ này trong tương lai sẽ được ứng dụng nhiều trong y tế, dân
dụng, quân sự, giáo dục… nhằm tự động hóa các thao tác căn bản, giảm thiếu
nhân lực và thời gian như: hệ thống chuyển mạch tự động; ứng dụng Mobile
(Siri, trợ lý du lịch, Google Voice, báo nói); hệ thống Robot và trí tuệ nhân tạo
(Internet in Car, Cell phone speech, text, Car Navigation Systems…); phần mềm

16


hỗ trợ người khiếm thị… Và hàng ngàn các ứng dụng khác trong tương lai sẽ
được sáng chế ra nhằm mục đích hỗ trợ người dùng tốt hơn trên các thiết bị di
động. Đây vừa là cơ hội, vừa là thách thức cho các lập trình viên phải luôn học
hỏi, nhuần nhuyễn trên các ngôn ngữ, hệ nền và cập nhật công nghệ để viết ra
những ứng dụng đa nền tảng và tiện lợi khác.
Tuy nhiên cũng có không ít những khó khăn trong vấn đề nghiên cứu và sử
dụng công nghệ này vào thực tế, vì vấp phải những rào cản ngôn ngữ, cách phát
âm của mỗi người, mỗi vùng miền, từ địa phương, từ đồng âm… Để quá trình
này được hoàn thiện hơn, có lẽ phải cần thêm rất nhiều thời gian nghiên cứu cũng
như sửa chữa và hoàn thiện để công nghệ này được ứng dụng rộng rãi hơn.

17


CHƯƠNG III: CMU SPHINX

3.1. Giới thiệu
CMU Sphinx là bộ công cụ nhận dạng tiếng nói được nghiên cứu và phát
triển bởi sự kết hợp giữa nhóm nghiên cứu Sphinx của trường đại học Carnegie
Mellon University (CMU), Sun Microsystems Laboratoies, Misubishi Electric
Research Labs (MERL), Hewlett Packard (HP), với sự đóng góp của University
of California at Santa Cruz (UCSC) và Massachusetts Institute of Technology
(MIT).
3.1.1 Các tính năng chính
- Nhận dạng tiếng nói ở chế độ trực tiếp và theo lô, có khả năng nhận
dạng tiếng nói rời rạc và liên tục.
- Kiến trúc ngoại vi tổng quát, có khả năng tháo lắp. Bao gồm khả năng
bổ sung các tính năng tiền nhấn (preemphasis), cửa sổ Hamming, biến đổi
Fourier nhanh, thang lọc tần số Mel, biến đổi cosine rời rạc, chuẩn hóa cepstral,
và trích đặc trưng cepstra, delta cepstra, double delta cepstra.
- Kiến trúc mô hình ngôn ngữ tổng quát và có khả năng tháo lắp. Bao
gồm hỗ trợ mô hình ngôn ngữ dạng ASCII và các phiên bản nhị phân của
unigram, bigram, trigram, Java Speech API Grammar Format (JSGF), và ARPAformat FST grammars.
- Kiến trúc mô hình âm tổng quát. Bao gồm hỗ trợ các mô hình âm học
của Sphinx3.
- Bộ quản lý tìm kiếm tổng quát. Bao gồm hỗ trợ các tìm kiếm breadth
first và word pruning.
- Các tiện ích cho việc xử lý kết quả sau khi nhận dạng, bao gồm tính
điểm số tin cậy, phát sinh các lưới và phát sinh kịch bản ECMA vào thẻ JSGF.
Các công cụ độc lập bao gồm các công cụ để hiển thị dạng sóng và ảnh phổ, và
trích đặc trưng từ tệp tin âm thanh.
Sphinx đã trở thành một framework nhận dạng tiếng nói mạnh mẽ, đã được sử
dụng trong nhiều hệ thống nhận dạng bao gồm các chương trình điện đàm như

18



Cairo, Freeswitch, jvoicexml,… các chương trình điều khiển như Gnome-VoiceControl, Voicekey, SpeechLion,…
3.1.2 Các lợi ích khi sử dụng Sphinx
Đối với việc nghiên cứu nhận dạng tiếng nói dựa trên HMM (mô hình
Markov ẩn):
- Sphinx mặc định rằng việc tính toán Gaussian Mixture Model và việc xử
lý tìm kiếm là tách biệt nên có thể thực hiện hai loại nghiên cứu khác nhau mà
không bị xung đột với nhau. Ví dụ có thể thực hiện một sự quan sát xác suất mới
mà không đụng đên mã nguồn thực hiện tìm kiếm. Cùng lúc có thể xây dựng một
thuật tìm kiếm mới mà không phải suy nghĩ về tính toán GMM.
- Đối với việc huấn luyện, hầu hết thời gian khi ta nghiên cứu mô hình
hoá, điều mong muốn thay đổi là thuật toán ước lượng. Thuật toán Baunm –
Welch của SphinxTrain giải quyết vấn đề này qua hai giai đoạn: Đưa thống kê
xác suất đến sau ra một tập tin riêng biệt và có thể dễ dàng đọc lại bằng các thư
viện của SphinxTrain. Bạn có thể chỉ làm việc với các bản thống kê này và
khôgn cần phải tự minh thực hiện huấn luyện Baun – Welch. Điều này giúp giảm
thời gian nghiên cứu.
- Mã nguồn của Sphinx được viết rõ ràng và dễ đọc. Lý do nhiều nhà
nghiên cứu muốn sử dụng Sphinx như một công cụ vì nó có thể được thay đổi mã
nguồn dễ dàng để phù hợp với mục đích sử dụng của từng đối tượng.
3.2. Kiến trúc Sphinx
Sphinx Framework được thiết kế với độ linh hoạt và tính mô đun hóa
cao. Hình 3.1 dưới đây biểu diễn bao quát kiến trúc của hệ thống. Mỗi thành
phần được gán nhãn biểu diễn một mô đun có thể dễ dàng được thay thế, cho
phép các nhà nghiên cứu thử nghiệm một mô đun khác mà không cần phải thay
đổi các phần còn lại của hệ thống.

19



Hình 3.1: Kiến trúc Sphinx
Có ba thành phần cơ bản cấu tạo nên Sphinx: Bộ ngoại vi (FrontEnd), Bộ
giải mã (Decoder) và bộ ngôn ngữ (Linguist). Để dễ hình dung cách hoạt động
tổng quát của Sphinx ta sẽ tìm hiểu sơ lược chức năng của các bộ phận trên. Bộ
ngoại vi với các công cụ hổ trợ cho việc thu nhận và tiền xử lý các tín hiệu sẽ
nhận và thực hiện tham số hóa chúng thành tập hợp các vecto đặc trưng
(Feature). Bộ ngôn ngữ sẽ có nhiệm vụ đọc vào các mô hình ngôn ngữ với các
thông tin cách phát âm trong từ điển và thông tin cấu trúc của các mô hình âm
học rồi mô hình hóa chúng vào mộ đồ thị tìm kiếm (Search Graph). Bộ phận còn
lại là bộ giải mã (Decoder) có nhiệm vụ quan trọng nhất kết nối hai bộ phận còn
lại. Cụ thể là thành phần quản lý tìm kiếm (Search manager) trong bộ giải mã sẽ
lấy các thông tin đặc trưng từ bộ ngoại vi rồi kết hợp với đồ thị tìm kiếm được
phát sinh từ bộ ngôn ngữ để giả mã và tính toán ra kết quả nhận dạng.
Hệ thống Sphinx có một số lượng lớn các tham số cấu hình để điều
chỉnh hiệu suất của hệ

thống.

Thành phần quản lý cấu hình

(ConfigurationManager) được
dùng để cấu hình các tham số đó. Bộ quản lý cấu hình còn giúp cho
Sphinx có khả năng nạp động và cấu hình các mô đun trong thời gian thực thi,
làm cho Sphinx trở nên linh hoạt và có khả năng tháo lắp. Ví dụ Sphinx4 thường
được cấu hình với một bộ ngoại vi tạo ra các MFCC (Mel-Frequency

20


Cepstral Coefficient). Sử dụng bộ quản lý cấu hình có khả năng cấu hình lại

Sphinx để xây dựng một ngoại vi khác phát sinh ra các PLP (Perceptual Linear
Prediction coefficient) mà không cần phải sửa đổi mã nguồn hay biên dịch lại hệ
thống.
Sphinx còn cung cấp một số công cụ để giúp các ứng dụng và các nhà
phát
triển khả năng theo dõi các số liệu thống kê của bộ giải mã như tỷ lệ từ
lỗi, tốc độ thực thi và bộ nhớ sử dụng. Cũng như các phần khác của hệ thống,
các công cụ này có khả năng cấu hình mạnh mẽ, cho phép người dùng thực hiện
việc phân tích hệ thống. Hơn nữa chúng còn cung cấp một môi trường thực thi
tương tác, cho phép người dùng sửa đổi các tham số của hệ thống trong lúc hệ
thống đang chạy, giúp cho việc thử nghiệm nhanh chóng với nhiều tham số cấu
hình.
Sphinx cũng cung cấp các tiện ích hỗ trợ xem xét cấp độ ứng dụng
(application-level) của các kết quả nhận dạng. Ví dụ, các tiện ích này bao gồm
hỗ trợ xem kết quả thu được dạng lưới (lattice), các đánh giá độ tin cậy
(confidence scores) và sự hiểu ngôn ngữ.
3.2.1 Bộ ngoại vi (FontEnd)
Chức năng : Nhận vào các tín hiệu từ bên ngoại, thực hiện qua một số bộ
lọc và xử lý dữ liệu để cho kết quả là một tập các Vecto đặc trưng.

Hình 3.2: Kiến trúc tổng quát bộ Ngoại vi

21


Cấu tạo : Bên trong của bộ ngoại vi này thưc chất là một chuỗi các modun
con có khả năng xử lý tín hiệu giao tiếp được nối ghép với nhau. Các chuỗi này
có thể hoạt động song song cùng một lúc với nhau gọi là Dataproccessor.

Hình 3.3: Chuỗi các Dataprocessor trong quá trình xử lý

Việc xử lý bằng các chuỗi Dataprocessor nối ghép với nhau sẽ giúp chúng
ta linh động trong việc rút trích các thông tin đặc trưng, với một tín hiệu ta có thể
rút trích đặc trưng bằng các phương pháp khác nhau để so sánh tìm các đặc trưng
tối ưu hoặc áp dụng liên tiếp các phương pháp với nhau để tìm ra đặc trưng tốt
nhất. Đồng thời cho phép các chuỗi này thực hiện song song với nhau làm cho hệ
thống nhận diện nhanh chóng theo thời gian thực với lượng tín hiệu lớn thu vào.
3.2.2 Bộ giải mã (Decoder)
Chức năng : Bộ giải mã có nhiệm vụ chính là sử dụng các đặc trưng
(Features) từ bộ ngoại vi kết hợp với đồ thị tìm kiếm được phát sinh từ bộ ngôn
ngữ để tiến hành giải mà và áp dụng các thuật toán suy ra kết quả nhận dạng
Cấu tạo: Thành phần của bộ này tuy đơn giản nhưng rất phức tạp về thuật
toán vì ảnh hưởng tới tốc độ tìm kiếm, gồm một thành phần quản lý tìm kiếm
(SearchManager) có khả năng tháo lắp và các mã hỗ trợ khác để đơn giản hóa
quá trình giải mã cho một ứng dụng. Nên trong báo cáo chỉ trung giới thiệu thành
phần quản lý tìm kiếm.
Nhiệm vụ của thành phần quản lý tìm kiếm là nhận dạng các tập các vecto
đặc trưng để tìm ra ánh xạ tương ứng của nó trong đồ thị tìm kiếm. Để đáp ứng
tìm ra kết quả chính xác trong đồ thị tìm kiếm khi xử lý kết quả, Sphinx cung cấp
các tiện ích có khả năng phát sinh lưới và các đánh giá độ tin cậy từ kết quả. Và
thêm đặc điểm nữa khác các hệ thống khác là không gian tìm kiếm trong Sphinx
có thể được tinh chỉnh thay đổi trong quá tình tìm kiếm để tăng hiệu suất tìm
kiếm.

22


Ngoài ra để nâng cao hiệu suất của kết quả nhận dạng, Sphinx con bổ sung
thêm các công cụ hỗ trợ cho việc đánh giá kết quả nhận được, đó là thành phần
đánh giá (Scorer) và thành phần cắt tỉa (Pruner). Nói về thành phần Scorer thì nó
là một module dùng để ước lượng xác suất của trạng thái khi cung cấp các giá trị

mật độ trạng thái xuất hiện. Khi thành phần quản lý tìm kiếm yêu cầu đánh giá
điểm số cho một trạng thái, nó sẽ gọi đến thành phần Scorer, nó sẽ phân tích các
thông tin đặc trưng của trạng thái đó rồi áp dụng các phép toán để tính điểm số.
3.2.3 Bộ ngôn ngữ (Linguist)
Chức năng: Bằng các công cụ và phương pháp ngôn ngữ, bộ này sẽ đọc
vào các file cấu trúc của một ngôn ngữ rồi mô hình hóa chúng vào đồ thị tìm
kiếm để sử dụng trong việc tìm kiếm nhận dạng.
Cấu tạo: Ở bộ này cấu tạo khá phức tạp vì nó quy định hầu như toàn bộ
phạm vi ngôn ngữ mà chúng ta cần nhận dạng, nó gồm các thành phần nhỏ sau:
a. Thành phần mô hình ngôn ngữ
Thành phần này sẽ có chức năng đọc vào file cấu trúc ngôn ngữ ở cấp độ
là các từ (word level). Thành phần này có vai trò quan trọng để xác định những
thứ mà hệ thống cần nhận dạng. Cấu trúc ngôn ngữ sẽ được mô hình hóa ở thành
phần này theo hai mô hình: graph-driven grammar và Stochastic N-Gram.
Mô hình graph-driven grammar : biễu diễn một đồ thị từ có hướng trong đó
mỗi nút biểu diễn một từ đơn và mỗi cung biễu diễn xác suất dịch chuyển sang một từ.
Mô hình stochastic N-Gram : mô hình này cung cấp các xác suất cho các
từ được cho dựa vào việc quan sát n-1 từ đứng trước.
Sphinx hỗ trợ nhiều định dạng ngôn ngữ khác nhau như:
 SimpleWordListGrammar: định nghĩa một từ dựa trên một danh sách các
từ. Một than số tùy chọn chỉ ra ngữ pháp có lặp lại hay không. Nếu ngữu pháp
không lặp, ngữ pháp sẽ được dùng cho một nhận dạng từ tách biệt. Nếungữ pháp
lặp, nó sẽ được dùng để hỗ trợ liên kết nhận dạng từ tầm thường, tương đương
với một unigram grammar với xác suất bằng nhau.
 JSGFGrammar: Hỗ trợ JavaTM Speech API Grammar Format (JSGF),
định nghĩa một biểu diễn theo BNF, độc lập nền tảng, Unicode của các ngữ pháp.

23



 LMGrammar: định nghĩa một ngữ pháp dựa trên một mô hình ngôn ngữ
thống kê. LMGrammar phát sinh một nút ngữ pháp mỗi từ và làm việc tốt với các
unigram và bigram, xấp xỉ 1000 từ.
 FSTGrammar: hỗ trợ một bộ chuyển đổi trạng thái giới hạn (finite-state
tranducer) trong định dạng ngữ pháp ARPA FST.
 SimpleNGramModel: cung cấp hỗ trợ cho các mô hình ASCII N-Gram
trong định dạng ARPA. SimpleNGramModel không cố làm tối ưu việc sử dụng
bộ nhớ, do đó nó làm việc tốt với các mô hình ngôn ngữ nhỏ.
 LargeTrigramModel: cung cấp hỗ trợ các mô hình N-Gram đúng được
phát sinh bởi CMU-Cambridge Statictical Language Modeling Toolkit.
LargeTrigramModel tối ưu việc lưu trữ bộ nhớ, cho phép nó làm việc với các tập
tin rất lớn, trên 100MB.
b. Thành phần từ điển
Thành phần này cung cấp cách phát âm cho các từ ta đã xây dựng trong
mô hình ngôn ngữ và hỗ trợ phân lớp các từ thành các lớp khác nhau để hỗ trợ
cho việc tìm kiếm.
c. Thành phần mô hình âm học
Thành phần này mô hình âm học cung cấp một ánh xạ giữa một đơn vị
tiếng nói và một HMM (Hidden Markov Model) có thể được đánh giá dựa vào
các đặc trưng được cung cấp bởi bộ ngoại vi. Các ánh xạ có thể đưa thông tin vị
trí của từ và ngữ cảnh từ thành phần mô hình ngôn ngữ. Định nghĩa ngữ cảnh này
được xây dựng từ cấu trúc ngữ pháp của mô hình ngôn ngữ. Khác với các hệ
nhận dạng khác, mô hình HMM trong Sphinx có cấu trúc cố định trong bộ nhớ
và đơn thuần chỉ là một đồ thị có hướng của các đối tượng. Trong đồ thị này, mỗi
nút tương ứng với một trạng thái HMM và mỗi cung biễu diễn xác suất biến đổi
từ trạng thái này sang trạng thái khác trong HMM. Bằng cách biểu diễn HMM
như là các đồ thị có hướng của các đối tượng thay vì một cấu trúc cố định, một
bổ sung của mô hình âm học có thể dễ dàng cung cấp các HMM với các dạng
hình học tôpô khác.


24


Mỗi trạng thái HMM có khả năng phát sinh một đánh giá từ một đặc trưng
quan sát. Quy tắc để tính toán điểm số được thực hiện bởi chính trạng thái HMM, do
đó che dấu các thực thi của nó đối với phần còn lại của hệ thống, thậm chí cho
phép các hàm mật độ xác suất khác nhau được sử dụng trên mối trạng thái HMM.
Mô hình âm học cũng cho phép chia sẻ các thành phần khác nhau trên tất cả các
cấp độ. Nghĩa là các thành phần tạo nên một trạng thái HMM như các hợp
Gaussian (Gaussian mixture), các ma trận biến đổi và các trọng số hỗn hợp
(mixture weight) có thể được chia sẽ bởi bất kỳ trạng thái HMM nào.
d. Đồ thị tìm kiếm – Search Graph
Đây là kết quả mà bộ ngôn ngữ phát sinh được cuối cùng để đưa vào sử
dụng trong bộ giải mã. Độ thị tìm kiếm này là một đồ thị có hướng, trong đó mỗi
nút được gọi là một trạng thái tìm kiếm (SearchState): biểu diễn một trong hai
trạng thái: phát hoặc không phát (emitting state hay non-emitting state). Và các
đường cung biểu diễn các trạng thái biến đổi có thể, trên các cùng này có các giá
trị xác suất được tình toán từ mô hình âm học: biểu diễn khả năng chuyển từ
trạng thái này đến trạng thái kia. Một trạng thái có thể có nhiều cung hướng đến
trạng thái khác.

Hình 3.4: Ví dụ một đồ thị tìm kiếm đơn giản.

25


×