You are on page 1of 99

Trang | 1

GVHD: TS. Vũ Đức Lung SVTH: Võ Văn Hòa – Tôn Thanh Hùng
CHƯƠNG 1. TỔNG QUAN
1.1. Giới thiệu đề tài
Đề tài này mang tên “Nghiên cứu về nhận dạng giọng nói tiếng Việt và ứng
dụng trong điều khiển”. Để thực hiện được việc nhận dạng giọng nói, ta phải xây dựng
một hệ thống gọi là Hệ thống nhân dạng tiếng nói tự động (Automatic Speech
Recognition -ASR), đây là hệ thống chuyển đổi chuỗi âm thanh tiếng nói thành chuỗi
từ. Việc xây dựng một hệ nhận dạng tiếng nói không phải là một công việc đơn giản,
đòi hỏi nhóm phát triển phải am hiểu các kỹ thuật, lý thuyết từ nhiều kiến thức khác
nhau như: âm học - vật lý, ngữ âm học, ngôn ngữ học, lý thuyết xác suất thống kê,
máy học, trí tuệ nhân tạo, … Trên thế giới, nhiều nhóm nghiên cứu đã phát triển thành
công hệ nhận dạng tiếng nói cho các ngôn ngữ lớn như: tiếng Anh, tiếng Trung Quốc,
tiếng Nhật, … nhưng giải pháp nhận dạng cho tiếng Việt vẫn còn nhiều mặt hạn chế.
1.2. Các nghiên cứu có liên quan đến khóa luận
1.2.1. Trên thế giới
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) [1, p. 8]…
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) [2, p. 1]. Đá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
Trang | 2

GVHD: TS. Vũ Đức Lung SVTH: Võ Văn Hòa – Tôn Thanh Hùng
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ả [2,
p. 2].
Đế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… [2, p. 2]
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 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. [2, p. 4]
- 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.
Trang | 3

GVHD: TS. Vũ Đức Lung SVTH: Võ Văn Hòa – Tôn Thanh Hùng
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)… [2, p. 3]
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)….
Đế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) [2, p. 3]. 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ư:
Trang | 4

GVHD: TS. Vũ Đức Lung SVTH: Võ Văn Hòa – Tôn Thanh Hùng
- 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.
1.2.2. Trong nước
Tại Việt Nam, có 2 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 [3] đượ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,...
Ngoài ra, gần đây có nghiên cứu của LIG (Laboratoire Informatique de
Grenoble) hợp tác với phòng thí nghiệm MICA ở Hà Nội về sự khả chuyển của các
mô hình ngữ âm (acoustic model portability).
Trang | 5

GVHD: TS. Vũ Đức Lung SVTH: Võ Văn Hòa – Tôn Thanh Hùng
Ở trong nước còn có các đề tài liên quan như: “Chương trình đọc chính tả”, sử
dụng lượng hóa vector VQ, hạn chế về nhận dạng tiếng nói liên tục. “Phát triển các
kết quả tổng hợp, nhận dạng câu lệnh, chuỗi số tiếng Việt liên tục trên môi trường
điện thoại di động” [4], “Tăng cường độ chính xác của hệ thống mạng neuron nhận
dạng tiếng Việt” [5], “Chương trình nhận dạng lệnh 10 chữ số liên tục qua điện
thoại” của Viện công nghệ thông tin sử dụng công cụ CSLU [6], phương pháp mô
hình Artificial neural network - ANN, giải mã bằng thuật toán Viterbi, cơ sở dữ liệu
mẫu âm học của CSLU.
1.3. Mục tiêu của khóa luận
Mục tiêu chung nhất: tìm hiểu, vận dụng các kiến thức về nhận dạng tiếng nói
đề xây dựng mộ chương trình nhận dạng tiếng nói tiếng Việt và ứng dụng trong điều
khiển thiết bị mô phỏng và thiết bị thật.
Mục tiêu chi tiết:
a. Tìm hiểu các khái niệm có liên quan đến hệ nhận dạng tiếng nói để làm rõ
hơn một số yếu tố quan trọng trong việc sử dụng công cụ hỗ trợ.
b. Tìm hiểu phương pháp cài đặt công cụ hỗ trợ xây dựng hệ nhận dạng tiếng
nói.
c. Tìm hiểu xây dựng mô hình âm học, mô hình ngôn ngữ thích hợp cho tiếng
Việt.
d. Xây dựng chương trình mô phỏng, thực nghiệm, thử nghiệm giữa các mô
hình với nhau từ đó đưa ra kết luận và nhận xét.
1.4. Phạm vi
Giải quyết bài toán nhận dạng các câu lệnh điều khiển cơ bản qua 2 thực
nghiệm (demo) đó là:
- Điều khiển trình duyệt web Google Chrome bằng giọng nói với tổ hợp câu
lệnh điều khiển gồm 45 từ.
- Điều khiển mô hình xe điều khiển bằng giọng nói với tổ hợp các câu lệnh
gồm 24 từ.
Do thời gian, và giới hạn phạm vi khóa luận nên demo chỉ mới thực hiện nhận
dạng thành công với một, hai người dùng (sinh viên thực hiện khóa luận), xác suất
nhận dạng (thực tế) đúng sấp xỉ 90%.
Trang | 6

GVHD: TS. Vũ Đức Lung SVTH: Võ Văn Hòa – Tôn Thanh Hùng
1.5. Những điểm nỗi bật của khóa luận
Khóa luận được trình bày với đề mục rõ ràng và lượng kiến thức vừa đủ, giúp
những người phát triển sau này dễ dàng tiếp cận và phát triển khóa luận.
Thực hiện demo không chỉ trên máy tính mà còn có cả điều khiển cho vật thể
thật. Tuy về nguyên lý là hoàn toàn giống nhau, nhưng em đã cố gắng thực hiện triển
khai trên nhiều một trường và ứng dụng để tăng tính thực tiển cũng như xác thực của
đề tài. Khác với các đề tài nhận dạng trước chủ yếu chỉ mang tính demo nhận dạng.
1.6. Cấu trúc khóa luận
Chương 1: Trình bày tổng quan: giới thiệu về đề tài, xác định mục tiêu những
vấn đề mà đề tài cần giải quyết, giới hạn phạm vi đề tài, xác định phương pháp giải
quyết và sau cùng chỉ ra những điểm nổi bật của đề tài.
Chương 2: Trình bày cơ sở lý thuyết bao gồm: lý thuyết cơ bản về âm học, ngữ
âm học, đặc điểm trong tiếng Việt, các kiến thức cơ bản để xây dựng và sử dụng một
hệ nhận dạng tiếng nói. Cơ sở lý thuyết về rút trích đặc trưng, một trong những khái
niệm quan trọng trong các hệ nhận dạng tiếng nói. Lý thuyết về mô hình Hidden
Markov Model (HMM). Bao gồm khái niệm, các thuật toán liên quan, ý nghĩa của
HMM trong một hệ nhận dạng tiếng nói.
Chương 3: Giới thiêu các khái niệm cơ bản, quan trọng của hai Framework hổ
trợ xây dựng một hệ nhận dạng tiếng nói phổ biến nhất hiện nay là HTK, Sphinx 4.
Khóa luận này sử dụng Sphinx 4 để xây dựng chương trình demo thực nghiệm.
Chương 4: Trình bày chi tiết quá trình cài đặt Sphinx4, thu âm, xây dựng bộ
huấn luyện, tiến hành huấn luyện, giải thích kết quả huấn luyện, thực hiện thử nghiệm
so sánh HTK và Sphinx cuối cùng là xây dựng chương trình demo.
Chương 5: Nêu lên kết luận, trình bày những kết quả đạt được, những điểm
còn hạn chế, cũng như kinh nghiệm rút ra sau quá trình thực hiện khóa luận, từ đó nêu
lên các hướng cải thiện, nghiên cứu và phát triền.

Trang | 7

GVHD: TS. Vũ Đức Lung SVTH: Võ Văn Hòa – Tôn Thanh Hùng
CHƯƠNG 2. CƠ SỞ LÝ THUYẾT
2.1. Tổng Quan Về Âm Học Và Tiếng Nói
2.1.1. Âm học
2.1.1.1. Khái niệm
Khi có nguồn phát ra âm thanh (như tiếng trống, tiếng nhạc cụ, tiếng nói), ta sẽ
nghe và cảm nhận được âm thanh phát ra. Vật tạo ra được âm thanh còn được gọi là
nguồn phát âm, âm thanh chính là sự dao động cơ của các thành phần vật chất trong
một môi trường nào đó lan truyền và đến tai ta và khi đó ta cảm nhận được âm thanh.
Trong môi trường không có vật chất tồn tại như chân không, không có dao động song
cơ do đó cũng không có âm thanh tồn tại. Trong đời sống xã hội, âm thanh là phương
tiện giao tiếp, truyền đạt thông tin phổ biến và xấu hiện từ lâu đởi nhất của con người.
Khi nghiên cứu về âm thanh, người ta thường quan tâm đến 2 đặc điểm: đặc trưng vật
lý và đặt trưng sinh học.
2.1.1.2. Biểu diễn tín hiệu âm thanh trong miền thời gian và tần số.
Thông thường, người ta dùng hàm toán học x(t) để biểu diễn âm thanh trong
miền thời gian. Trong đó:
- t: thời gian
- x: biên độ biến thiên, hay còn gọi là ly độ.
Như vậy, ta có thể biểu diễn x(t) bằng đồ thị theo thời gian.Đặt x(t) = A.sin

t
= A. sin 2F
0
t

Hình 2.1 Biểu diễn tín hiệu âm thanh
Trang | 8

GVHD: TS. Vũ Đức Lung SVTH: Võ Văn Hòa – Tôn Thanh Hùng
Phổ tính hiệu: là cách biểu diễn các thành phần cấu tạo nên x(t) theo tần số.
với tín hiệu Sin nói trên, đồ thị phổ là một vạch có cao độ là A tại điển có tần số F
0.
Ta
nói đó là phổ vạch. Trong thực tế, với x(t) bất kỳ, biến thiên, không tuần hoàn, người
ta sẽ dùng phân tích Fourier để tính toán phổ tín hiệu. Khi đó, ta có phổ liên tục X().
2.1.1.3. Các loại âm thanh
Những dao động cơ mà con người nghe được gọi âm thanh (sound).
Âm thanh có thể biểu diễn theo thời gian, song cũng có thể biểu diễn theo tần
số do có thể phân tích một tín hiệu âm thanh thành tổ hợp các thành phần tần số khác
nhau (Chuỗi Fourier, tích phân Fourier). Hoặc nói một cách đơn giản thực tiễn hơn,
một âm thanh có thể là tổ hợp từ nhiều đơn âm, từ nhiều nhạc cụ, mà mỗi cái có một
tần số dao động nhất định.
Dải tần số nghe được là từ 20 Hz - 20000 Hz. Siêu âm là âm dao động ngoài
20000 Hz. Hạ âm là các âm dao động dưới 20 Hz. Tai người không nghe được siêu
âm và hạ âm.
 Tiếng nói (voice, speech) là âm thanh phát ra từ miệng người, được truyền đi
trong không khí đến tai người nghe . Dải tần số của tiếng nói đủ nghe rõ là từ
300 Hz đến 3500 Hz, là dải tần tiêu chuẩn áp dụng cho điện thoại. Còn dải tần
tiếng nói có chất lượng cao có thể là từ 200 Hz-7000 Hz, áp dụng cho các
ampli hội trường.
 Âm nhạc (music) là âm thanh phát ra từ các nhạc cụ. Dải tần số của âm nhạc là
từ 20 Hz đến 15000 Hz.
 Tiếng kêu là âm thanh phát ra từ mồm động vật. Tiếng của Cá Heo (dolphins)
là một loại âm thanh trong dảy tần số 1-164 kHz, của Con Dơi (bats) 20 - 115
kHz, của Cá Voi (whale) 30-8000 Hz. (Cần xác minh lại số liệu).
 Tiếng động là âm thanh phát ra từ sự va chạm giữa các vật. Thí dụ tiếng va
chạm của 2 cái cốc, tiếng va chạm của cánh cửa, tiếng sách rơi.
 Tiếng ồn (noise) là những âm không mong muốn.
Nhìn chung lại, xét về phương diện tín hiệu và sự cảm thụ của tai người, có hai
loại âm:
 tuần hoàn bao gồm tiếng nói, âm nhạc...
 không tuần hoàn như tín hiệu tạp nhiễu, một số phụ âm tắc xát như sh, s.
Trang | 9

GVHD: TS. Vũ Đức Lung SVTH: Võ Văn Hòa – Tôn Thanh Hùng
2.1.1.4. Đơn vị đo âm thanh
Người ta thấy rằng con người cảm nhận độ to của âm thanh không tỉ lệ thuận
với cường độ âm thanh mà theo hàm số mũ.
Bel = 10lg P2/P1. (Phát âm là Ben)
decibel = 20lg I2/I1 (Phát âm là Đề xi ben)
2.1.2. Tiếng nói
Tiếng nói là âm thanh phát ra từ miệng (người). Nghiên cứu tiếng nói gồm: Bộ
máy phát âm của con người. Thụ cảm âm thanh của tai người. Phân loại tiếng nói.
Bộ máy phát âm của con người gồm:
 Phổi đóng vai trò là cái bơm không khí, tạo năng lượng hình thành âm.
 Đôi dây thanh (vocal fold, vocal cord)là hai cơ thịt ở trong cuống họng, có hai
đầu dính nhau, còn hai đầu dao động với tần số cơ bản là Fo, tiếng Anh gọi là
pitch, fundamental frequency. Fo của nam giới nằm trong khoảng 100-200 Hz,
của nữ giới là 300-400 Hz, của trẻ em là 500-600 Hz.
 Thanh quản và vòm miệng: đóng vai như là hốc cộng hưởng, tạo ra sự phân
biệt tần số khi tín hiệu dao động từ đôi dây thanh phát ra. Đáp ứng tần số của
hốc công hưởng này có nhiều đỉnh cộng hưởng khác nhau được gọi là các
formant.
 Miệng đóng vai trò phát tán âm thanh ra ngoài.
 Lưỡi thay đổi để tạo ra tần số formant khác nhau.
 Các âm khác nhau là do vị trí tương đối của formants.
Phân loại tiếng nói theo thanh:
 Âm hữu thanh (voiced, tiếng Pháp là voisé) là âm khi phát ra có sự dao động
của đôi dây thanh, nên nó tuần hoàn với tần số Fo. Vì vậy phổ của nguyên âm
là phổ vạch, khoảng cách giữa các vạch bằng chính Fo.
 Âm vô thanh (unvoiced, tiếng Pháp là non voisé) phát ra khi đôi dây thanh
không dao động. Thí dụ phần cuối của phát âm English, chữ sh cho ra âm xát.
Phổ tín hiệu có dạng là nhiễu trắng, phổ phân bổ đều.
Phân loại tiếng nói:
Trang | 10

GVHD: TS. Vũ Đức Lung SVTH: Võ Văn Hòa – Tôn Thanh Hùng
 Nguyên âm (vowel) là âm phát ra có thể kéo dài. Tất cả nguyên âm đều là âm
hữu thanh, nghĩa là tuần hoàn và khá ổn định trong một đoạn thời gian vài chục
ms.
 Phụ âm (consonant) là âm chỉ phát ra một nhát, không kéo dài được. Có phụ
âm hữu thanh và phụ âm vô thanh.
Thanh điệu của tiếng Việt tương ứng với các dấu: không dấu, huyền, hỏi, ngã,
sắc, nặng khi viết. Phân tích máy móc cho thấy thanh điệu là sự thay đổi Fo, tần số cơ
bản pitch, trong quá trình phát âm các nguyên âm và tai người cảm nhận được. Tiếng
Việt có 6 thanh thể hiện sự phong phú và độc đáo, trong khi tiếng Trung quốc có 4
thanh. Tuy nhiên cư dân một số vùng ở Việt Nam có thể không phân biệt dấu ? và dấu
~ nên hay viết sai chính tả.
Giọng bổng (high voiced pitch, hay high pitched) hay giọng trầm (low voiced
pitch) là Fo cao hay thấp. Như vậy Fo đóng vai trò rất quan trọng trong cảm nhận,
trong thụ cảm âm thanh của con người.
Tiếng bổng hay tiếng trầm tương ứng với dải tần số cao hay thấp. Trong thợc
tế người ta dùng loa trầm là loa loa bass hay loa sub woofer, loa tép hay loa bổng
tương ứng với loa thích ứng phát các âm trong vùng tần số cao, treble.
2.2. Hệ Thống Ngữ Âm Tiếng Việt
2.2.1. Đặc điểm của tiếng Việt
Khác với một số ngôn ngữ khác như tiếng Anh, Pháp …, tiếng Việt là ngôn
ngữ đơn âm tiết, tức là các từ khi viết ra chỉ đọc lên thành một tiếng, không có từ nào
(thuần Việt) phát âm từ 2 tiếng trở lên. Một từ có cấu tạo gồm 2 phần là: nguyên âm V
(vowel) và phụ âm C (consonant) và được kết hợp theo 3 cách để tạo nên từ trong
tiếng Việt:
- C+V (phụ âm + nguyên âm). Ví dụ: ba, mẹ, đi
- C+V+C (phụ âm + nguyên âm + phụ âm). Ví dụ: bàn, con, mong
- V+C (nguyên âm + phụ âm). Ví dụ: an, ông, én
Trong tiếng Việt, ngoài 2 thành phần chính là nguyên âm, phụ âm, còn có các
thành phần khác giúp cho Việt phân loại trong âm tiết trở nên rõ ràng như nhị hợp âm,
tam hợp âm, phụ âm đơn, phụ âm kép. Khi học tiếng Việt, ngay từ đọc phải học thuộc
các nguyên âm, phụ âm, nhị hợp âm, tam hợp âm, phụ âm đơn, phụ âm kép, quy tác
Trang | 11

GVHD: TS. Vũ Đức Lung SVTH: Võ Văn Hòa – Tôn Thanh Hùng
ghép nối các thành phần đó để tạo thành âm tiết hoặc một từ, khi đó một từ tiếng Việt
được Việt ra, sẽ kèm theo các đọc của từ đó bằng quy tắc kết hợp trên. Nếu một từ
viết ra mà không theo quy tắc kế hợp được định sẵn trong tiếng Việt, tương đương với
việc từ đó không thể đọc được và cũng không có nghĩa, một từ trong tiếng Việt chỉ có
một cách đọc (trừ trường hợp tiếng vùng miền, địa phương), khác với tiếng Anh,
không có quy tắc xác định trong việc tạo ra một từ, một từ chỉ tồn tại khi nó xuất hiện
trong từ điển, khi đó phải kèm theo cách đọc của từ đó (pronuciation) thì mới có thể
đọc được.
Tiếng Việt ngoài là một ngôn ngữ đơn âm (như nói trên) còn có yếu tố đa
thanh. Đa thanh tức là có nhiều thanh điệu, nhiều dấu giọng. Cụ thể là có 6 thanh điệu,
được ghi bằng 5 ký hiệu khác nhau : dấu sắc (Á), dầu huyền (À), dầu hỏi (Ả), dầu ngã
(Ã), dấu nặng (Ạ). (Gọi tắt là 5 dấu 6 giọng). Không có dấu gọi là thanh-điệu
“ngang”.
2.2.2. Hệ thống mẫu tự và ngữ âm tiếng Việt
2.2.2.1. Hệ thống mẫu tự tiếng Việt
Bảng chữ cái tiếng Việt có 29 chữ cái [7], theo thứ tự :
[a, ă, â, b, c, d, đ, e, ê, g, h, i, k, l, m, n, o, ô, ơ, p, q, r, s, t, u, ư, v, x, y]
chia làm hai phần: mẫu tự chính (khi phát âm thì gọi là nguyên âm) và mẫu tự
phụ (khi phát âm thì gọi là phụ âm):
- Nguyên âm: Trong tiếng Việt, ngoài nguyên âm đơn còn có nguyên âm đôi,
nguyên âm ba. Có mối liên hệ phức tạp giữa nguyên âm và cách phát âm
của chúng. Một nguyên âm có thể biểu thị cho vài cách phát âm khác nhau,
tùy theo nó nằm trong nguyên âm đơn, đôi hay ba; và nhiều khi các cách
viết nguyên âm khác nhau tượng trưng cho cùng một cách phát âm.
ảng 1 Cách phát âm có thể tương ứng với từng cách viết nguyên âm [8]:
Cách viết Phát âm Cách viết Phát âm
a /ɐː/, /ɐ/, /ɜ/ o /ɔ/, /ɐw/, /w/
ă /ɐ/ ô /o/, /ɜw/, /ɜ/
â /ɜ/ ơ /əː/, /ɜ/
e /ɛ/ u /u/, /w/
Trang | 12

GVHD: TS. Vũ Đức Lung SVTH: Võ Văn Hòa – Tôn Thanh Hùng
ê /e/, /ɜ/ ư /ɨ/
i /i/, /j/ y /i/, /j/

ảng 2 Cách viết có thể tương ứng với từng cách phát âm nguyên âm đôi và ba
Nguyên âm đôi & ba
Phát âm Cách viết Phát âm Cách viết
Nguyên âm đôi
/uj/ ui /iw/ iu
/oj/ ôi /ew/ êu
/ɔj/ oi /ɛw/ eo
/əːj/ ơi /əːw/ ơu
/ɜj/ ây, ê /ɜw/ âu, ô
/ɐːj/ ai /ɐːw/ ao
/ɐj/ ay, a /ɐw/ au, o
/ɨj/ ưi /ɨw/ ưu
/iɜ/
ia, ya, iê,

/uɜ/ ua, uơ
/ɨɜ/ ưa, ươ
Nguyên âm ba
/iɜw/ iêu, yêu /uɜj/ uôi
/ɨɜj/ ươi /ɨɜw/ ươu

- Phụ âm: tiếng Việt có 17 phụ âm đơn trong tập trên gồm:
[b, c, d, đ, g, h, k, l, m, n, p, q, r, s, t, v, x]
và 11 phụ âm ghép:
[gi, gh, qu, ch, kh, ng, ngh, nh, ph, th, tr]
Trong đó chỉ có 8 phụ âm có thể nằm ở cuối từ:
[c, m, n, p, t, ng, nh, ch]
Trang | 13

GVHD: TS. Vũ Đức Lung SVTH: Võ Văn Hòa – Tôn Thanh Hùng
2.2.2.2. Hệ thống ngữ âm tiếng Việt
Trong tiếng Việt, âm tiết có cấu trúc chặt chẽ, mỗi âm vị có một vị trí nhất
định trong âm tiết. Theo một số nhà nghiên cứu âm vị học trong tiếng Việt, âm tiết
tiếng Việt có cấu tạo như sau:
Thanh điệu
Âm đầu
Vần
Âm đệm Âm chính Âm cuối
a. Âm đầu:
Tại vị trí thứ nhất trong âm tiết, âm đầu có chức năng mở đầu âm tiết. Những
âm tiết mà chính tả không ghi âm đầu như an, ấm, êm… được mở đầu bằng động tác
khép kín khe thanh, sau đó mở ra đột ngột, gây nên một tiếng bật. Động tác mở đầu ấy
có giá trị như một phụ âm và người ta gọi là âm tắc thanh hầu (kí hiệu: /?/). Như vậy,
âm tiết trong tiếng Việt luôn luôn có mặt âm đầu (phụ âm đầu). Với những âm tiết
mang âm tắc thanh hầu như vừa nêu trên thì trên chữ viết không được ghi lại, và như
vậy vị trí xuất hiện của nó trong âm tiết là zero, trên chữ viết nó thể hiện bằng sự vắng
mặt của chữ viết.
b. Âm đệm
Âm đệm là yếu tố thứ hai trong âm tiết, nó thường nằm trong các âm tiết để tạo
nên sự khác nhau giữa âm tròn môi (như “toàn”) và âm không tròn môi (như “tàn”).
Âm đệm trong tiếng Việt được miệu tả gồm 2 dạng: âm vị bán nguyên âm /u/ (trong
“toàn”) và âm vị trống (trong “tàn”). Trên chữ viết, âm đệm trống thể hiện bằng sự
vắng mặt của chữ viết, âm đệm /u/ thể hiện bằng chữ “u” (như “tuấn”) và chữ “o”
(như “loan”).
c. Âm chính
Đứng ở vị trí thứ ba trong âm tiết, âm chính được xem như là đỉnh của âm tiết,
mang âm sắc chủ yếu của âm tiết và luôn là nguyên âm. Do được xem là thành phần
hạt nhận của âm tiết, nên không bao giờ có một từ nào đọc được lại không có âm
chính, trong âm tiết, âm chính cũng đóng vai trò là âm mang thanh điệu của âm tiết.
d. Âm cuối
Âm cuối nằm cuối cùng trong âm tiết, nó có chức năng kết thúc một âm tiết,
trong các âm tiết tiếng Việt ta thường thấy có sự đối lập bằng các cách kết thúc khác
Trang | 14

GVHD: TS. Vũ Đức Lung SVTH: Võ Văn Hòa – Tôn Thanh Hùng
nhau. Một số âm tiết có âm cuối kết thúc bằng sự kéo dài và giữ nguyên (như
“má”,”ba”), số khác lại có âm cuối kết thúc bằng cách biến đổi âm tiết ở phần cuối
do có sự tham gia của âm cuối (như “bộn”, “bàn”, ”bài”). Trong trường hợp đầu, ta
gọi các âm cuối đó là âm vị rỗng, trường hợp còn lại âm cuối là những âm vị bán
nguyên âm hay phụ âm.
e. Thanh điệu
Thanh điệu là một yếu tố thể hiện độ cao và sự chuyển biến của độ cao trong
mỗi âm tiết. Mỗi âm tiết tiếng Việt nhất thiết phải được thể hiện với một thanh điệu.
Thanh điệu có chức năng phân biệt vỏ âm thanh, phân biệt nghĩa của từ.Có nhiều ý
kiến khác nhau về vị trí của thanh điệu trong âm tiết. Nhưng ý kiến cho rằng thanh
điệu nằm trong cả quá trình phát âm của âm tiết (nằm trên toàn bộ âm tiết) là đáng tin
cậy nhất về vị trí của thanh điệu.
2.3. Hệ Nhận Dạng Tiếng Nói
2.3.1. Tổng quan
Nhận dạng tiếng nói là một hệ thống tạo khả năng để máy nhận biết ngữ nghĩa
của lời nói. Về bản chất, đây là quá trình biến đổi tín hiệu âm thanh thu được của
người nói qua Micro, đường dây điện thoại hoặc các thiết bị khác thành một chuỗi các
từ. Kết quả của quá trình nhận dạng có thể được ứng dụng trong điều khiển thiết bị,
nhập dữ liệu, soạn thảo văn bản bằng lời, quay số điện thoại tự động hoặc đưa tới một
quá trình xử lý ngôn ngữ ở mức cao hơn.

Hình 2.2 Sơ đồ nhận dạng tiếng nói tổng quát
Trang | 15

GVHD: TS. Vũ Đức Lung SVTH: Võ Văn Hòa – Tôn Thanh Hùng

Hình 2.3 Các phần tử cơ bản của một hệ thống nhận dạng tiếng nói
Hình 2.3 là cấu trúc của một hệ nhận dạng tiếng nói. Tính hiệu tiếng nói đầu
tiên được tiền xử lý và rút trích đặc trưng. Kết quả thu được sau quá trình này là tập
các đặc trưng âm học (acoustic features), được tạo dựng thành 1 hay nhiều véctơ được
gọi là vector đặc trưng.
Để có thể thực hiện việc so sánh, trước hết hệ thống phải được huấn luyện và
xây dựng các đặc trưng, sau đó mới có thể dùng để so sánh với các tham số đầu vào để
nhận dạng.
Trong quá trình huấn luyện, hệ thống dùng các vector đặc trưng được đưa vào
để ước lượng, tính toán các tham số cho các mẫu (được gọi là mẫu tham khảo). Một
mẫu tham khảo chính là bản mẫu dùng để so sánh và nhận dạng, các mẫu tham khảo
này mô phỏng cho một từ, một âm tiết, hoặc thậm chí một âm vị.
Trong quá trình nhận dạng, dãy các vector đặc trưng được đem so sánh với các
mẫu tham khảo (được xây dựng ở trên). Sau đó, hệ thống tính toán độ tương đồng
(likelihood) của dãy vector đặc trưng và mẫu tham khảo. Việc tính toán độ tương đồng
được được thực hiện bằng cách áp dụng các thuật toán đã được chứng minh hiệu quả
như thuật toán Vitertbi (trong Hidden Markov Model). Mẫu có độ tương đồng cao
nhất được cho là kết quả của quá trình nhận dạng.
2.3.2. Phân loại các hệ thống nhận dạng tiếng nói
2.3.2.1. Nhận dạng từ liên tục và nhận dạng từ tách biệt
Một hệ nhận dạng tiếng nói có thể là một trong hai dạng: nhận dạng liên tục và
nhận dạng từng từ. Nhận dạng liên tục tức là nhận dạng tiếng nói được phát liên tục
Trang | 16

GVHD: TS. Vũ Đức Lung SVTH: Võ Văn Hòa – Tôn Thanh Hùng
trong một chuỗi tín hiệu, chẳng hạn như một câu nói, một mệnh lệnh hoặc một đoạn
văn được đọc bởi người dùng. Các hệ thống loại này rất phức tạp, nó phức tạp ở chỗ
các từ được phát liên tục khó xử lý kịp (nếu cần thời gian thực), hoặc khó tách ra nếu
như người nói liên tục không có khoảng nghỉ (thông thường rất hay xảy ra trong thực
tế). Kết quả tách từ ảnh hưởng rất lớn đến các bước sau, cần xử lý thật tốt trong quá
trình này. Trái lại, đối với mô hình nhận dạng từng từ, mỗi từ cần nhận dạng được
phát âm một cách rời rạc, có các khoảng nghỉ trước và sau khi phát âm một từ. Mô
hình loại này dĩ nhiên đơn giản hơn mô hình nhận dạng liên tục, đồng thời cũng có
những ứng dụng thực tiễn như trong các hệ thống điều khiển bằng lời nói, quay số
bằng giọng nói..., với độ chính xác khá cao, tuy nhiên khó áp dụng rộng rãi đối với mô
hình trên.
2.3.2.2. Nhận dạng phụ thuộc người nói và độc lập người nói
Đối với nhận dạng phụ thuộc người nói thì mỗi một hệ nhận dạng chỉ phục vụ
được cho một người, và nó sẽ không hiểu người khác nói gì nếu như chưa được huấn
luyện lại từ đầu. Do đó, hệ thống nhận dạng người nói khó được chấp nhận rộng rãi vì
không phải ai cũng đủ khả năng kiến thức và nhất là kiên nhẫn để huấn luyện hệ
thống. Đặc biệt là hệ thống loại này không thể ứng dụng ở nơi công cộng. Ngược lại,
hệ thống nhận dạng độc lập người nói thì lý tưởng hơn, ứng dụng rộng rãi hơn, đáp
ứng được hầu hết các yêu cầu đề ra. Nhưng không may là hệ thống lý tưởng như vậy
gặp một số vấn đề, nhất là độ chính xác của hệ thống. Trong thực tế, mỗi người có
một giọng nói khác nhau, thậm chí ngay cùng một người cũng có giọng nói khác nhau
ở những thời điểm khác nhau. Điều này ảnh hưởng rất lớn đến việc nhận dạng, nó làm
giảm độ chính xác của hệ thống nhận dạng xuống nhiều lần. Do đó để khắc phục
khuyết đ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, đòi hỏi lượng dữ liệu huấn luyện lớn hơn nhiều lần (dữ liệu được thhu từ nhiều
giọng khác nhau của nhiều người). Nhưng điều này cũng không cải thiện được bao
nhiêu chất lượng nhận dạng. Do đó, trong thực tế có một cách giải quyết là bán độc
lập người nói. Phương pháp này thực hiện bằng cách thu mẫu một số lượng lớn các
giọng nói khác biệt nhau. Khi sử dụng, hệ thống sẽ được điều chỉnh cho phù hợp với
giọng của người dùng, bằng cách nó học thêm một vài câu có chứa các từ cần thiết
(người dùng trước khi sử dụng hệ thống cần phải qua một quá trình ngắn huấn luyện
Trang | 17

GVHD: TS. Vũ Đức Lung SVTH: Võ Văn Hòa – Tôn Thanh Hùng
hệ thống). Nhận dạng độc lập người nói khó hơn rất nhiều so với nhận dạng phụ thuộc
người nói. Cùng một từ, một người, dù có cố gắng phát âm cho thật giống đi nữa thì
cũng có sự khác biệt. Đối với bộ não con người, một hệ thống hoàn hảo, thì sự khác
biệt đó có thể được bỏ qua do ngữ cảnh, và do có phần xử lý làm mờ đi của não.
Nhưng đối với máy tính thì rất khó xây dựng được một mô hình giải quyết cho tất cả
các trường hợp khác biệt đó.
2.3.3. Một số phương pháp nhận dạng tiếng nói
Có 3 phương pháp phổ biến được sử dụng trong nhận dạng tiếng nói hiện nay:
- phương pháp âm học- ngữ âm học.
- phương pháp nhận dạng mẫu.
- phương pháp ứng dụng trí tuệ nhân tạo.
2.3.3.1. Phương pháp âm học-ngữ âm học (acoustic-phonetic)
Phương pháp này dựa trên lý thuyết về Âm học-Ngữ âm học. Lý thuyết đó cho
biết: tồn tại các đơn vị ngữ âm xác định, có tính phân biệt trong lời nói và các đơn vị
ngữ âm đó được đặc trưng bởi một tập các tín hiệu tiếng nói. Các bước nhận dang của
phương pháp gồm:
Bước 1: Phân đoạn và gán nhãn. Bước này chia tín hiệu tiếng nói thành các
đoạn có đặc tính âm học đặc trưng cho một (hoặc một vài) đơn vị ngữ âm, đồng thời
gán cho mỗi đoạn âm thanh đó một hay nhiều nhãn ngữ âm phù hợp.
Bước 2: Nhận dạng. Bước này dựa trên một số điều kiện ràng buộc về từ vựng,
ngữ pháp v.v… để xác định một hoặc một chuỗi từ đúng trong các chuỗi nhãn ngữ âm
được tạo ra sau bước 1.
2.3.3.2. Phương pháp nhận dạng mẫu
Phương pháp nhận dạng mẫu không cần xác định đặc tính âm học hay phân
đoạn tiếng nói mà sử dụng trực tiếp các mẫu tín hiệu tiếng nói trong quá trình nhận
dạng. Các hệ thống nhận dạng tiếng nói theo phương pháp này được phát triển theo
hai bước cụ thể là:
Bước 1: Sử dụng tập mẫu tiếng nói (cơ sở dữ liệu mẫu tiếng nói) để đào tạo các
mẫu tiếng nói đặc trưng (mẫu tham chiếu) hoặc các tham số hệ thống.
Bước 2: Đối sánh mẫu tiếng nói từ ngoài với các mẫu đặc trưng để ra quyết
định. Trong phương pháp này, nếu cơ sở dữ liệu tiếng nói cho đào tạo có đủ các phiên
Trang | 18

GVHD: TS. Vũ Đức Lung SVTH: Võ Văn Hòa – Tôn Thanh Hùng
bản mẫu cấn nhận dạng thì quá trình đào tạo có thể xác định chính xác các đặc tính âm
học của mẫu (các mẫu ở đây có thể là âm vị, từ, cụm từ…). Hiện nay, một số kỹ thuật
nhận dạng mẫu được áp dụng thành công trong nhận dạng tiếng nói là lượng tử hóa
vector, so sánh thời gian động (DTW), mô hình Markov ẩn (HMM), mạng nơron nhân
tạo (ANN).
2.3.3.3. Phương pháp ứng dụng trí tuệ nhân tạo
Phương pháp ứng dụng trí tuệ nhân tạo kết hợp các phương pháp trên nhằm tận
dụng tối đa các ưu điểm của chúng, đồng thời bắt chước các khả năng của con người
trong phân tích và cảm nhận các sự kiện bên ngoài để áp dụng vào nhận dạng tiếng
nói.
Đặc điểm của các hệ thống nhận dạng theo phương pháp này là: Sử dụng hệ
chuyên gia để phân đoạn, gán nhãn ngữ âm. Điều này làm đơn giản hóa hệ thống so
với phương pháp nhận dạng ngữ âm.Sử dụng mạng nơron nhân tạo để học mối quan
hệ giữa các ngữ âm, sau đó dùng nó để nhận dạng tiếng nói.
Việc sử dụng hệ chuyên gia nhằm tận dụng kiến thức con người vào hệ nhận
dạng:
- Kiến thức về âm học: Để phân tích phổ và xác định đặc tính âm học của các
mẫu tiếng nói.
- Kiến thức về từ vựng: sử dụng để kết hợp các khối ngữ âm thành các từ cần
nhận dạng.
- Kiến thức về cú pháp: nhằm kết hợp các từ thành các câu cần nhận dạng.
- Kiến thức về ngữ nghĩa: nhằm xác định tính logic của các câu đã được nhận
dạng.
2.4. Rút Trích Đặt Trưng Tín Hiệu Tiếng Nói
2.4.1. Giới thiệu
Rút trích đặc trưng của tiếng nói là một trong những khâu quan trọng trong quá
trình nhận dạng tiếng nói. Dữ liệu tiếng nói thông thường dưới dạng sóng âm đã lưu
trữ trong máy tính là loại dữ liệu khó xử lý, học mẫu huấn luyện, và so sánh, vì thế
việc rút trích đặc trưng tiếng nói là cần thiết. Kết quả của quá trình rút trích đặc trưng
là 1 hoặc nhiều vector đặc trưng, các vector này chứa các tham số mang giá trị quan
trọng của tín hiệu tiếng nói, làm giảm đi rất nhiều số lượng tính toán cần thực hiện,
Trang | 19

GVHD: TS. Vũ Đức Lung SVTH: Võ Văn Hòa – Tôn Thanh Hùng
làm rõ ràng hơn sự khác biệt giữa 2 tín hiệu tiếng nói. Hình bên dưới minh họa cho
quá trình rút trích đặc trưng.
Có nhiều phương pháp để thực hiện rút trích đặc trưng, 2 trong số đó là phương
pháp MFCC và LPC.

Hình 2.4 Công đoạn rút trích đặc trưng
Hình 2.4 mô tả quá trình của việc rút trích đặt trưng, tín hiệu âm thanh lưu
trong máy tính là tín hiệu digital [9], mô hình hóa tín hiệu âm thanh trong máy tính
dưới dạng toán học là một hàm s(n), trong đó n chỉ thời gian (thông thường là ms) và
s(n) là biên độ âm.
2.4.2. Làm rõ tín hiệu (pre-emphasis - tiền khuếch đại)
Theo các nghiên cứu về âm học thì giọng nói có sự suy giảm 20dB/decade khi
lên tần số cao do đặc điểm sinh lý của hệ thống phát âm con người. Để khắc phục sự
suy giảm này, chúng ta sẽ phải tăng cường tín hiệu lên một giá trị gần 20dB/decade.
Bên cạnh đó, hệ thống thính giác con người có xu hướng nhạy cảm hơn với vùng tần
số cao. Dựa vào những đặc điểm trên, ta sẽ áp dụng bộ lọc thông cao để tiền xử lý các
tín hiệu thu được nhằm làm rõ vùng tín hiệu mà tai người có thể nghe được. Bộ lọc áp
dụng công thức sau:
Trang | 20

GVHD: TS. Vũ Đức Lung SVTH: Võ Văn Hòa – Tôn Thanh Hùng

(2.1)
Trong đó a
pre
là hệ số nhấn mạnh, thường có giá trị là 0.9700002861.
Bộ lọc này có chức năng tăng cường tín hiệu tại tần số cao (tần số tren 1KHz).
Tín hiệu tiếng nói đã số hoá, s(n), được đưa qua một hệ số bậc thấp, để làm
phẳng tín hiệu về phổ và làm nó ít bị ảnh hưởng bởi các hiệu ứng có độ chính xác hữu
hạn sau này trong quá trình xử lý tín hiệu. Hệ thống số được dùng trong khối tiền
khuếch đại vừa cố định vừa thích nghi chậm (ví dụ, để lấy trung bình các điều kiện
chuyển, các nền nhiễu, hoặc thậm chí lấy trung bình phổ tín hiệu).
Trong trường hợp sử dụng bộ lọc áp theo công thức 2.1, đầu ra của dãy tiền
khuếch đại s’(n), liên quan đến đầu vào của dãy tín hiệu s(n), theo đẳng thức vi phân
sau:
) 1 ( ) ( ) ( ' ÷ ÷ = n s a n s n s
pre
(2.2)
2.4.3. Tách từ
Tín hiệu tiếng nói s(n) sau khi được làm nỗi tín hiệu, sẽ được chuyển sang để
tách từ, tách từ là công đoạn chia toàn bộ tính hiệu thu được thành những đoạn tính
hiệu mà trong đó chỉ chứa nội dung của mộ từ
Có nhiều phương pháp để tách điểm đầu và điểm cuối của một ra khỏi toán bộ
tín hiệu tiếng nói, trong đó phương pháp dùng hàm năng lượng thời gian ngắn là
phương pháp được sử dụng phổ biến. Với một cửa sổ kết thức tại mẫu thứ m, hàm
năng lượng thời gian ngắn E(m) được xác định:
E
m
=

(2.3)
2.4.3.1. Phân đoạn thành các khung (Framing)
Tín hiệu tiếng nói là một đại lượng biên thiên theo thời gian và không ổn định
nên không thể xử lý trực tiếp trên đó được. Do đó, tín hiệu được chia ra thành các
khung với chiều dài tương đối nhỏ để lấy được các đoạn tín hiệu tương đối ổn định và
xử lý tiếp trong các bộ lọc tiếp theo. Theo các nghiên cứu đã có thì trong khoang thời
gian 10-20ms, tín hiệu tiếng nói tương đối ổn định. Nên ở bước này, người ta thường
phân tín hiệu thành các khung với kích thước 20-30ms. Nhưng để tránh mất mát và
Trang | 21

GVHD: TS. Vũ Đức Lung SVTH: Võ Văn Hòa – Tôn Thanh Hùng
làm gián đoạn tín hiệu ban đầu, khi phân khung, người ta chồng lấp các khung lên
nhau khoảng 10-15ms.
Trong bước này tín hiệu được tiền khuếch đại,
~
( ) s n
, được chia khối thành các
khung N mẫu, với các khung kề nhau được ngăn cách bởi M mẫu.

Hình 2.5 Ví dụ phân khung đoạn tín hiệu
Khung đầu tiên chứa N mẫu tiếng nói đầu tiên. Khung thứ hai bắt đầu sau
khung thứ nhất M mẫu, và chồng lên nó N - M mẫu. Thông thường, khung thứ 3 bắt
đầu sau 2M so với khung đầu tiên (hoặc M mẫu sau khung thứ 2) và chồng lên khung
đầu N - 2M mẫu. Quá trình này tiếp tục cho đến khi toàn bộ tiếng nói được tính hết
cho một hay nhiều khung. Dễ thấy là nếu MsN thì các khung chồng lên nhau và ước
đoán phổ LPC kết quả sẽ là tương quan từ khung này đến khung khác; nếu M<<N thì
các ước đoán phổ LPC từ khung này đến khung khác sẽ khá trôi chảy. Nói cách khác,
nếu M>N, sẽ không có chồng lấp giữa các khung kề nhau; thực tế, một số tín hiệu
tiếng nói sẽ hoàn toàn bị mất (tức là không bao giờ xuất hiện trong bất cứ khung phân
tích nào), và mối tương quan giữa các ước đoán phổ LPC của các khung kề nhau sẽ
không chứa một thành phần nhiễu mà cường độ của nó tăng như M (nghĩa là, khi có
nhiều tiếng nói bị bỏ qua không phân tích). Tình trạng này là không thể chấp nhận
trong phân tích LPC cho nhận dạng tiếng nói. Nếu ta biểu thị khung tiếng nói thứ


x n

( )
và có L khung trong toàn bộ tín hiệu tiếng nói thì
x n s M n n N L

  ( )
~
( ) , ,..., , ,... = + = ÷ = ÷ 01 1 01 1

(2.4)
Trang | 22

GVHD: TS. Vũ Đức Lung SVTH: Võ Văn Hòa – Tôn Thanh Hùng
Tức là, khung tiếng nói đầu tiên, x
0
(n), chứa các mẫu tiếng nói
~
( ) s 0
,
~
( ) s 1
, ..,
~
( ) s N ÷1
, khung tiếng nói thứ hai, x
1
(n), chứa các mẫu
~
( ) s M
,
~
( ) s M +1
,...,
~
( ) s M N + ÷1
,và khung thứ L, x
L-1
(n), chứa các mẫu
~
( ( )) s M L ÷1
,
~
( ( ) ) s M L ÷ + 1 1
, ...,
~
( ( ) ) s M L N ÷ + ÷ 1 1
.
2.4.4. Lấy cửa sổ khung tín hiệu
Để làm rõ tín hiệu và đồng thời giảm tính gián đoạn tín hiệu ở đầu và cuối của
mỗi khung trong quá trình xử lý rút trích đặc trưng, khi xử lý ,các khung sẽ được nhân
với hàm cửa sổ, thường là cửa sổ Hamming. Kết quả của việc này là làm cho khung
tín hiệu mượt hơn, giúp cho các thành phần có tần số cao suất hiện trong phổ. Công
thức hàm cửa sổ tổng quát:

(2.5)
Trong đó w(n) gọi là hàm cửa sổ. Tùy vào giá trị của α mà có các cửa sổ sau:
Với α=0.54, ta có cửa sổ Hamming (Hamming Window):

(2.6)
Với định nghĩa cửa sổ w(n) theo công thức trên, 0 s n s N-1, thì kết quả chia
cửa sổ cho khung x(n):
1 0 ) ( ) ( ) (
~
÷ s s = N n n w n x n x
l 

(2.7)

Hình 2.6 Cửa sổ Hamming và tín hiệu sau khi nhân với hàm cửa sổ Hamming
Trang | 23

GVHD: TS. Vũ Đức Lung SVTH: Võ Văn Hòa – Tôn Thanh Hùng
Ý nghĩa của việc áp cửa sổ : là nhằm mục đích có được dữ liệu theo miền tần
số chuẩn để đưa vào phép biến đổi Fourier rời rạc.
2.4.5. Rút trích đặc trưng
2.4.5.1. Phương pháp rút trích đặc trưng MFCC
Trong lĩnh vực xử lý và nhận dạng tiếng nói, việc tiền xử lý các tín hiệu thu
được và rút trích đặc trưng là một kỹ thuật thiết yếu mà bất cứ hệ thống nhận dạng nào
cũng bắt buộc phải có. Trích rút đặc trưng có vai trò quan trọng quyết định hiệu suất
của quá trình nhận dạng mẫu(cả trong quá trình nhận dạng và trong quá trình huấn
luyện). Công việc của bước này là phân tích phổ spectral nhằm mục đích xác định các
thông tin quan trọng, đặc trưng của tiếng nói, cắt giảm bớt các yếu tố không cần thiết
trong quá trình nhận dạng để làm giảm khối lượng dữ liệu cần xử lý.
Mel Scale Frequency Cepstral Coefficients (MFCC) là một phương pháp rút
trích đặc trưng sử dụng dãy bộ lọc được Davis và Mermelstein đưa ra vào năm 1980
khi họ kết hợp các bộ lọc cách khoảng không đều với phép biến đổi Cosine rời rạc (
Discrete Cosin Transform ) thành một thuật toán hoàn chỉnh ứng dụng trong lĩnh vực
nhận dạng tiếng nói liên tục. Động thời định nghĩa khái niệm hệ số Cepstral và thang
đo tần số Mel (Mel scale).

Hình 2.7 Tổng quát phương pháp rút trích đặc trưng MFCC
Trang | 24

GVHD: TS. Vũ Đức Lung SVTH: Võ Văn Hòa – Tôn Thanh Hùng
Tóm tắt quá trình rút trích đặc trưng theo MFCC sẽ như sau: Ban đầu tín hiệu
sau khi qua tiền xử lý sẽ được chia thành các Frame có khoảng thời gian ngắn. Từ mỗi
frame đó sau khi áp dụng các bước chuyển đổi và lọc sẽ ra được một vecto tương ứng.
Và xong quá trình này, ta sẽ có đặc trưng của dãy tín hiệu input vào là một dãy vecto
đặc trưng output ra.
f. Biến đổi FFT (Fast Fourier Transform )
Biến đổi FFT thực chất là một biến đổi DFT (Discrete Fourier Transform )
nhưng được tối ưu bằng các thuật toán nhanh và gọn hơn để đáp ứng các yêu cầu xử
lý theo thời gian thực trong các lĩnh vực như xử lý âm thanh, hình ảnh,…
Fast Fourier là một phép biến đổi thuận nghịch có đặc điểm bảo toàn tính tuyến
tính bất biến, tuần hoàn và tính trễ. Dùng để biến đổi tín hiệu tương tự sang miền tần
số, nó gồm các công thức như sau:
Công thức phép biến đổi thuận (dùng để phân tích tín hiệu):
k=0,1,2,…, N-1
(2.8)
Công thức phép biến đổi nghịch (dùng để tổng hợp lại tín hiệu):
n=0,1,2,…, N-1
(2.9)
Trong đó: x(n)=a(n)+b(n)
Kết quả chúng ta có được khi thực hiện FFT là dãy tín hiệu X
t
(k) để đưa vào bộ
lọc Mel-scale
g. Lọc qua bộ lọc Mel-scale
Trong lĩnh vực nghiên cứu về nhận dạng tiếng nói, đòi hỏi chúng ta phải hiểu
và mô phỏng chính xác khả năng cảm thụ tần số âm thanh của tai người. Chính vì thế
các nhà nghiên cứu đã xây dựng một thang tần số - hay gọi là thang tần số Mel (Mel
scale) dựa trên cơ sở thực nghiệm nhiều lần khả năng cảm nhận âm thanh của con
người. Thang tần số Mel được định nghĩa trên tần số thực theo công thức:

(2.10)

Trang | 25

GVHD: TS. Vũ Đức Lung SVTH: Võ Văn Hòa – Tôn Thanh Hùng
Trong đó: m là tần số trong thang Mel, đơn vị là Mel
f là tần số thực, đơn vị là Hz.

Hình 2.8 Biểu đồ thang tần số Mel theo tần số thực.
Theo biểu độ trên thì trong khoảng tần số thấp hơn 1kHz thì đồ thị trên gần như
là tuyến tính, nghĩa là trong khoảng tần số dưới 1kHz, tần số Mel và tần số thực.
Trong khoảng tần số trên 1kHz thì mối quan hệ này la quan hệ Logarit.
Dựa vào các thực nghiệm trên tai người, người ta đã xác định được các tần số
thục mà tai người có thể nghe được và chứa đựng nhiều thông tin. Sau đó chuyển các
tần số này sang tần số Mel và xây dựng một thang đo như sau:

Hình 2.9 ăng lọc tần số Mel.
Trang | 26

GVHD: TS. Vũ Đức Lung SVTH: Võ Văn Hòa – Tôn Thanh Hùng
Ta dùng thang đo này để áp vào dãy sóng tín hiệu thu được sau khi thực hiên
FFT

Hình 2.10 Đưa tín hiệu vào băng lọc tần số Mel.
Kết quả của bước này là chúng ta sẽ có được tập hợp các tần số Y
t
(m) là giao
điểm của sóng tần số vời thang tần số Mel từ dãy tín hiệu X
t
(k)
h. Logarit giá trị năng lượng (Logarit of filter energies)
Mục đích của bước này là nén các giá trị đã lọc được vào miền giá trị nhỏ hơn
để xử lý nhanh hơn. Nên các giá trị thu được ở mỗi kênh lọc sẽ được lấy Logarit.

i. Biến đổi cosin rời rạc
Dựa vào phổ tín hiệu tiếng nói của con người trên miền tần số, ta có thể thấy
rằng phổ tín hiệu khá trơn, nên khi lấy các giá trị năng lượng ra từ các bộ lọc, các giá
trị này có sự tương quan khá gần nhau, dẫn đến các đặc trưng ta rút được sẽ không rõ
ràng. Chính vì thế, ta thực hiên biến đổi DCT (Discrete Cosin Transform) để làm rời
rạc các giá trị này ra cho nó ít tương quan với nhau, làm tăng tính đặc trưng của các
tham số. Giá trị thu được sau bước này ta gọi là hệ số Cepstral.

(2.11)
N là số kênh lọc.
Trong đó: M
j
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.
Trang | 27

GVHD: TS. Vũ Đức Lung SVTH: Võ Văn Hòa – Tôn Thanh Hùng
Thông thường người ta lấy i trong đoạn [1,12] là số lượng đặc trưng trong mỗi
vecto đặc trưng. Trong các hệ nhận dạng, số lượng đặc trưng nằm trong khoảng
(10,15) là đủ để cho kết quả nhận dạng tương đối mà dữ liệu xử lý lại không quá lớn.
Sau khi thực hiện biến đổi DCT, theo công thức trên ta thấy các hệ số thu được
sẽ tăng tuyến tính theo số bậc của nó. Hệ số Cepstral có số bậc cao sẽ có giá trị rất
cao, ngược lại các hệ số với số bậc thấp sẽ có giá trị rất thấp. Sự chênh lệch này sẽ gây
khó khăn cho chúng ta trong qua trình mô hình hóa dữ liệu và xử lý sau này. Vì khi có
sự chênh lệch cao, ta phải dùng miền giá trị lớn để biểu diễn dữ liệu, và gặp khó khăn
khi đưa vào các mô hình xử lý xác suất,..Nên để có các hệ số tối ưu cho các qua trình
sau, ta sẽ thực hiện việc điều chỉnh các hệ số này để giảm sự chênh lệch. Việc này
thực hiện bằng công thức:

(2.12)
Cuối cùng chúng ta sẽ thu được các giá hệ số Cepstral đã được tinh chế. Các hệ
số này là đặc trưng MFCC mà chúng ta sẽ sử dụng để huấn luyện và nhận dạng.
2.4.5.2. Phương pháp trích đặc trưng LPC
j. Giới thiệu
LPC là chữ viết tắt của cụm từ: Linear Predictive Coding (mã hóa dự báo tuyến
tính). Đây được xem là một trong những phương pháp được sử dụng rộng rãi trong
việc rút trích đặt trưng của tín hiệu âm thanh (hay còn được gọi là tham số hóa tính
hiệu âm thanh). Đóng vai trò quan trọng trong các kỹ thuật phân tích tiếng nói. Đây
còn được xem là một phương pháp hiệu quả cho việc nén (mã hóa với chất lượng tốt)
dữ liệu tiếng nói ở mức bit rate thấp.
k. Cơ sở âm học của phương pháp LPC
Tiếng nói hay còn được xem là âm thanh do con người phát ra từ miệng bắt
nguồn từ từ sự rung động của dây thanh âm (do sự thay đổi áp suất không khí từ phổi
đưa lên), sự rung động này mang 2 đặc tích là cường độ (intensity) và tần số
(frequency). Âm thanh này sau đó được truyền qua cuống họng đến khoang miệng và
khoan mũi. Tại đây dựa vào cấu tạo vòng miệng khi nói, cách đặt lưỡi, chuyễn động
của lưỡi và cơ miệng… sẽ góp phần gây ra sự cộng hưởng của âm thanh (hay còn
được gọi là các Formant), kết quả chính là tiếng nói mà ta nghe được. LPC phân tích
những tín hiệu tiếng nói bằng cách ước tính các formant, loại bỏ đi những thành phần
Trang | 28

GVHD: TS. Vũ Đức Lung SVTH: Võ Văn Hòa – Tôn Thanh Hùng
ảnh hưởng của nó (những thứ không mang giá trị tiếng nói trong âm phát ra), và ước
lượng các đặc điểm về cường độ, tần số của phần âm thanh còn lại. Qúa trình loại bỏ ở
trên còn được gọi là quá trình lọc nghịch đảo (inverse filtering) và phần âm thanh còn
lại gọi là “cặn”(residue) mang những yếu tố và đặc trưng cốt lõi của âm thanh. Kết
quả còn lại sau quá trình LPC là những con số, mà mô tả những đặc điểm quan trọng
của các formant cũng như phần âm thanh còn lại. các con số này có thể được dùng đại
diện như tín hiệu tiếng nói ban đầu, hiệu quả hơn trong việc lưu trữ, phân tích nội
dung, truyền tải tiếng nói… LPC còn được dùng trong quá trình tổng hợp lại tiếng nói
từ các con số đặc trưng trên.
l. Nội dung phương pháp rút trích đặc trưng LPC
Ý tưởng của LPC là một mẫu tiếng nói cho trước ở thời điểm n, s(n), có thể
được xấp xỉ bằng một tổ hợp tuyến tính của p mẫu tiếng nói trước đó:
s(n) ~ a
1
s(n-1) + a
2
s(n-2) + ... + a
p
s(n-p) (2.13)
Trong đó a
1
, a
2
, ..., a
n
coi là các hằng trên toàn khuông phân tích tiếng nói. Ta
chuyển đẳng thức (1) trên tương đương bằng cách thêm giới hạn kích thích, Gu(n), có:
¿
=
+ ÷ =
p
i
i
n Gu i n s a n s
1
) ( ) ( ) (

(2.14)
Trong đó u(n) là kích thích đã chuẩn hoá, G là độ khuếch đại của kích thích.
Biểu diễn đẳng thức (2) trong miền z ta có quan hệ:
S n a z S z GU z
i
i
i
p
( ) ( ) ( ) = +
÷
=
¿
1

(2.15)
dẫn đến hàm chuyển:
H z
S z
GU z
a z
A z
i
i
i
p
( )
( )
( ) ( )
= =
÷
=
÷
=
¿
1
1
1
1

(2.16)
Hình 2.11 diễn tả đẳng thức bên trên, mô tả nguồn kích thích đã chuẩn hóa
u(n), sau đó được nâng mức với độ khuếch đại G, và đóng vai trò đầu vào của hệ toàn
cực,
) (
1
) (
z A
z H = , tạo ra tín hiệu tiếng nói s(n).
Trang | 29

GVHD: TS. Vũ Đức Lung SVTH: Võ Văn Hòa – Tôn Thanh Hùng

Hình 2.11 Mẫu tiếng nói dự báo tuyến tính
Chức năng kích thích thực tế đối với tiếng nói về bản chất là chuỗi liên tục các
xung gần như điều hoà (với các âm hữu thanh) và là một nguồn nhiễu ngẫu nhiên (với
các âm vô thanh), mẫu hoà âm thích hợp đối với tiếng nói, ứng với phân tích LPC
được mô tả trong phía dưới. Tại đây, nguồn kích thích đã chuẩn hoá được chọn nhờ
một chuyển mạch mà vị trí của nó được điều khiển bởi đặc tính hữu thanh/vô thanh
của tiếng nói, chọn cả chuỗi xung gần điều hoà làm kích thích đối với các âm hữu
thanh, chọn cả chuỗi nhiễu ngẫu nhiên cho các âm vô thanh. Độ khuếch đại G của
nguồn được ước tính từ tín hiệu tiếng nói, và nguồn được nâng mức được dùng làm
đầu vào của bộ lọc số (H(z)), điều khiển bởi đặc tính của các tham số dải phát âm của
tiếng nói đang được tạo. Như vậy các tham số của mẫu này là phân loại hữu thanh/vô
thanh, chu kỳ cao độ của âm hữu thanh, tham số khuếch đại, và các hệ số của bộ lọc
số, {a
k
}. Các tham số này đều biến đổi rất chậm theo thời gian.

Hình 2.12. Mẫu phân tích tiếng nói theo phương pháp LPC
Dựa vào mẫu trên hình 1, quan hệ chính xác giữa s(n) và u(n) là
¿
=
+ ÷ =
p
k
k
n Gu k n s a n s
1
) ( ) ( ) (

(2.17)
Ta coi tổ hợp tuyến tính của các mẫu tiếng nói trước đó là ước lượng ) (n s ,
được định nghĩa là:
Trang | 30

GVHD: TS. Vũ Đức Lung SVTH: Võ Văn Hòa – Tôn Thanh Hùng
s n a n k
k
k
p
( ) ( ) = ÷
=
¿
1

(2.18)
Bây giờ ta thiết lập lỗi dự báo, e(n), được định nghĩa là:
e n s n s n s n a n k
k
k
p
( ) ( ) ( ) ( ) ( ) = ÷ = ÷ ÷
=
¿
1

(2.19)
với hàm chuyển đổi lỗi:
A z
E z
S z
a z
k
k
k
p
( )
( )
( )
= = ÷
÷
=
¿
1
1

(2.20)
Rõ ràng là khi s(n) được tạo thực sự bởi một hệ tuyến tính kiểu như hình 13 thì
lỗi dự báo e(n) sẽ bằng Gu(n), kích thích được khuếch đại.
Vấn đề cơ bản của phân tích dự báo tuyến tính là xác định tập các hệ số dự báo,
{a
k
}, trực tiếp từ tín hiệu tiếng nói. Vì các đặc tính phổ của tiếng nói biến đổi theo thời
gian nên các hệ số dự báo tại thời điểm cho trước n, phải được ước lượng từ một đoạn
tín hiệu tiếng nói ngắn xuất hiện quanh thời điểm n. Như vậy cách cơ bản là tìm một
tập các hệ số dự báo giảm thiểu lỗi dự báo trung bình bậc hai trong một đoạn dạng
sóng tiếng nói. (Thường thì kiểu phân tích phổ thời gian ngắn nàyđược thực hiện trên
các khuông tiếng nói liên tiếp, có dãn cách khuông khoảng 10ms).
Nội dung tiếp theo trình bày các bước chính trong công đoạn phân tích đặc
trưng theo phương pháp LPC.
m. Phân tích tự tương quan
Sau khi tiến hành công đoạn nhận với hàm cửa sổ (áp dung công thức 2.7).Mỗi
khung của tín hiệu được chia cửa sổ là tự tương quan với khung tiếp theo để cho:
r m x n x n m m p
n
N m
  
( )
~
( )
~
( ) , ,..., = + =
=
÷ ÷
¿
0
1
0 1

(2.21)
Trong đó giá trị tự tương quan cao nhất, p, là bậc của phép phân tích LPC. Các
giá trị p thường dùng là từ 8 đến 16, với p=8 được sử dụng nhiều trong các hệ phân
tích LPC.
n. Phân tích LPC
Bước xử lý tiếp theo là phân tích LPC, chuyển từng khuông của p+1 mối tự
tương quan thành một "tập tham số LPC", đó là các hệ số LPC. Phương pháp chính
thức để chuyển từ các hệ số tự tương quan sang tập tham số LPC (để dùng cho
Trang | 31

GVHD: TS. Vũ Đức Lung SVTH: Võ Văn Hòa – Tôn Thanh Hùng
phương pháp tự tương quan LPC) được gọi là phương pháp Durbin và có thể cho một
cách hình thức như thuật toán (để thuận tiện, ta sẽ bỏ qua  nhỏ ở dưới ) (m r

):
E r
( )
( )
0
0 =

(2.22)
k r i r i j E i p
i j
i
j
L
i
= ÷ ÷
¦
´
¹
¹
`
)
s s
÷
=
÷
÷
¿
( ) (| |) ,
( ) ( )
o
1
1
1
1
1

(2.23)
o
i
i
i
k
( )
=

(2.24)
o o o
j
i
j
i
j i j
i
k
( ) ( ) ( )
= ÷
÷
÷
÷ 1 1

(2.25)
E k E
i
i
i ( ) ( )
( ) = ÷
÷
1
2 1

(2.26)
Trong đó tổng trong đẳng thức (2.23) được bỏ qua đối với i=1. Tập các đẳng
thức (2.22 - 2.26) được giải đệ qui với i=1,2,...,p, và lời giải cuối cùng được cho là
=
m
a các hệ số LPC
= s s o
m
p
m p
( )
, 1

(2.27)
=
m
k các hệ số PARCOR
(2.28)
=
m
g các hệ số truyền miền logarit
|
|
.
|

\
|
+
÷
=
m
m
k
k
1
1
log
(2.29)
Lúc này ta có thể dùng các hệ số LPC làm vector đặc trưng cho từng khung.
Tuy nhiên có một phép biến đổi tạo ra dạng hệ số khác có độ tập trung cao hơn từ các
hệ số LPC, đó là phép phân tích Ceptral.
o. Phân tích cepstral
Một tập tham số LPC rất quan trọng, có thể suy trực tiếp từ tập hệ số LPC, là
các hệ số Cepstral LPC, c(m). Dạng đệ qui là:
c a
k
m
c a m p
m m k m k
k
m
= +
|
\

|
.
|
s s
÷
=
÷
¿
1
1
1 ,

(2.30)
p m Q a c
m
k
c
m
k
k m k m
> >
|
.
|

\
|
=
¿
÷
=
÷
,
1
1

(2.31)
Trong đó o
2
là độ khuếch đại trong mẫu LPC. Các hệ số cepstral, là các hệ số
của biểu diễn chuyển đổi Fourier của logarit phổ cường độ, được mô tả là một tập đặc
tính mạnh, đáng tin cậy hơn các hệ số LPC. trong đó p Q
|
.
|

\
|
~
2
3
.
Trang | 32

GVHD: TS. Vũ Đức Lung SVTH: Võ Văn Hòa – Tôn Thanh Hùng
p. Đặt trọng số cho các hệ số cepstral
Do tính nhậy cảm của các hệ số cepstral bậc thấp đối với sườn phổ tổng thể và
do tính nhậy cảm của hệ số cepstral bậc cao đối với nhiễu (và các dạng biến đổi giống
nhiễu khác), nó trở thành kỹ thuật chuẩn để định trọng các hệ số cepstral nhờ một cửa
sổ được làm hẹp sao cho giảm thiểu được những nhạy cảm này. Chuyển sang ceptral
có trọng số:
c’m = wm.cm với (2.32)
Hàm trọng số thích hợp là bộ lọc thông dài (trong miền cepstral):

với (2.33)
q. Tính đạo hàm cepstral

(2.34)
Với là hằng số chuẩn và (2K+1) là số lượng Frame cần tính. K=3 là giá trị
thích hợp để tính đạo hàm cấp.Vector đặc trưng của tín hiệu gồm Q hệ số cepstral và
Q hệ số đạo hàm cepstral.
r. Nhận xét phương pháp LPC
Tóm lại, trong mô hình phân tích LPC trên, chúc ta cần phải đặc tả các tham số
bao gồm:
- N: số mẫu trong mỗi Frame phân tích
- M: số mẫu cách nhau giữa 2 Frame kề nhau
- p: cấp phân tích LPC
- Q: số chiều của các vector cepstral dẫn xuất từ các hệ số LPC
- K: số Frame được dùng tính các đạo hàm cepstral.
Tuy mỗi tham số đều có thể thay đổi trên dải rộng, bảng sau cho các giá trị đặc
trưng đối với các hệ phân tích ở 3 tần số lấy mẫu khác nhau (6.67kHz, 8kHz và
10kHz).
ảng 3 Các giá trị đặc trưng cho các tham số phân tích LPC đối với hệ nhận dạng tiếng nói
Tham số F1=6.67kHz F1=8kHz F1=10kHz
N 300 (45ms) 240 (30ms) 300 (30ms)
M 100 (15ms) 80 (10ms) 100 (10ms)
Trang | 33

GVHD: TS. Vũ Đức Lung SVTH: Võ Văn Hòa – Tôn Thanh Hùng
P 8 10 10
Q 12 12 12
K 3 3 3
Mô hình LPC là mô hình thích hợp cho việc xử lý tín hiệu tiếng nói. Với miền
tiếng nói hữu thanh có trạng thái gần ổn định, mô hình tất cả các điểm cực đại của
LPC ch ta một xấp xỉ tốt đối với đường bao phổ cơ quan phát âm. Với miềng tiếng nói
vô thanh, mô hình LPC tỏ ra ít hữu hiệu hơn so với miền hữu thanh, nhưng nó vẫn là
mô hình hữu ích cho các mục đích nhận dạng tiếng nói. Mô hình LPC đơn giản và dễ
cài đặt trê phần cứng và phần mềm.
2.4.6. Tìm hiểu về Formant
Để hiểu rõ hơn về khái niệm Formant, trước tiên chúng ta cần hiểu khái niệm
cộng hưởng là gì? Đó là một hiện tượng xảy ra trong dao động cưỡng bức khi một vật
dao động được kích thích bởi một ngoại lực tuần hoàn có cùng tần số với giao động
riêng của nó.

Hình 2.13 Minh họa hiện tượng cộng hưởng.
Formant là dải tần số được tăng cường do hiện tượng cộng hưởng trong ống
dẫn thanh, đặc trưng cho âm sắc của mỗi nguyên âm. Trong mỗi dải tần như thế có
một tần số được tăng cường hơn cả gọi là đỉnh formant (formant peak).
Trang | 34

GVHD: TS. Vũ Đức Lung SVTH: Võ Văn Hòa – Tôn Thanh Hùng

Hình 2.14 Minh họa Formant
Formant là trong các thành phần quan trọng hình thành nên âm học, tạo ra sự
đặc trưng cho từng âm thanh. Một nguyên âm do một người phát ra có nhiều formant:
F1: ứng với cộng hưởng vùng yết hầu
F2: ứng với cộng hưởng khoang miệng
Khi ta nói, sẽ có các sự cộng hưởng khác ở khoang mũi tạo nên các formant
khác (F3, F4, F5..) chính các formant này sẽ quy định các đặc trưng giọng nói riêng
cho từng người vì khoang mũi của mỗi người là cố định, có cấu tạo tùy thuộc vào thể
trạng của từng người. Ngoài ra còn có 2 nơi cộng hưởng khác là khoang miệng và yết
hầu, Nhưng hộp cộng hưởng ở 2 nơi này có khả năng thay đổi linh động phụ thuộc vị
trí của các cơ quan khác như môi, lưỡi, hàm. Khi 3 cơ quan này thay đổi vị trí sẽ tạo
ra các hộp cộng hưởng khác nhau về thể tích, hình dáng, đường lưu thông của khí
trong thanh quản,..Nên sẽ làm biến đổi các âm sắc, chính vì điều đó mà chúng ta thấy
ở các lần nói khác nhau của một từ thì chưa chắc chúng được phát âm ra giống nhau.
Nên trong lĩnh vực âm học, người ta tập trung nghiên cứu formant tạo ra ở 2 vùng này
là F1, F2.
Formant được xác định dựa trên sự tập trung năng lượng âm học xung quanh
một tần số đặc biệc trong dải sóng. Trong 1 dải sóng có thể xác định vài formant, mỗi
formant có thể có cùng cường độ âm nhưng có tần số khác nhau.
2.5. Gaussian Mixture Model
Mô hình hợp Gauss (Gaussian Mixture Model - GMM) là một dạng mô hình
thống kê được xây dựng từ việc huấn luyện các tham số thông qua dữ liệu học. Mô
Trang | 35

GVHD: TS. Vũ Đức Lung SVTH: Võ Văn Hòa – Tôn Thanh Hùng
hình GMM còn có một số tên gọi khác như Weighted Normal Distribution Sums hay
Radial Basis Function Approximations…

Hình 2.15: Hàm mật độ Gausss
Về cơ bản, mô hình GMM xấp xỉ một hàm mật độ xác suất bằng hợp các hàm
mật độ Gauss. Hình 2.15 minh họa hai hàm mật độ Gauss với các tham số khác nhau.
Một cách hình thức, hàm mật độ xác suất của phân phối Gauss f
N
(x, µ, σ
2
) được cho
bởi công thức:
|
|
.
|

\
| ÷
÷ =
2
2
2
) (
exp
2
1
) (
o
µ
t o
x
x p

(2.35)
trong đó, µ là giá trị trung bình, σ là độ lệch chuẩn. Trong trường hợp x là
vector gồm D thành phần, hàm mật độ xác suất của phân phối Gauss f
N
(x, µ, Σ) được
cho bởi công thức:
|
.
|

\
|
÷ ¿ ÷ ÷
¿
=
÷
) ( )' (
2
1
exp
) 2 (
1
) (
1
2 / 1
2 /
µ µ
t
    
x x x p
D

(2.36)
khi đó, µ là vector trung bình, Σ là ma trận hiệp phương sai. Nếu chọn µ=0 và
σ=1, công thức (2.35) sẽ trở thành hàm mật độ chuẩn Gauss tiêu chuẩn:
|
|
.
|

\
|
÷ =
2
exp
2
1
) (
2
x
x p
t

(2.37)
Từ “Gauss” được đặt theo tên của nhà toán học người Đức Carl Friedrich
Gauss. Ông đã định nghĩa hàm mật độ Gauss và áp dụng trong phân tích dữ liệu thiên
văn.
Trang | 36

GVHD: TS. Vũ Đức Lung SVTH: Võ Văn Hòa – Tôn Thanh Hùng

Hình 2.16: Mô hình GMM
Cho trước M phân phối Gauss có các hàm mật độ p
1
, p
2
, …, p
M
, hàm mật độ
xác suất của mô hình GMM được minh họa trong Hình 2.16 chính là tổng trọng của M
phân phối Gauss theo công thức:
¿
=
=
M
i
i i GMM
x p w x p
1
) ( ) (
 

(2.38)
trong đó, w
i
là trọng số của phân phối Gauss thứ i, thỏa ràng buộc 0≤ w
i
≤1 và
¿
=
=
M
i
i
w
1
1
. Các trọng số này thể hiện mức độ ảnh hưởng của mỗi phân phối Gauss đối
với mô hình GMM. Như vậy, phân phối Gauss có phương sai và trọng số lớn bao
nhiêu thì có mức độ ảnh hưởng lớn bấy nhiêu đối với kết xuất của mô hình. Hình 2.17
cho thấy mức độ ảnh hưởng của từng phân phối Gauss lên GMM.

Hình 2.17:Hàm mật độ của GMM có 3 phân phối Gauss
Như vậy, một mô hình GMM có M phân phối Gauss sẽ được đại diện bởi bộ
tham số λ = { w
i
, µ
i
, Σ
i
}, i e [1, M]. Tùy thuộc vào cách tổ chức của ma trận hiệp
phương sai (covariance matrix), GMM có thể có một số biến thể khác nhau:
Trang | 37

GVHD: TS. Vũ Đức Lung SVTH: Võ Văn Hòa – Tôn Thanh Hùng
- Nodal covariance matrices GMM: mỗi phân phối Gauss trong GMM có
một ma trận hiệp phương sai riêng.
- Grand covariance matrix GMM: mọi phân phối Gauss trong một GMM
dùng chung một ma trận hiệp phương sai.
- Global covariance matrix GMM: mọi phân phối Gauss trong tất cả các
GMM dùng chung một ma trận hiệp phương sai.
Ngoài ra, xét về dạng thức, ma trận hiệp phương sai gồm hai loại: full (dạng
đầy đủ) và diagonal (dạng ma trận đường chéo). Thông thường, dạng nodal-diagonal
covariance matrices GMM được sử dụng phổ biến nhất.
2.6. Hidden Markov Model
2.6.1. Giới thiệu chuỗi Makov

Hình 2.18 Mô hình Markov chain thời tiết
Một mô hình Markov chain được cụ thể hóa bằng các thành phần:
S = {S
1
, S
2
, …, S
N
} Tập các trạng thái, gọi q
t
là trạng thái đạt đến được ở
thời điểm t.
A = { a
ij
} Ma trận xác suất chuyển trạng thái, mỗi a
ij
thể hiện xác
xuất di chuyển từ trạng thái S
i
sang trạng thái Sj,
( ) N j i S q S q p a
i t j t ij
s s = = =
+
, 1 , |
1
, sao cho
¿
=
= >
N
j
ij ij
a a
1
1 , 0
.
π= {π
i
} π
i
là xác suất khởi đầu của trạng thái S
i
– xác suất rơi
vào trạng thái S
i
ở thời điểm t = 1:
Trang | 38

GVHD: TS. Vũ Đức Lung SVTH: Võ Văn Hòa – Tôn Thanh Hùng
( ) N i S q p
i i
s s = = 1 ,
1
t
,
¿
=
=
N
i
i
1
1 t

2.6.2. Mô hình Markov ẩn
Trong mô hình Markov ẩn, các sự kiện quan sát được nằm trong mỗi trạng thái
và phụ thuộc vào vào hàm mật độ xác suất trong các trạng thái đó.

Hình 2.19 Mô hình Markov ẩn 3 trạng thái
Hình 2.19 minh họa một mô hình Markov ẩn 3 trạng thái với các sự kiện có thể
quan sát được trong mỗi trạng thái là V = {v
1
, v
2
, v
3
, v
4
}. Khả năng quan sát được sự
kiện v
k
trong trạng thái S
j
phụ thuộc vào xác suất quan sát b
j
(k). Hàm b được gọi là
hàm mật độ xác suất của các sự kiện được quan sát.
Hình 2.20 minh họa một ví dụ HMM đơn giản về mối liên hệ giữa số lượng
que kem với thời tiết. Số lượng que kem được ăn mỗi ngày là các quan sát, ví dụ: O =
{1,2,3}. Thời tiết nóng hay lạnh tương ứng với hai trạng thái. Giả sử chúng ta biết
được số lượng que kem được ăn, không biết thời tiết, liệu chúng ta có dự đoán được
thời tiết hôm ấy thế nào không. Thời tiết (trạng thái) được xem là “ẩn” so với số que
kem được ăn (kết quả quan sát được). Chính vì vậy, mô hình này được gọi là mô hình
Markov ẩn (hidden) – Hidden Markov Model (HMM).
Trang | 39

GVHD: TS. Vũ Đức Lung SVTH: Võ Văn Hòa – Tôn Thanh Hùng

Hình 2.20 Ví dụ HMM đơn giản
Một mô hình Markov ẩn được cụ thể hóa bằng các thành phần:
S = {S
1
, S
2
, …, S
N
} Tập các trạng thái, q
t
là trạng thái đạt đến được ở thời
điểm t.
V = {v
1
, v
2
, …, v
M
} Tập các tín hiệu quan sát, gọi O
t
là tín hiệu quan sát
được ở thời điểm t
A = { a
ij
} Ma trận xác suất chuyển trạng thái, mỗi a
ij
thể hiện xác
xuất di chuyển từ trạng thái S
i
sang trạng thái Sj,
( ) N j i S q S q p a
i t j t ij
s s = = =
+
, 1 , |
1
, sao cho
¿
=
= >
N
j
ij ij
a a
1
1 , 0
.
B = { b
j
(k) } Ma trận các hàm mật độ xác suất trong mỗi trạng thái,
( ) M k N j S q t at v p k b
j t k j
s s s s = = 1 , 1 , | ) (

Thỏa ràng buộc
¿
=
=
M
k
j
k b
1
1 ) (

π= {π
i
} π
i
là xác suất khởi đầu của trạng thái S
i
– xác suất rơi
vào trạng thái S
i
ở thời điểm t = 1:
( ) N i S q p
i i
s s = = 1 ,
1
t
,
¿
=
=
N
i
i
1
1 t

Để thuận tiện cho việc trình bày, mỗi mô hình HMM sẽ được quy ước đại diện
bởi bộ tham số λ = (π , A, B).
Trang | 40

GVHD: TS. Vũ Đức Lung SVTH: Võ Văn Hòa – Tôn Thanh Hùng
2.6.3. Ba bài toán cơ bản của HMM
Để có thể áp dụng được mô hình HMM vào các ứng dụng phức tạp trong thực
tế, trước hết cần có lời giải thỏa đáng cho 3 bài toán cơ bản của HMM:
- Bài toán 1: cho trước chuỗi tín hiệu quan sát O = O
1
O
2
… O
T
và mô hình
HMM được đại diện bởi bộ tham số λ = (π, A, B). Làm sao để tính toán một
cách hiệu quả p(O|λ) – xác suất phát sinh O từ mô hình λ?
- Bài toán 2: cho trước chuỗi tín hiệu quan sát O = O
1
O
2
… O
T
và mô hình
HMM đại diện bởi bộ tham số λ = (π, A, B). Cần tìm ra chuỗi trạng thái tối
ưu nhất Q = q
1
q
2
… q
T
đã phát sinh ra O? Đây là bài toán rất quan trọng
dùng cho nhận dạng.
- Bài toán 3: cho trước chuỗi tín hiệu quan sát O = O
1
O
2
… O
T
. Làm thế nào
để xác định các tham số mô hình λ = (π, A, B) sao cho cực đại hóa xác suất
p(O|λ)? Đây chính là bài toán học hay còn gọi là huấn luyện mô hình. Bài
toán này đem lại một khả năng rất quan trọng của HMM: khả năng mô hình
hóa một đối tượng cụ thể trong thực tế, mô hình hóa dữ liệu học.
Các tiểu mục tiếp theo sẽ lần lượt trình bày giải pháp cho ba bài toán này.
2.6.3.1. Bài toán 1 – Computing Likelihood
Mục tiêu của bài toán thứ nhất là tính p(O|λ) – xác suất phát sinh O từ mô hình
λ. Một giải pháp khả thi để tính p(O|λ) là thông qua thuật toán forward-backward.
Trước tiên, ta định nghĩa biến forward α
t
(j) là xác suất ở trạng thái j tại thời điểm t và
đã quan sát được đoạn O
1
, O
2
, ..., O
t
với mô hình λ cho trước:
) | , ... ( ) (
2 1
ì o
i t t t
S q O O O p i = =

(2.39)
Các biến α
t
(i) có thể được tính theo qui nạp từng bước (hay thuật toán qui
hoạch động) như sau:
1) Khởi tạo:
N i O b i
i i
s s = 1 , ) ( ) (
1 1
t o

(2.40)
2) Qui nạp:
N j T t O b a i j
t j
N
i
ij t t
s s ÷ s s
(
¸
(

¸

=
+
=
+ ¿
1 , 1 1 , ) ( ) ( ) (
1
1
1
o o

(2.41)
3) Đầu ra:
Trang | 41

GVHD: TS. Vũ Đức Lung SVTH: Võ Văn Hòa – Tôn Thanh Hùng
¿
=
=
N
i
T
i O p
1
) ( ) | ( o ì

(2.42)
Độ phức tạp tính toán của thuật toán forward là O(N
2
T).
Tương tự như trong thủ tục forward, thủ tục backward trước hết định nghĩa
biến backward β
t
(i) là xác suất quan sát được đoạn O
t+1
, O
t+2
, ..., O
T
cho trước trạng
thái i ở thời điểm t và mô hình λ:
) , | ... ( ) (
2 1
ì | i q O O O p i
t T t t t
= =
+ +

(2.43)

Các biến β
t
(i) cũng được tính theo qui nạp từng bước như sau:

1) Khởi tạo:
N i i
T
s s = 1 , 1 ) ( |

(2.44)
2) Qui nạp:
¿
=
+ +
=
N
j
t t j ij t
j O b a i
1
1 1
) ( ) ( ) ( | |
với 1 ..., , 2 , 1 ÷ ÷ = T T t và N i s s 1 (2.45)
3) Đầu ra:
¿
=
=
N
j
j O p
1
1
) ( ) | ( | ì

(2.46)
Cũng giống như thuật toán forward, độ phức tạp của thuật toán backward là
O(N
2
T). Như vậy, thủ tục forward-backward là khả thi với chi phí tính toán hoàn toàn
có thể chấp nhận được.
Đối với việc tìm lời giải cho bài toán 1, ta chỉ cần đến phần forward trong thủ tục
forward-backward. Tuy nhiên, phần backward giúp tìm lời giải cho bài toán 3.
2.6.3.2. Bài toán 2 – decoding (Thuật toán Virterbi)
Mục tiêu của bài toán 2 là tìm ra chuỗi trạng thái “tối ưu” nhất Q = q
1
q
2
… q
T
đã
phát sinh ra O. Một điều đáng lưu ý là có rất nhiều các tiêu chí “tối ưu” khác nhau cho
việc xác định Q, nên lời giải cho bài toán này phụ thuộc vào tiêu chí ‘tối ưu” được
chọn.
Trang | 42

GVHD: TS. Vũ Đức Lung SVTH: Võ Văn Hòa – Tôn Thanh Hùng
Thuật toán viterbi định nghĩa biến δ
t
(i) là xác suất cao nhất của đoạn chuỗi trạng
thái dẫn đến S
i
ở thời điểm t và đã quan sát được đoạn O
1
, O
2
, …, O
t
cho trước mô
hình λ:
) | ... , ... ( max ) (
2 1 2 1
,..., ,
1 2 1
ì o
t i t
q q q
t
O O O S q q q p i
t
= =
÷

(2.47)
δ
t
(i) có thể được tính theo qui nạp:
) ( ] ) ( max [ ) (
1 1 + +
· =
t j ij t
i
t
O b a i j o o

(2.48)
Tuy nhiên thuật toán viterbi còn cần đến mảng ψ
t
(j) để lưu lại các tham số i làm
cực đại hóa biểu thức (2.48), có thể hiểu tại thời điểm t trước j là i, nhằm mục đích
truy vết (back trace). Chi tiết các bước của thuật toán viterbi như sau:
1) Khởi tạo:
0 ) (
1 , ) ( ) (
1
1 1
=
s s =
i
N i O b i
i i
¢
t o

(2.49)
2) Lặp qui nạp:
N j
T t O b a i j
t j ij t
N i
t
s s
s s =
÷
s s
1
2 , ) ( ] ) ( [ max ) (
1
1
o o

(2.50)
N j
T t a i j
ij t
N i
t
s s
s s =
÷
s s
1
2 , ] ) ( [ max arg ) (
1
1
o ¢

(2.51)
3) Kết thúc:
)] ( [ max arg *
)] ( [ max *
1
1
i q
i p
T
N i
T
T
N i
o
o
s s
s s
=
=

(2.52)
4) quay lui – backtracking:
1 , ... , 2 , 1 , *) ( *
1 1
÷ ÷ = =
+ +
T T t q q
t t t
¢

(2.53)
Kết thúc thuật toán, chuỗi
* *
2
*
1
...
T
q q q Q = chính là lời giải thỏa đáng của bài toán 2.
2.6.3.3. Bài toán 3 – learning (Forward – Backward)
Mục tiêu của bài toán thứ 3, cũng là bài toán phức tạp nhất trong ba bài toán, là
tìm cách cập nhật lại các tham số của mô hình λ = (π, A, B) sao cho cực đại hóa xác
suất p(O|λ) – xác suất quan sát được chuỗi tín hiệu O từ mô hình.
Trang | 43

GVHD: TS. Vũ Đức Lung SVTH: Võ Văn Hòa – Tôn Thanh Hùng
Với một chuỗi tín hiệu quan sát hữu hạn bất kỳ O làm dữ liệu huấn luyện, chưa
có một phương pháp tối ưu nào cho việc ước lượng các tham số λ = (π, A, B) của mô
hình theo hướng cực đại toàn cục. Tuy nhiên, bộ tham số λ có thể được chọn sao cho
xác suất p(O|λ) đạt cực đại cục bộ bằng thuật toán Forward-Backward hoặc thuật toán
Baum-Welch, hoặc thuật toán Expectation-Maximization (EM).
Trước tiên, ta định nghĩa ξ
t
(i,j) là xác suất ở trạng thái S
i
tại thời điểm t và rơi
vào trạng thái S
j
ở thời điểm t+1 cho trước mô hình λ và chuỗi tín hiệu quan sát O:
) , | , ( ) , (
1
ì ç O S q S q p j i
j t i t t
= = =
+

(2.54)
Áp dụng xác suất Bayes:

Suy ra:
) | (
) ( ) ( ) (
) | (
) | , , (
) , (
1 1 1
ì
| o
ì
ì
ç
O p
j O b a i
O p
O S q S q p
j i
t t j ij t j t i t
t
+ + +
=
= =
=

(2.55)

Hình 2.21 Cách tính ) | , , (
1
ì O S q S q p
j t i t
= =
+

Gọi γ
t
(i) là xác suất ở trạng thái S
i
vào thời điểm t cho trước chuỗi tín hiệu quan
sát O và mô hình λ:
) , | ( ) ( ì ¸ O S q p i
i t t
= =

(2.56)
Áp dụng xác suất Bayes, suy ra:
Trang | 44

GVHD: TS. Vũ Đức Lung SVTH: Võ Văn Hòa – Tôn Thanh Hùng

) | (
) | , (
) (
ì
ì
¸
O p
O S q p
i
i t
t
=
=

(2.57)
Áp dụng xác suất forward và backward như trong Hình 2.22, suy ra:
) | (
) ( ) (
) (
ì
| o
¸
O p
i i
i
t t
t
=

(2.58)

Hình 2.22: γ
t
(i) được tính dựa trên xác suất forward và backward
Nếu ta lấy tổng γ
t
(i) theo t e [1, T-1], kết quả nhận được là số lần kỳ vọng
chuyển trạng thái từ S
i
. Tương tự, lấy tổng ξ
t
(i,j) theo t e [1, T-1], ta sẽ có số lần kỳ
vọng chuyển từ trạng thái S
i
sang S
j
:
¿
÷
=
=
1
1
) (
T
t
t
i ¸
số lần kỳ vọng chuyển trạng thái từ S
i
. (2.59)
=
¿
÷
=
1
1
) , (
T
t
t
j i ç số lần kỳ vọng chuyển từ trạng thái S
i
sang S
j
. (2.60)
Với các đại lượng này, ta có các biểu thức cập nhật tham số của HMM như sau:
=
i
t số lần kỳ vọng ở trạng thái S
i
vào thời điểm (t=1) = γ
1
(i)
(2.61)
¿
¿
÷
=
÷
=
= =
1
1
1
1
) (
) , (
) (
) , (
T
t
t
T
t
t
i
j i
ij
i
j i
S exnum
S S exnum
a
¸
ç

(2.62)

Trang | 45

GVHD: TS. Vũ Đức Lung SVTH: Võ Văn Hòa – Tôn Thanh Hùng
¿
¿
=
=
=
= =
T
t
t
v O t s
T
t
t
j
k j
j
j
j
S in exnum
v S in exnum
k b
k t
1
. .
1
) (
) (
) ( _
) , ( _
) (
¸
¸

(2.63)
 exnum(S
i
,S
j
): số lần kỳ vọng chuyển từ trạng thái S
i
sang trạng thái S
j
.
 exnum(S
i
): số lần kỳ vọng chuyển trạng thái từ S
i
.
 exnum_in(S
j
,v
k
): số lần kỳ vọng ở trạng thái S
j
và quan sát được tín hiệu v
k
.
 exnum_in(S
j
): số lần kỳ vọng ở trạng thái S
j
.
Từ mô hình ban đầu λ = (A, B, π) và chuỗi tín hiệu quan sát O, ta tính được vế
phải của các biểu thức (3.4)(3.5)(3.6), kết quả nhận được chính là các tham số mới của
mô hình ) , , ( t ì B A = . Theo Baum đã chứng minh, ta luôn có ) | ( ) | ( ì ì O p O p > trừ
phi mô hình λ đã đạt đến điểm tối ưu cục bộ (khi đó ì ì = ).
Như vậy, thuật toán Baum-Welch sẽ được áp dụng qua nhiều bước lặp để ước
lượng và cập nhật các tham số mô hình cho đến khi hội tụ. Tuy nhiên, kết quả cuối
cùng chỉ đạt được tối ưu cục bộ mà thôi. Thông thường, nếu các tham số được khởi
tạo với các giá trị thích hợp, thì có một phần khả năng nào đó có thể giúp mô hình đạt
được tối ưu toàn cục khi huấn luyện.
2.7. Mixture Of Gaussians Hidden Markov Model
2.7.1. Đặc tả mô hình
Phần 2.6 đã trình bày về mô hình HMM và 3 bài toán cơ bản của nó, trong đó
hàm mật độ xác suất của các tín hiệu quan sát là rời rạc. Mô hình HMM này được gọi
là HMM rời rạc. Khi hàm mật độ xác suất trong mỗi trạng thái là hàm liên tục, ta có
HMM liên tục. Thông thường, có hai dạng chính của HMM liên tục:
- Gaussian Hidden Markov Model (GHMM): hàm mật độ xác suất trong
mỗi trạng thái là hàm mật độ Gauss.
- Mixture of Gaussians Hidden Markov Model (MGHMM): hàm mật độ
xác suất trong mỗi trạng thái là hợp các hàm mật độ Gauss (mô hình
GMM như đã trình bày trong mục 2.5 ở trên).
Trang | 46

GVHD: TS. Vũ Đức Lung SVTH: Võ Văn Hòa – Tôn Thanh Hùng

Hình 2.23: Mô hình MGHMM 3 trạng thái
Phần này trình bày về mô hình MGHMM. Đây là một dạng của HMM liên tục,
trong đó hàm mật độ xác suất của vector quan sát O
t
được cho bởi mô hình GMM:
) ( ) (
t GMM t j
O p O b
j
=

(2.64)
trong đó
j
GMM
p
chính là xác suất đầu ra của mô hình GMM trong trạng thái S
j
.
Như vậy, khả năng quan sát được các vector trong mỗi trạng thái sẽ bị chi phối bởi
GMM của trạng thái đó. Hình 2.23 minh họa mô hình MGHMM có 3 trạng thái.
Cũng như trong định nghĩa của HMM, một mô hình MGHMM có N trạng thái và
M phân phối Gauss trong mỗi trạng thái sẽ được đại diện bởi bộ tham số λ = {π, A,
B}, trong đó:
 A = { a
ij
}, a
ij
là xác suất chuyển từ trạng thái S
i
sang trạng thái S
j
.
 π = { π
i
}, π
i
là xác suất khởi đầu của trạng thái S
i
.
 B = { b
j
}, b
j
là hàm mật độ xác suất trong trạng thái S
j
.
a
ij
và π
i
thì không có gì thay đổi so với HMM, điểm khác biệt chính nằm ở b
j
. Từ
(2.38) ta có:
Trang | 47

GVHD: TS. Vũ Đức Lung SVTH: Võ Văn Hòa – Tôn Thanh Hùng
( )
jm jm t
M
m
jm t j
U O G c O b , , ) (
1
µ
¿
=
=

(2.65)
trong đó trạng thái thứ j e [1, N], O
t
là vector quan sát được ở thời điểm t,
G(μ
jm
, U
jm
) là hàm mật độ Gauss thứ m trong trạng thái S
j
với vector trung bình μ và
ma trận hiệp phương sai U tương ứng (dùng U thay cho Σ để tránh nhầm lẫn với ký
hiệu Σ tổng), c
jm
là trọng số (không âm) của phân phối Gauss thứ m trong trạng thái S
j

thỏa ràng buộc xác suất
1
1
=
¿
=
M
m
jm
c
.
Về 3 bài toán cơ bản của HMM, giải pháp cho bài toán 1 và bài toán 2 là tương
tự cho mô hình MGHMM. Riêng đối với bài toán 3, có một số điểm khác biệt trong
công thức cập nhật tham số B của MGHMM so với HMM.
2.7.2. Huấn luyện tham số
Giải pháp cho bài toán huấn luyện mô hình MGHMM λ = {A, B, π} vẫn là
thuật toán Baum-Welch (tương đương EM [2]). Không có gì khác biệt nhiều so với
huấn luyện HMM, các công thức cập nhật A và π vẫn là:
) (
1
i
i
¸ t =

(2.66)
¿
¿
÷
=
÷
=
=
1
1
1
1
) (
) , (
T
t
t
T
t
t
ij
i
j i
a
¸
ç

(2.67)
Tuy nhiên đối với B = { b
j
}, b
j
gồm 3 tham số con { c
jm
, μ
jm
, U
jm
}, thì phương
pháp ước lượng phức tạp hơn. Trước tiên, ta định nghĩa γ
t
(j, k) là xác suất quan sát
được vector O
t
bởi phân phối Gauss thứ k trong trạng thái S
j
tại thời điểm t cho trước
chuỗi vector quan sát O và mô hình λ:
(
(
(
(
¸
(

¸

(
(
(
(
¸
(

¸

=
¿ ¿
= =
M
m
jm jm t jm
jk jk t jk
N
j
t t
t t
t
U O G c
U O G c
j j
j j
k j
1 1
) , , (
) , , (
) ( ) (
) ( ) (
) , (
µ
µ
| o
| o
¸

(2.68)
trong đó, α
t
(j), β
t
(j) là các biến forward-backward, c
jk
, μ
jk
và U
jk
lần lượt là
trọng số (weight), vector trung bình (mean vector) và ma trận hiệp phương sai
Trang | 48

GVHD: TS. Vũ Đức Lung SVTH: Võ Văn Hòa – Tôn Thanh Hùng
(covariance matrix) của phân phối Gauss thứ k trong trạng thái S
j
. Với đại lượng γ
t
(j,
k), ta có công thức cập nhật các thành phần của b
j
như sau:
¿¿
¿
= =
=
=
T
t
M
k
t
T
t
t
jk
k j
k j
c
1 1
1
) , (
) , (
¸
¸

(2.69)
¿
¿
=
=
·
=
T
t
t
T
t
t t
jk
k j
O k j
1
1
) , (
) , (
¸
¸
µ

(2.70)
¿
¿
=
=
÷ ÷ ·
=
T
t
t
T
t
jk t jk t t
jk
k j
O O k j
U
1
1
) , (
)' )( ( ) , (
¸
µ µ ¸

(2.71)
Giải thuật huấn luyện:
- Input: chuỗi các vector đặc trưng O = { O
1
, O
2, …
, O
T
},
mô hình λ = {A, B, π}
- Output: λ
*
= {A
*
, B
*
, π
*
}
while (!converged && iter < maxIter)
{
// Tính các biến forward α
for i = 1 → N
α
1
(i) = π
i
b
i
(O
1
)
for t = 1 → T-1
for j = 1 → N

) ( ) ( ) (
1
1
1 +
=
+
(
¸
(

¸

=
¿ t j
N
i
ij t t
O b a i j o o

// Tính các biến backward β
Trang | 49

GVHD: TS. Vũ Đức Lung SVTH: Võ Văn Hòa – Tôn Thanh Hùng
for i = 1 → N
β
T
(i) = 1
for t = T-1 → 1
for i = 1 → N

¿
=
+ +
=
N
j
t t j ij t
j O b a i
1
1 1
) ( ) ( ) ( | |

// Cập nhật các tham số mô hình
λ = updateParameters (λ, O, α, β)
}
Phương thức updateParameters cập nhật tham số của mô hình MGHMM theo các
công thức (2.69), (2.70), (2.71).
Như đã đề cập, thuật toán Baum-Welch chỉ có thể huấn luyện mô hình đến tối ưu
cục bộ mà thôi. Kết quả thu được không phải lúc nào cũng là tối ưu toàn cục. Chưa có
giải pháp tuyệt đối cho vấn đề này, tuy nhiên việc khởi tạo tốt giá trị ban đầu cho các
tham số mô hình sẽ đem lại khả năng cao hơn cho việc đạt tối ưu toàn cục, đồng thời
đẩy nhanh tốc độ hội tụ trong huấn luyện.

Trang | 50

GVHD: TS. Vũ Đức Lung SVTH: Võ Văn Hòa – Tôn Thanh Hùng
CHƯƠNG 3. CÁC FRAMEWORK NHẬN DẠNG GIỌNG NÓI
3.1. HTK Framework
3.1.1. Giới thiệu
HTK (Hidden Markov Model Toolkit) là một bộ các công cụ để xây dựng mô
hình Markov ẩn (HMM). HTK được thiếu kế chủ yếu để xây dựng các mô hình xử lý,
nhận dạng tiếng nói dựa trên HMM, do đó các hỗ trợ mả HTK cung cấp đều phục vụ
cho mục đích trên.

Hình 3.1 Nhận dạng tiếng nói sử dụng HTK
Trong hình 23 có mô tả một hệ thống nhận dạng tiếng nói có sử dụng HTK, nó
bao gồm 2 giai đoạn xử lý chính:
- Các công cụ huấn luyện HTK được sử dụng để ước lượng các tham số của một
tập các HMM sử dụng các câu nói và kết hợp các phát âm của chúng để huấn
luyện.
- Sau đó, một câu nói chưa biết thông qua các công cụ nhận dạng HTK sẽ cho
kết quả là các phát âm (phiên âm) của những tiếng nói này.
HTK được sử dụng như một bộ thư viện, dễ mở rộng và phát triển. Đây là một
công cụ lý tưởng để nghiên cứu mô hình và nhận dạng dưa trên HMM và qua đó,
chúng ta có thể dành nhiều thơi gian hơn để phát triển các công cụ riêng cho mình
nhằm giúp cho việc nhận dạng tốt hơn. Như chúng ta có thể dễ dàng áp dụng công cụ
này cho việc nhận dạng tiếng Việt, không phải mất thời gian để xây dựng lại công cụ
mộ hình HMM, HTK thực sự đã được phát triển rất tốt cho công việc này.
Trang | 51

GVHD: TS. Vũ Đức Lung SVTH: Võ Văn Hòa – Tôn Thanh Hùng
3.1.2. Tổng quan về HTK
HTK cung cấp một tập các công cụ để thực hiện các nhiệm vụ khác nhau trong
mô hình Markov ẩn trong hệ thống nhận dạng. Các công cụ này được viết bằng ngôn
ngữ C và sử dụng một tập các hàm cơ bản để trong một thư viện chung để xây dựng
HMM

Hình 3.2 Kiến trúc của HTK
Trong Hình 24, mô tả kiến trục tổng quát của HTK, bao gồm nhiều môdun
được phân chi theo từng mục đích khác nhau, trong đó có các công cụ hỗ trợ đặc biệt
cho việc nhận dạng. Hình 25 dưới trình bày các công đoạn của việc xây dựng hệ thống
nhận dạng tiếng nói, và các công cụ mà HTK cung cấp qua từng công đoạn cụ thể
như: chuẩn bị dữ liệu, huấn luyện, kiểm tra kết quả, đánh giá và cuối cùng là phân
tích.

Trang | 52

GVHD: TS. Vũ Đức Lung SVTH: Võ Văn Hòa – Tôn Thanh Hùng

Hình 3.3 Các công đoạn xây dựng hệ nhận dạng tiếng nói với HTK
HTK sử dụng những tập tin dữ liệu khác nhau để chuyển đổi dữ liệu cho các
công cụ khác nhau. Các tập tin này có thể chứa dữ liệu âm thanh (dạng sóng âm hoặc
dãy các vector đặc trưng âm thanh), dữ liệu âm thanh được đánh nhãn (phiên âm), các
HMM (các tham số định nghĩa mô hình HMM) hoặc các mạng nhận dạng. những
tham số của HMM có thể được chia sẽ giữa các tập hợp, các trạng thái, hay các
HMM,… Trong HTK, đơn vị nhận dạng nhỏ nhất (do người dùng định nghĩa, có thể
là âm vị, âm tiết hoặc một từ) được mô hình bằng một HMM được gọi là một phone.
Việc kết hợp các mô hình trong các bộ phận nhận dạng dựa trên từ con (sub-word),
HTK có cung cấp các HMM phụ thuộc ngữ cảnh, do đó mô hình nhị âm (bi-phone)
hay tam âm (tri-phone) được sữ dụng cho mỗi ngữ cảnh có khả năng giữa các phone
Sau đây là các công cụ chính trong HTK
- HCode: đây là công cụ được sử dụng để mã hóa một tập tin tiếng nói ở dạng
sóng âm thành tập tin ở dạng tham số (dãy các vector quan sát).
- HInit: công cụ này được dùng để khởi tạo một HMM dựa trên một tập các
phân đoạn dữ liệu huấn luyện được đánh nhãn.
Trang | 53

GVHD: TS. Vũ Đức Lung SVTH: Võ Văn Hòa – Tôn Thanh Hùng
- HRest: đây là công cụ dùng đề tái ước lượng tham số dựa trên thuận toán
Baum-Welch, nó cũng làm việc trên một tập các phân đoạn dữ liệu huấn
luyện được đánh nhãn.
- HERest: đây là công cụ dựa trên thuật toán Baum-Welch huấn luyện đồng
thời (embedded training). Nó huấn luyện một tập các HMM cùng lúc sử
dụng một tập dữ liệu huấn luyện (bao gồm các câu được nói liên tục cùng
phiên âm của chúng).
- HVite: công cụ này sử dung thuật toán Viterbi đề nhận dạng tiếng nói liên
tục, dựa trên các ràng buộc về cú pháp và tìm kiếm tín hiệu.
- HResults: công cụ này sử dụng 2 tập tin lưu trữ dữ liệu phiên âm, sử dụng
một kết hợp lập trình động (Dynamic programming), sau đó xuất tra thống
kê kết quả nhận dạng.
- HSLab: công cụ này dùng để hiện thị tiếng nói dưới dạng sóng âm và tập
phiên âm của nó dưới dạng đồ họa.
3.1.3. Chi tiết về HTK
3.1.3.1. Xử lý tín hiệu tiếng nói
HTK hổ trợ việc rút trích đặc trưng (quá trình chuyển tín hiệu âm thanh dạng
sóng thành dãy các vector tham số). Dữ liệu đầu vào của bước này là các tập tin được
lưu trữ dưới dạng file .wav và kết quả thu được là dãy các tham số sử dụng phương
pháp nén MFCC_C (compressed mel-ceptral coefficients). Thật ra, HTK cho phép dữ
liệu dầu vào và ra ở nhiều dạng khác nhau. Ví dụ, dữ liệu vào còn có thể là tín hiệu âm
thanh được thu trực tiếp bằng công cụ HAudio và dữ liệu đầ ra là dãy các tham số của
một phương pháp rút trích đặc trưng khác như LPC, PLP,…
Quá trình này được thể hiện trong hình 26. Đối với HTK, các tập tin dạng sóng
âm và các tập tin tham số hóa là như nhau, chúng đều dùng để biểu diễn cho cùng một
dãy mẫu tín hiệu, chỉ khác là một loại thì ở dạng nhị phân, loại kia ở dạng vector
nhiều thành phần. Thông thường một vector tham số chỉ thể hiện cho một khoản thời
gian nhất định trong dãy tin hiệu âm thanh, và khoảng thời gian này là từ 10-25 msec
(người dùng HTK có thể định nghĩa lại giá trị này).
Trang | 54

GVHD: TS. Vũ Đức Lung SVTH: Võ Văn Hòa – Tôn Thanh Hùng

Hình 3.4 Xử lý mã hóa tiếng nói
Cơ chế của quá trình Xử lý tiếng nói trong HTK tương tự như đã giới thiệu
trong phần Rút trích đặc trưng của báo cáo này. Trong HTK ta có thể sự dụng lện
HCopy để thực hiện việc này.
3.1.3.2. Ước lượng tham số cho các mô hình
HTK cung cấp 4 công cụ cơ bản cho việc ước lượng tham số cho các HMM, đó
là: HCompV, HInit, HRest. HCompV và HInit được dùng để khởi tạo giá trị cho các
tham số. HCompV sẽ tính kỳ vọng và phương sai của mỗi thành phần Gausssian trong
định nghĩa mô hình Markov ẩn, để cho chúng gần bằng với kỳ vọng và phương sai
của dữ liệu huấn luyện tiếng nói. HInit sẽ tính giá trị cho các HMM mới sử dụng công
thức ước lượng như thuật toán Viterbi.
3.1.3.3. Mô hình ngôn ngữ được dùng trong nhận dạng tiếng nói HTK
Cũng giống như Sphinx, để nhận dạng tiếng nói đặt kết quả tốt, chúng ta cần
phải áp dụng, xây dựng trong đó các văn phạm và ngữ nghĩa của ngôn ngữ. Đặc biệt,
trong trường hợp nhận dạng tiếng nói liên tục dựa trên phone, kết quả nhận dạng được
là một chuỗi các phone liên tiếp nhau. Vì thế để có kết quả ra các câu nói thông
Trang | 55

GVHD: TS. Vũ Đức Lung SVTH: Võ Văn Hòa – Tôn Thanh Hùng
thường, chúng ta không thể đơn giản chỉ là tìm tương ứng với mỗi dãy phone là một
từ đơn trong từ điển, bởi vì với chuỗi các phone tương ứng, kết quả tìm được có thể là
một dãy các từ khác nhau.
Một mạng ngữ nghĩa biểu diễn cho dãy các từ có thể được nhận dạng thông qua
hệ thống. Một mạng ngữ nghĩa biểu diễn ở mức độ từ là định nghĩa thứ tự có thể có
của tất cả các từ trong từ điển với những câu khác nhau, nó chính là văn phạm của các
từ trong câu. Trong mạng ngữ nghĩa, thông thường các đường truyền trạng thái giữa
các từ với nhau được kèm theo một công thức xác suất, nó cho biết khả năng từ này
tiếp sau từ kia là bao nhiêu trong ngôn ngữ. khi đó dựa vào mạng mà chúng ta có thể
klấy được kết quả có nhiều khả năng nhất với một tập các phone được nhận dạng.
Trong HTK có nhiều công cụ để xây dựng mạng nói trên như: HParse, HSGen,
HLStats. Trong đó:
HParse: dùng để chuyển một tập tin văn phạm của từ điển thành một mạng ngữ
nghĩa và khả năng xảy ra thứ tự các từ theo một trật tự.
HGen: ngược lại với HParse, không những thế nó còn giúp phát sinh ra một
dãy các câu dựa trên tập văn bản thu được.
HLStats: đọc một danh sách các HMM và tập phiên âm lời nói. Công cụ này sẽ
tính toán các thống kê khác nhau để phân tích dữ liệu huấn luyện ngữ âm và phát sinh
các mô hình ngôn ngữ đơn giản dùng để nhận dạng.
3.2. CMU Sphinx Framework
3.2.1. Giới thiệu CMU Sphinx.
Sphinx là một hệ thống nhận dạng tiếng nói hoàn chỉnh được viết trên ngôn
ngữ Java. Sphinx được công bố và chia sẽ mã nguồn lần đầu tiên vào năm 2010 do
nhóm nghiên cứu Sphinx ở Carnegie Mellon University nghiên cứu và phát triển. Sau
đó với sự giúp đỡ của các tổ chức (Sun Microsystems Laboratories, Hewlett Packard,
Mitsubishi Electric Research Labs) và các trường đại học (University of California at
Santa Cruz, Massachusetts Institute of Technology) Sphinx tiếp tục nghiên cứu và bổ
sung các phiên bản mới cho Sphinx (Sphinx 2, Sphinx 3,..) và mới nhất là Sphinx 4,
làm cho hệ thống nhận dạng ngày càng tối ưu hơn. Trong phạm vi báo cáo này, chúng
ta sẽ tập trung tìm hiểu Sphinx 4.
Trang | 56

GVHD: TS. Vũ Đức Lung SVTH: Võ Văn Hòa – Tôn Thanh Hùng
3.2.2. Các đặc điểm của CMU Sphinx
Sphinx tuy mới được công bố để đưa vào các ứng dụng nhận dạng chưa lâu
nhưng Sphinx đang dần trở thành một framwork nhận dạng tiếng nói mạnh mẽ và
được sử dụng rất nhiều trong các ứng dụng trong cuộc sống. Đó là nhờ các đặc điểm
sau:
- Hỗ trợ nhận dạng tiếng nói ở chế độ trực tiếp hoặc chia lô, có khả năng nhận dạng
tiếng nói rời rạc và liên tục.
- Là một hệ thống nhận dạng đồ sộ nhưng có khả năng tháo lắp rất linh động. Hỗ trợ
sẵn đầy đủ các tính năng đáp ứng nhu cầu nhận dạng như xây dựng các bộ lọc, các
hàm cửa sổ, các phép biến đổi, các công cụ hỗ trợ rút trích đặc trưng theo nhiều
phương pháp khác nhau.
- Hỗ trợ nhiều 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à ARPA-
format FST grammars.
- Xây dựng sẵn các thuật toán tìm kiếm tối ưu (breath first, word pruning), dễ dàng
tinh chỉnh cho phù hợp với nhu cầu nhận dạng.
3.2.3. Kiến trúc Sphinx4
Sphinx 4 là một framework nhận dạng âm thanh được thiết kế khá đồ sộ và
phức tạp. Nó bao gồm các thành phần được ghép nối rất linh động với nhau và được
công cụ hóa thành các bộ phận có chức năng riêng. Các thành phần này có thể được
chỉnh sửa và kết nối với nhau theo nhu cầu của ứng dụng mà không phá vỡ cấu trúc
của hệ thống.
Trang | 57

GVHD: TS. Vũ Đức Lung SVTH: Võ Văn Hòa – Tôn Thanh Hùng

Hình 3.5 Kiến trúc tổng quát sphinx 4
Có ba thành phần cơ bản cấu tạo nên Sphinx 4: 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.
Trang | 58

GVHD: TS. Vũ Đức Lung SVTH: Võ Văn Hòa – Tôn Thanh Hùng

Hình 3.6 Mô phỏng hoạt động của Sphinx
Khi xây dựng Sphinx, các nhà phát triển đã nghiên cứu khá kỹ về lĩnh vực âm
học nên đã xây dựng một số lượng lớn các hiệu số cấu hình để hiệu chỉnh chung cho
phù hợp với nhu cầu của các ngôn ngữ và âm thanh khác nhau. Chúng ta có thể thay
đổi, điều chỉnh chúng như thay đổi các cách rút trích đặc trưng, điều chỉnh các phương
pháp tìm kiếm,.. trên file config của hệ thống mà không cần phải can thiệp sâu vào
bên trong.Bên cạnh đó nó còn xây dựng các tool hỗ trợ cho quá trình nhận dạng như
các tool huấn luyện, các tool giám sát và báo cáo hệ thống.
3.2.3.1. Bộ ngoại vi – FrontEnd
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.7 Kiến trúc tổng quát Bộ ngoại vi
Trang | 59

GVHD: TS. Vũ Đức Lung SVTH: Võ Văn Hòa – Tôn Thanh Hùng
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.8 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.3.2. 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.
Trang | 60

GVHD: TS. Vũ Đức Lung SVTH: Võ Văn Hòa – Tôn Thanh Hùng
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 tham số tùy chọn chỉ ra ngữ pháp có lặp hay không. Nếu ngữ
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ếu
ngữ 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.
- 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ữ
Trang | 61

GVHD: TS. Vũ Đức Lung SVTH: Võ Văn Hòa – Tôn Thanh Hù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.
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.9 Ví dụ một đồ thị tìm kiếm đơn giản
Trang | 62

GVHD: TS. Vũ Đức Lung SVTH: Võ Văn Hòa – Tôn Thanh Hùng
3.2.3.3. 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.
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ố.

Trang | 63

GVHD: TS. Vũ Đức Lung SVTH: Võ Văn Hòa – Tôn Thanh Hùng
CHƯƠNG 4. XÂY DỰNG CHƯƠNG TRÌNH THỬ NGHIỆM
4.1. Cài đặt Sphinx
4.1.1. Chuẩn bị hệ điều hành
Linux là môi trường hệ điều hành thích hợp nhất để cài đặt Sphinx và thực hiện
huấn luyện. Trong các hệ điều hành Linux thì Ubuntu được xem như là hệ điều hành
phổ biến. Sphinx dễ dàng được cài đặt trong hệ điều hành Ubuntu, nhóm từng thử cài
đặt trong Windows dùng CYGWIN [10] nhưng chưa thành công.
4.1.2. Chuẩn bị các gói cài đặt Sphinx
Các gói bao gồm:
 Pocketsphinx —một thư viện nhận dạng viết bằng ngôn ngữ C.
 Sphinxbase — gói thư viện nền, hỗ trợ các thư viện cần thiết cho các gói khác
 Sphinx4 — gói hỗ trợ nhận dạng viết bằng java
 CMUclmtk — bộ công cụ xây dựng mô hình ngôn ngữ
 Sphinxtrain — bô công cụ huấn luyện mô hình ngữ âm
Các gói cài đặt có thể được tải trực tiếp từ trang chủ của CMU Sphinx [11]
4.1.3. Cài đặt Sphinx
Tạo một thư mục tên sphinx trong Home folder (trong máy ảo Ubuntu). Chép
các file (Sphinxbase, Sphinxtrain, Pocketsphinx, CMUclmtk) vừa download trong mục
trên vào đó, giải nén. (lưu ý xóa đi chỉ số version sau khi extract).
Sử dụng cửa sổ Terminal trong Ubuntu: Ctrl+Atl+t.
Nhập vào sudo apt-get update sau đó nhập vào password của root user
(password sẽ không hiện lên, nhập cẩn thận và nhấn Enter). Lệnh trên để update chẩn
bị cho các gói cài đặt cần dùng bằng lệnh apt-get. Chờ update xong, nhập vào: cd
sphinx để di chuyển tới thư mục sphinx vừa tạo.
Cài đặt các gói cần thiết trước khi cài SphinxBase:
Gõ các lệnh:
- sudo apt-get install bison, đồng ý để tải và cài bison
- sudo apt-get install autoconf
- sudo apt-get install automake
- sudo apt-get install libtool

Trang | 64

GVHD: TS. Vũ Đức Lung SVTH: Võ Văn Hòa – Tôn Thanh Hùng
a. Cài đặt SphinxBase
Nhập: cd sphinxbase để đi vào thư mục sphinxbase.
Gõ các lệnh sau và chờ thi hành:
- ./autogen.sh
- ./configure
- make
- sudo make install
b. Cài đặt Sphinxtrain
Từ thư mục sphinxbase ở trên, gõ lệnh để chuyển sang thư mục sang thư mục
sphinctrain : cd ../sphinxtrain. Gõ các lệnh sau và chờ thi hành:
- ./configure
- make
- sudo make install
c. Cài đặt PocketSphinx
Chuyển sang thự mục pocketsphinx, gõ các lệnh sau và chờ thi hành:
- ./autogen.sh
- ./configure
- make
- sudo make install
gõ tiếp lệnh sau vào Terminal: sudo ldconfig đề hệ điều hành thực hiện cập
nhật các thực viện động.
Chi tiết quá trình cài đặt có thể tham khảo theo nguồn [12].


Trang | 65

GVHD: TS. Vũ Đức Lung SVTH: Võ Văn Hòa – Tôn Thanh Hùng

Hình 4.1 Thư mục “sphinx” chứa các file vừa tải và các thư mục sau khi đã giải nén, đổi tên
4.2. Chuẩn bị bộ huấn luyện cho Sphinx
Tạo một thư mục huấn luyện, mang tên gì đó có ý nghĩa cho bộ dữ liệu huấn
luyện, ví dụ: “docso”.
Trong đó tạo 2 thư mục con là etc, wav.
Sau đó tạo các file như cấu trúc sau:
etc
|___ your_db.dic - bộ tự điển âm vị, âm tiết
|___ your_db.phone - file chứa danh sách các âm vị
|___ your_db.lm.DMP - Mô hình ngôn ngữ
|___ your_db.filler - Danh sách các khoảng lặng
|___ your_db_train.fileids - Danh sách các file huấn luyện
|___ your_db_train.transcription – Dữ liệu dạng text của file huấn luyện
|___ your_db_test.fileids - Danh sách các fille test
|___ your_db_test.transcription - Bản text của file test

wav
|___ speaker_1
|___ file_1.wav - file thu âm một câu nói của người huấn luyện
Trang | 66

GVHD: TS. Vũ Đức Lung SVTH: Võ Văn Hòa – Tôn Thanh Hùng
|___ …
|___ speaker_2
|___ file_2.wav
a. Phonetic Dictionary (your_db.dic)
File này chứa nội dung về cách phát âm của một từ trong bộ huấn luyện. Vd: từ
“HELLO” được phát âm bằng sự kết hợp của các âm vị sau:
HH AH L OW (theo như trang chủ Sphinx ví dụ). Khi đó, trong file này sẽ ghi
là:
- HELLO H AH L OW
Mỗi một dòng trong file là định nghĩa cách đọc của một từ.
File này có phân biệt ký tự hoa – thường. thông thường để xây dựng được file
này, cần tìm hiểu về cách phát âm của một từ trong một ngôn ngữ nhất định. Nếu là
tiếng Anh thì họ có cách đọc cho từ tiếng Anh có trong tự điển. Đây cũng làm 1 bước
quan trọng để xây dựng thành công bộ huấn luyện.
Trong tiếng Việt, cách đọc và các viết một từ là gần như gắng liền với nhau.
Không cần có hướng dẫn cách đọc khi học tiếng Việt, trong tiếng Anh cách đọc và
cách viết không phụ thuộc nhau, vd “lead” (dẫn đầu) & “head” (cái đầu). Ví dụ: muốn
xây dựng file này cho tiếng Việt, ta có thể định nghĩa các từ bằng nhiều cách như sau:
- BAN B A N
Với cách trên, ta xem từ “BAN” là một âm tiết với sự kết hợp của 3 âm vị là B,
A, N.
- BAN B AN
Với cách trên, ta xem từ “BAN” là một âm tiết với sự kết hợp của 2 âm vị là B,
AN.
Sphinx không hỗ trợ định nghĩa ở dạng word-base, nghĩa là cách đọc của một
từ không được chính là từ đó. Vd: BAN BAN là không được cho phép. Tuy nhiên có
thể làm một phương pháp tương đương thay thế nếu mún xây dựnh theo kiểu word-
base. Khi đó phải định nghĩa từ theo kiểu 1 từ có nhiều cách đọc, ví dụ:
BAN BAN BANG
Trang | 67

GVHD: TS. Vũ Đức Lung SVTH: Võ Văn Hòa – Tôn Thanh Hùng
Ý nghĩa của dòng định nghĩa trên là từ “ban” có thể đọc theo 2 cách là “ban”
(cách đọc đúng chuẩn) hoặc đọc là “bang” (cách đọc người miền nam).
Chỉ được dùng các ký hiệu a-z, A-Z, 0-9 để đảm bảo không gây lỗi cho file
này.
Vấn đề thanh điệu được giải quyết tại đây:
Ta sẽ xem các âm vị đi chung với thanh điệu sẽ là một âm vị đọc lập. khi đó
thay vì xem thanh điệu như một âm vị khác theo cách định nghĩa sau (định nghĩa cho
từ “bản”):
BA3N B A 3 N
Ta sẽ xem âm ả làa một âm vị khác, độc lập với âm a khi đó ta định nghĩa như
sau:
BA3N B A3 N
Theo một số bài khóa luận cao học thì phương pháp này cho ra kết quả nhận
diện tốt hơn cho âm tiết có thanh điệu.
b. Phoneset file (your_db.phone)
File này chứa tất các các âm vị sử dụng trong file trên, mỗi một dòng là một âm
vị, nên sắp xếp các âm vị đó theo thứ tự để Sphinx dễ quản lý (yêu cầu này được đề
cập rõ ràng trong việc huấn luyện HTK, trong Sphinx không thấy nói). Lưu ý thêm
một âm vị đặc biệt vào file này đó là SIL, âm vị đại diện cho khoảng lặng.
c. Language model file (your_db.lm.DMP)
File này nên ở định dạng ARPA hoặc DMP. Vấn đề về tạo file DMP này nhóm
sẽ nghiên cứu sau, nội dung file này định nghĩa ngữ pháp cho các câu nói nhận dạng,
được dùng để huấn luyện, test, và chạy chương trình. File này được tạo tự động bằng
nhiều công cụ khác nhau.
d. Filler dictionary (your_db.filler)
Chứa các âm tiết dùng để “làm đầy”, thông thường là các khoảng lặng, chúng
ta có thể dễ dạng định nghĩa file này như sau:
<s> SIL
</s> SIL
<sil> SIL
Trang | 68

GVHD: TS. Vũ Đức Lung SVTH: Võ Văn Hòa – Tôn Thanh Hùng
e. Danh sách file training (your_db_train.fileids)
Là file text chứa nội dung về đường dẫn tới file thu âm (file .wav). nằm trong
thư mục wav, có trong sơ đồ thư mục trình bày phia trên. Vd:
speaker_1/file_1
Không ghi đuôi file wav vào. Mỗi một dòng là một file.
f. Nội dung file wav bằng text – transcript (your_db_train.transcription)
Đây là phần nội dung mà file wav mình thu âm được, để huấn luyện cho
Sphinx hiểu những gì mình nói, thì mình cần cung cấp một file text để giúp cho
Sphinx hiểu được mình nói gì và học từ đó. Cấu trúc một file transcript gồm nhiều
dòng, mỗi một dòng là nội dung của một file wav kèm theo tên file wav đó. Vd:
<s> hello word </s> (file_1)
Lưu ý mỗi câu nói cần được bỏ trong tag <s> </s>.
Thực hiện tương tự với your_db_test.fileids và your_db_test.transcription.
4.3. Cách thức thu âm
Để có được các file wav, file huấn luyện, ta phải thu âm, thu càng nhiều càng
tốt. số lượng từ cần huấn luyện và số tiếng (hour) cần thu như sau:
ảng 4 Các thông số tương ứng với độ lớn của bộ huấn luyện
Vocabulary Hours in db Senones Densities Example
20 5 200 8 Tidigits Digits Recognition
100 20 2000 8 RM1 Command and Control
5000 30 4000 16 WSJ1 5k Small Dictation
20000 80 4000 32 WSJ1 20k Big Dictation
60000 200 6000 16 HUB4 Broadcast News
60000 2000 12000 64 Fisher Rich Telephone Transcription
Thu âm là một quá trình đòi hỏi sự kiên nhẫn và cẩn thận của người thực hiện.
Đây cũng chính là điểm khó khăn nhất khi thực hiện khóa luận này. Công cụ dùng để
thu âm là Audacity [13]. Loại micro dùng trong thu âm nên chọn tốt nhất là loại
headphone. Môi trường thu âm cần sự yên tĩnh, lưu ý: thiết lập tần số lấy mẫu là
16kHz, định dạng âm 16 bit mono (nếu dùng để nhận dạng trên máy tính) và là 8kHz,
Trang | 69

GVHD: TS. Vũ Đức Lung SVTH: Võ Văn Hòa – Tôn Thanh Hùng
16 bit mono (dành cho nhận dạng trên thiết bị di động), tắt loa máy tính khi thu, để
micro hơi dưới miệng để tránh hơi thở từ mũi ra làm nhiễu tín hiệu. Các thông tin cần
thiết để chuẩn bị cho việc thu âm có thể được tìm hiểu chi tiết tại VoxForge [14].
4.4. Tiến hành huấn luyện mô hình bằng Sphinx
Sau khi chuẩn bị một folder train (thư mục chứa toàn bộ các file chuẩn bị bên
trên,file âm thanh,… người ta gọi tên folder huấn luyện là task folder) như phần trình
bày trên. Tiếp theo ta sử dụng một số lệnh cùa Sphinx Train để tạo tự động các mã
lệnh huấn luyện (Training Script). Mã lệnh huấn luyện có nhiệm vụ thực hiện toàn bộ
các công đoạn huấn luyện bao gồm: Tiền xử lý tín hiệu âm thanh, rút trích đặt trưng
âm học, xây dựng, ước lượng mô hình HMM nhờ thuật toán Baum-Welch,..
Để bắt đầu khởi tao các thư mục chuẩn bị (các thực mục này Sphinx dùng cho
quá trình huấn luyện, tạo tự động) và các file Script huấn luyện. Ta thực hiện dòng
lệnh sau vào Command Line trong Linux:
- Dành cho Sphinxtrain từ bản 1.0.7 trở về trước:
../SphinxTrain/scripts_pl/setup_SphinxTrain.pl -task [task_folder_name]
../pocketsphinx/scripts/setup_sphinx.pl -task [task_folder_name]
- Dành cho Sphinxtrain bản snapshot:
sphinxtrain -t [task_folder_name]setup
Thực hiện dònh lệnh trên, Sphinx sẽ tự động tạo cho ta các thư mục do
Sphinxtrain chuẩn bị để thực hiện huấn luyện:
 bin (có thể không xuất hiện trong bản Sphinxtrain mới)
 bwaccumdir
 etc
 feat
 logdir
 model_parameters
 model_architecture
 python (có thể không xuất hiện trong bản Sphinxtrain mới)
 scripts_pl (có thể không xuất hiện trong bản Sphinxtrain mới)
 wav
Trang | 70

GVHD: TS. Vũ Đức Lung SVTH: Võ Văn Hòa – Tôn Thanh Hùng
Sau khi đã tạo thành công các thư mục như trên, ta thực hiện thao tác chỉnh sửa
một số thông số để chuẩn bị bước vào tiến hành huấn luyện. Mở tập tin
etc/sphinx_train.cfg tìm tới các dòng sau vả thay đổi thông số.
a. Cài đặt định dạng âm thanh của file huấn luyện
$CFG_WAVFILES_DIR = "$CFG_BASE_DIR/wav";
$CFG_WAVFILE_EXTENSION = 'sph';
$CFG_WAVFILE_TYPE = 'nist'; # one of nist, mswav, raw
Thay đổi thông số sph thành wav và nist thành mswav như sau:
$CFG_WAVFILES_DIR = "$CFG_BASE_DIR/wav";
$CFG_WAVFILE_EXTENSION = 'wav';
$CFG_WAVFILE_TYPE = 'mswav'; # one of nist, mswav, raw

b. Cài đặt đường dẫn đến các file chuẩn bị
Kiểm tra xem các thông số sau đây có thay đổi hay không so với thư mục hiện
tại, đây là đường dẫn do Sphinx tự tạo ra để truy cập đến các file mà ta đã chuẩn bị,
trong đó $CFG_DB_NAME là tên task folder của ta phía trên.
$CFG_DICTIONARY = "$CFG_LIST_DIR/$CFG_DB_NAME.dic";
$CFG_RAWPHONEFILE = "$CFG_LIST_DIR/$CFG_DB_NAME.phone";
$CFG_FILLERDICT = "$CFG_LIST_DIR/$CFG_DB_NAME.filler";
$CFG_LISTOFFILES = "$CFG_LIST_DIR/${CFG_DB_NAME}_train.fileids";
$CFG_TRANSCRIPTFILE = "$CFG_LIST_DIR/${CFG_DB_NAME}_train.transcription"

c. Tinh chỉnh kiểu và các tham số của mô hình huấn luyện
$CFG_FINAL_NUM_DENSITIES = 8;
Số lượng senones phụ thuộc vào độ lớn của bộ từ vựng cũng như tập tin âm
thanh huấn luyện, số lượng senone thích hợp có thể tra cứu trong (Bảng 4 Các thông
số tương ứng với độ lớn của bộ huấn luyện). Các thông số trong bảng trên chỉ mang
tính chất tham khảo, thực tế chúng ta có thể thực nghiệm bộ huấn luyện với các mức
senones khác nhau để mang lại kết quả cao nhất.
# Number of tied states (senones) to create in decision-tree clustering
$CFG_N_TIED_STATES = 1000;
Trang | 71

GVHD: TS. Vũ Đức Lung SVTH: Võ Văn Hòa – Tôn Thanh Hùng

Công đoạn cuối cùng là thực hiện mã huấn luyện sau:
 Đối với Sphinxtrain từ bản 1.0.7 về trước
./scripts_pl/make_feats.pl -ctl etc/an4_train.fileids
./scripts_pl/make_feats.pl -ctl etc/an4_test.fileids
./scripts_pl/RunAll.pl
 Đối với Sphinxtrain bản snapshot
sphinxtrain run
Trong quá trình huấn luyện nếu xảy ra lỗi chủ yếu là do file chuẩn bị (phone,
transcript, fileid,..) chưa đúng, các lỗi được ghi lại cụ thể trong 1 file log có tên
[task_folder_name].html nằm trong thực mục task folder.
Phần cài đặt và hướng dẫn huấn luyện được trình bày chi tiết trong tài liệu [12].
4.5. Sử dụng Sphinx trong chương trình Java
Sphinxtrain là bộ công cụ dùng để xây dựng mộ hình âm học (Acoustic
Model), Mô hình này bao gồm các các file tham số HMM để sử dụng trong quá trình
nhận dạng. Ta có thể sử dụng mô hình này để thiết kế một ứng dụng nhận dạng. CMU
Sphinx cung cấp nhiều lựa chọn đa dạng đề ta có thể xây dựng ứng dụng. Nếu ta
muốn xây dựng ứng dụng trên các thiết bị di động (mobile, tablet,..) ta có thể dùng gói
pocketsphinx để triển khai. Ngược lại, để xây dựng một ứng dụng trên nền tảng PC, ta
sẽ dùng Sphinx4. Sphinx4 được viết với ngôn ngữ Java, nhằm mục đính thiết kế ứng
dụng có thể chạy được trên các nền tảng hệ điều hành khác nhau. Đề xây dựng ứng
dụng sử dụng mô hình âm học vừa được huấn luyện tao có thể làm theo các bước
trong hướng dẫn [15].
Trang | 72

GVHD: TS. Vũ Đức Lung SVTH: Võ Văn Hòa – Tôn Thanh Hùng
4.6. Cài đặt HTK
4.6.1. Hướng dẫn cài đặt HTK framework:
Hướng dẫn này được thực hiện trên Linux và HTK version 3.4
Chuẩn bị: HTK-3.4.1.tar.gz
Copy source code trên vào thư mục cài đặt. Ở đây lấy ví dụ giải nén tại thu
mục home của linux.
Các bước cài đặt:
Giải nén HTK-3.4.1.tar.gz ra thư mục nào đó. Chuyển tới thư mục home thực
hiện câu lệnh giải nén sau:
tar -xvzf HTK-3.4.1.tar.gz
Sau đó ta được thư mục HTK trong home.Chuyển đến thư mục HTK thực hiện
các lệnh sau:
#$./configure –prefix=/home/”yourusername”/htk
#make all
#make install
Các lệnh trên sẽ biên dịch source code thành các file trong thư mục bin
Việc tiếp theo là phải thực hiện set path của linux tới thư mục bin này để chúng ta có
thể thực chạy các tool của HTK trong cửa sổ Terminal của linux:
-Mở file “.profile” trong thư mục “home”
-Thêm dòng sau vào cuối file “.profile” rồi save lại
PATH="$PATH:/home/hoavo/HTK/htk/bin"
-Kiểm tra xem đã set path đúng chưa bằng cách gõ lệnh HInit trong cửa sổ
Terminal.
4.6.2. Chuẩn bị các thư mục cần thiết cho quá trình training
hmm0 – hmm15: các thư mục chứa các file hmm ở các bước huấn luyện
cfg (config): chứa các file config cho một số lệnh trogn qua trình training.
ins (instruction): chứa các file .hed và .led.
mlf (master label file): chứa các file .mlf.
ph (phones): chứa các file phones: mono, tri.
pl (Perl script): chứa các file script viết bằng Perl.
Trang | 73

GVHD: TS. Vũ Đức Lung SVTH: Võ Văn Hòa – Tôn Thanh Hùng
txt (other files): chứa các file linh tinh như từ điển, danh sách file, wdnet, gram,
train…
wave: chứa các file Wave.
Mfc : Chứa các file mfc
Chuẩn bị các file để huấn luyện:
a. Chuẩn bị file từ điển dict.txt
Trong file từ điển gồm 2 phần: phần từ và cách phiên âm tương ứng của từ
đó.Chúng ta đặc biệc coi trọng cách phiên âm để nâng cao hiệu quả nhận dạng. Fifle
này được tạo bằng tay và tuy biến cách phát âm sao cho đạt hiệu quả cao nhất.
Lưu ý: Vì trong câu nói chung ta thường có khoảng lặng giữa các từ nên để
nhận diện cho hiệu quả, trong bộ từ điển ta định nghĩa thêm phần phiên âm cho các từ
# dict.txt
anh a nh
ba b a
barn b ar n
bary b ar y
bawsn b aws n
beejnh b eej nh
boosn b oos n
caf c af
car c ar
chaajm ch aaj m
d. Chuẩn bị file prompts.txt :
Thực chất file này là transcript của các file wav có nội dung là transcript của
các file wav và tên tương ứng của file wav đó. Có 2 cách để tạo file prompts:
- Dùng tool HSGen có sẵn trong HTK để phát sinh ngẫu nhiên file prompts
từ các từ vựng có sẵn trong từ điển.
- Soạn thảo bằng tay các file này dựa vào từ điển đã định nghĩa ở trên.
e. Thu âm các file dưới dạng wav để đưa vào quá trình training và test.
Thu âm theo nội dung của file prompts.txt và đánh số thứ tự tương ứng cho các
file wave. Khi thu âm ta nên dùng chương trình: Audacity với các thiết lập và lưu ý
như sau:
- Chỉnh lại microphone boost trong record device về 0
Trang | 74

GVHD: TS. Vũ Đức Lung SVTH: Võ Văn Hòa – Tôn Thanh Hùng
- Tốt nhất là điều chỉnh cho âm thanh thu trong khoảng -0.5 và 0.5 dB
- Chỉnh lại chế độ thu âm trong Audacity là mono với Rate format là
48000Hz và format 16bit
Lưu file với định dạng : WAV (Microsoft 16 bit PCM)
f. Chuẩn bị file “proto”.
Đây là file mẫu dùng để huấn luyện cho mô hình HMM(file này dùng theo
hướng dẫn của HTK book )
#proto
~o <VecSize> 39 <MFCC_0_D_A>
~h "proto"
<BeginHMM>
<NumStates> 5
<State> 2
<Mean> 39
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
<Variance> 39
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1
<State> 3
<Mean> 39
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
<Variance> 39
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1
<State> 4
<Mean> 39
0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0
<Variance> 39
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
1 1 1 1 1 1 1 1 1
Trang | 75

GVHD: TS. Vũ Đức Lung SVTH: Võ Văn Hòa – Tôn Thanh Hùng
<TransP> 5
0.0 1.0 0.0 0.0 0.0
0.0 0.6 0.4 0.0 0.0
0.0 0.0 0.6 0.4 0.0
0.0 0.0 0.0 0.7 0.3
0.0 0.0 0.0 0.0 0.0
<EndHMM>
g. Chuẩn bị "mkphones0.led" va "mkphones1.led" (bằng tay)
#mkphones0.led
EX
IS sil sil
DE sp
Giải thích:
- EX: Thay thế mỗi từ trong words.mlf bằng phiên âm tương ứng trong từ điển dict.
- IS: Chèn mô hình lặng (silence - sil) vào đầu và cuối của một từ.
- DE: Xóa tất cả các short pause (sp) được thêm vào sau lệnh EX.
//mkphones1.led
EX
IS sil sil
h. Chuẩn bị file "sil.hed" dùng cho training ở bước tạo mô hình sp
AT 2 4 0.2 {sil.transP}
AT 4 2 0.2 {sil.transP}
AT 1 3 0.3 {sp.transP}
TI silst {sil.state[3],sp.state[2]}
i. Chuẩn bị file "mktri.led" để tạo triphoned
#mktri.led
WB sp
WB sil
TC
Trang | 76

GVHD: TS. Vũ Đức Lung SVTH: Võ Văn Hòa – Tôn Thanh Hùng
4.6.3. Các bước chuẩn bị cho quá trình training.
Tạo file "wordlist.txt" : chứa tất cả các từ trong file "prompts.txt":
Thực hiện bằng câu lệnh:
perl pl/prompts2wlist.pl txt/prompts.txt txt/wordlist.txt
Đầu vào: prompts.txt :file chứa các transcript của các file wave training
Đầu ra: file wordlist có cấu trúc như sau:
# wordlist.txt
ba
bary
boosn
chisn
hai
khoong
moojt
nawm
sasu
tasm
Sau đó vì để xác định đâu là bắt đầu và kết thúc một câu, ta tiến hành định
nghĩa thêm vào trong “wordlist.txt” các từ sau theo đúng thứ tự sắp xếp của nó trong
bảng chữ cái.
SENT-END
SENT-START
Ở trên, từ điển để lưu các từ để huấn luyện, nhưng trong HTK thì huấn luyện ở
cấp thấp nhất là cấp âm tiết, nên chúng ta phải chuyển nó thành danh sách các âm tiết
là danh sách các phone được dùng để phiên âm trong từ điển bằng bước sau:
Tạo file "monophones.txt" và "mydict.txt" từ file "wordlist.txt" và "dict.txt"
Lệnh thực hiện:
HDMan -A -D -T 1 -m -w txt\wordlist.txt -n ph\monophones1.txt -l log\dict.log txt\mydict.txt
dict.txt
Đầu vào:
- wordlist .txt: đơn giản là danh sách các từ được sử dụng trong wordnet, mỗi
từ một dòng có cấu trúc như ở trên.
Trang | 77

GVHD: TS. Vũ Đức Lung SVTH: Võ Văn Hòa – Tôn Thanh Hùng
- dict.txt: Là file từ điển mà chúng ta dùng để định nghĩa các từ huấn luyện
Đầu ra:
- mydict.txt: là từ và phiên âm các từ mà có trong huấn luyện, được tạo ra
bằng cách kết hợp 2 file wordlist.txt và dict.txt
- dict.log: File lưu lại các thông báo kết quả thực hiện của tool HTK
- monophones1.txt : File chứa danh sách các âm tiết được dùng để phiên âm
cho từ điển
# monophones1.txt
a
nh
sp
b
ar
n
y
aws
eej
oos
Để huấn luyện mô hình HTK với thuần các từ mà không có “sp” thì ta tạo thêm
file monophones0.txt có nội dung giống như file monophones1.txt nhưng xóa bỏ “sp”
đi.
Tạo file "words.mlf" từ file "prompts.txt":
HTK không sử dụng file prompts cho việc nhận dạng. Ta cần tạo ra một số file
khác, cụ thể là dạng file MLF (Master Label File, tham khảo thêm trong HTK Book).
Tập tin "words.mlf" thực chất là triển khai ở mức từ (word) của tập tin
"prompts.txt" theo chuẩn MLF. Thực hiện bằng lệnh:
perl pl/prompts2mlf.pl mlf/words.mlf txt/prompts.txt

#!MLF!#
"*/hoa2_01.lab"
cuoojn
xuoosng
Trang | 78

GVHD: TS. Vũ Đức Lung SVTH: Võ Văn Hòa – Tôn Thanh Hùng
xosa
lijch
suwr
susng
guwri
thuw
haxy
ddosng
taast
………..
Tạo 2 file "phones0.mlf" và "phones1.mlf":
Hai file "phones0.mlf" và "phones1.mlf" có nội dung giống nhau chỉ khác ở
chổ “phones0.mlf” chỉ có "sil" còn “phones1.mlf” có thêm "sp" giống như hai file
monophone1.txt và monophone0.txt tương ứng ở trên
Thực ra, phones#.mlf là dạng khai triển của words.mlf ở mức âm.
HLEd -A -D -T 1 -l * -d txt\mydict.txt -i mlf\phones0.mlf ins\mkphones0.led mlf\words.mlf
HLEd -A -D -T 1 -l * -d txt\mydict.txt -i mlf\phones1.mlf ins\mkphones1.led mlf\words.mlf
Đầu vào:
- mydict.txt : từ điển ta đã có từ trước.
- words.mlf: vừa được tạo ở trên.
- mkphones#.led : chứa các lệnh script để chuyển words.mlf thành
phones#.mlf
Đầu ra:
- phones#.mlf:
Lưu ý:
phones0.mlf không chứa âm sp, còn phones1.mlf thì có. Thêm sp vào chắc với
mục đích tăng tính hiệu quả cho quá trình nhận dạng sau này.
Tạo file "listwavmfc.scp" : chứa đường dẫn tới các file wave và các mfc tương
ứng cho file wave đó.
perl pl\listwavmfc.pl train\wav train\listwavmfc.scp

Trang | 79

GVHD: TS. Vũ Đức Lung SVTH: Võ Văn Hòa – Tôn Thanh Hùng
Đầu vào:
- wave: thư mục chứa các tập tin .wav
Đầu ra:
- Listwavmfc.scp: tập tin text chứa danh sách địa chỉ các file wave.
Tạo danh sách file .mfc tương ứng cho các file .wav
Tại bước này, các file âm thanh mà ta đã thu sẽ được rút đặc trưng. HTK hỗ trợ
2 dạng đặc trưng MFCC và LPC. Ở đây ta sử dụng các đặc trưng MFCC. Các
thông tin cấu hình khác được lưu trong tập tin cấu hình “HCopy.cfg”
#config_HCopy.txt
#coding parameters - HCopy
SOURCEKIND = WAVEFORM
SOURCEFORMAT = WAV
TARGETKIND = MFCC_0_D_A
TARGETRATE = 100000.0
SAVECOMPRESSED = T
SAVEWITHCRC = T
WINDOWSIZE = 250000.0
USEHAMMING = T
PREEMCOEF = 0.97
NUMCHANS = 26
CEPLIFTER = 22
NUMCEPS = 12
ENORMALISE = F
Câu lệnh thực hiện việc rút trích đặc trưng
HCopy -A -D -T 1 -C cfg/HCopy.cfg -S train\listwavmfc.scp
Đầu vào:
- HCopy.cfg: Tập tin chưa các tham số cấu hình rút trích đặc trưng như
trình bày ở trên.
Đầu ra:
- Listwavmfc.scp: chứa danh sách file wave và file mfc tương ứng.


Trang | 80

GVHD: TS. Vũ Đức Lung SVTH: Võ Văn Hòa – Tôn Thanh Hùng

Tao file "train.scp" : chứa danh sách đường dẫn đến các file mfc mà chúng ta
vừa rút trích ở bước trên.
perl pl\mkTrainFile.pl train\mfc train\train.scp
Đầu vào:
- mfc : thư mục chứa các tập tin .mfc.
Đầu ra:
- train.scp: tên tập tin chứa danh sách file .mfc.
4.6.4. Giai đoạn huấn luyện
1. Tạo Flat Start Monophones
Tại bước này, chúng ta sẽ định nghĩa ra một prototype cho HMM. Việc gán
thông tin nào cho prototype là không quan trọng, chủ yếu là xây dựng một cái khung.
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ự.

HCompV -A -D -T 1 -C cfg\HCompV.cfg -f 0.01 -m -S train\train.scp -M hmm0 proto
Đầu vào:
- HCompV.cfg: tập tin cấu hình để HCompV sử dụng(xem nội dung trong
file) .
- -f 0.01: yêu cầu xuất file vFloor chứa vector floor có giá trị bằng 0.01
vector variance.
- -S train.scp: chứa danh sách các tập tin đặc trưng mfc.
- -M hmm0: thư mục mà HCompV sẽ dùng để chứa proto (phải được tạo
trước).
- proto.txt: tập tin chứa cấu trúc proto như phần trên đã trình bày (nhớ là
lưu trong thư mục hmm0).
Trang | 81

GVHD: TS. Vũ Đức Lung SVTH: Võ Văn Hòa – Tôn Thanh Hùng
Sau khi chạy HCompV, hai tập tin proto và vFloors được tạo ra trong thư mục
hmm0.
2. Tạo macros tự động
perl pl\mkMacrosFile.pl hmm0\vFloors hmm0\macros
Đầu vào:
- hmm0/vFloors: file vFloors được tạo từ lệnh HCompV ở trên.
Đầu ra:
- hmm0/macros: file macros cần tạo.
3. Tạo hmmdefs tự động
perl pl\mkHmmdefsFile.pl hmm0\proto ph\monophones0.txt hmm0\hmmdefs
Đầu vào:
- hmm0/proto: tập tin proto có được từ bước trước.
- monophones0: tập tin monophones0 có từ bước trước.
Đầu ra:
- hmm0/hmmdefs: tên tập tin hmm sẽ được lưu lại.
4. Ước lượng các tham số trong hmmdefs.
HERest -A -D -T 1 -C cfg\HERest.cfg -I mlf\phones0.mlf -t 250.0 150.0 1000.0 -S
train\train.scp -H hmm0\macros -H hmm0\hmmdefs -M hmm1 ph\monophones0.txt
Đầu vào:
- C HERest.cfg: tập tin cấu hình
- I mlf/phones0.mlf: tập tin MLF được tạo từ trước.
- t 250.0 150.0 1000.0: tham số prunning.
- S txt/train.scp: danh sách các file .mfc.
- H hmm0/macros: vừa tạo.
- H hmm0/hmmdefs: vừa tạo.
- ph/monophones0: danh sách các phones (ngoại trừ sp).
Đầu ra:
- M hmm1: chứa tập tin hmmdefs và macros mới.
Sau khi đã có hmm1, ta huấn luyện tiếp hmm2 và hmm3 bằng HERest. Lưu ý
là khi huấn luyện hmm ở bước sau thì dựa vào hmm của bước trước
Trang | 82

GVHD: TS. Vũ Đức Lung SVTH: Võ Văn Hòa – Tôn Thanh Hùng
HERest -A -D -T 1 -C cfg\HERest.cfg -I mlf\phones0.mlf -t 250.0 150.0 1000.0 -S
train\train.scp -H hmm1\macros -H hmm1\hmmdefs -M hmm2 ph\monophones0.txt

HERest -A -D -T 1 -C cfg\HERest.cfg -I mlf\phones0.mlf -t 250.0 150.0 1000.0 -S
train\train.scp -H hmm2\macros -H hmm2\hmmdefs -M hmm3 ph\monophones0.txt
5. Xây dựng mô hình sp tu file "sil.hed" và hiệu chỉnh mô hình sp
-Copy các file trong thư mục hmm3 vào thư mục hmm4
-Mở file hmmdefs trong thư mục hmm4 và chỉnh sửa như sau:
-Copy mô hình “sil” rồi past xuống cuối file sửa lại thành mô hình “sp”
-Trong mô hình “sp” xóa 2 state 2 và 4 đi
-Thay đổi <NUMSTATES> thành 3
-Thay đổi <STATE> thành 2
-Thay đổi <TRANSP> thành 3
-Thay đổi ma trận trong <TRANSP> thành
0.0 1.0 0.0
0.0 0.9 0.1
0.0 0.0 0.0
Tạo ra mô hình hmm mới đã được chỉnh sửa bằng lệnh:
HHEd -A -D -T 1 -H hmm4/macros -H hmm4/hmmdefs -M hmm5 ins/sil.hed
ph/monophones1.txt
Đầu vào:
- hmm4/macros :file macro được tạo ra từ các bước trước
- hmm4/hmmdefs: file hmmdefs sau khi đã thêm mô hình sp
- ins/sil.hed :file chứa thông số hiệu chỉnh hmm mới
- ph/monophones1.txt : danh sách các phones (ngoại trừ sp).
Đầu ra:
- hmm5: thư mục chưa hmmdefs và macro mới

6. Trainning mô hình mới hiệu chỉnh sp ở bước trên .
HERest -A -D -T 1 -C cfg/HERest.cfg -I mlf/phones1.mlf -t 250.0 150.0 3000.0 -S
train/train.scp -H hmm5/macros -H hmm5/hmmdefs -M hmm6 ph/monophones1.txt
Trang | 83

GVHD: TS. Vũ Đức Lung SVTH: Võ Văn Hòa – Tôn Thanh Hùng

HERest -A -D -T 1 -C cfg/HERest.cfg -I mlf/phones1.mlf -t 250.0 150.0 3000.0 -S
train/train.scp -H hmm6/macros -H hmm6/hmmdefs -M hmm7 ph/monophones1.txt
7. Canh chỉnh lại dữ liệu huấn luyện
Trong từ điển phát âm có một số từ có nhiều kiểu phát âm khác nhau. Ở bước
trước, HLEd chọn tùy ý một trong các kiểu phát âm. Ở bước này, chúng ta sẽ canh
chỉnh lại tập tin transcription words.mlf. Nó sẽ chọn cách phiên âm nào khớp nhất so
với dữ liệu ngữ âm.
Chú ý: Ta có thể bỏ qua bước này nếu từ điển của chúng ta nhỏ và tạo một file
mlf/aligned.mlf copy nội dung từ file worlds.mlf để thực hiện cho các bước tiếp theo.
Nhưng sẽ không cho hiệu quả nhận diện cao.
HVite -A -D -T 1 -l * -o SWT -b sent-end -C cfg/HERest.cfg -H hmm7/macros -H
hmm7/hmmdefs -i mlf/aligned.mlf -m -t 250.0 150.0 1000.0 -y lab -a -I mlf/words.mlf -S
train/train.scp txt/mydict.txt ph/monophones1.txt > Hvite_log
8. Training 2 bước nữa
HERest -A -D -T 1 -C cfg/HERest.cfg -I mlf/aligned.mlf -t 250.0 150.0 3000.0 -S
train/train.scp -H hmm7/macros -H hmm7/hmmdefs -M hmm8 ph/monophones1.txt

HERest -A -D -T 1 -C cfg/HERest.cfg -I mlf/aligned.mlf -t 250.0 150.0 3000.0 -S
train/train.scp -H hmm8/macros -H hmm8/hmmdefs -M hmm9 ph/monophones1.txt
9. Tạo triphones,wintri.mlf từ aligned.mlf
HLEd -A -D -T 1 -n ph/triphones1 -l * -i mlf/wintri.mlf ins/mktri.led mlf/aligned.mlf
Đầu vào:
- ins/mktri.led: chứa lệnh tạo triphones từ monophones
- mlf/aligned.mlf: monophones transcription đã được ước lượng lại.
Đầu ra:
- -n ph/triphones1: danh sách các triphones.
- -i mlf/wintri.mlf: triphones transcription.
10. Tạo "mktri.hed"
perl pl/mkTriHed.pl ph/monophones1.txt ph/triphones1 ins/mktri.hed
11. Tao mo hinh HMM moi theo triphones1
Trang | 84

GVHD: TS. Vũ Đức Lung SVTH: Võ Văn Hòa – Tôn Thanh Hùng
HHEd -A -D -T 1 -H hmm9/macros -H hmm9/hmmdefs -M hmm10 ins/mktri.hed
ph/monophones1.txt
Đầu vào:
- H hmm9/macros -H hmm9/hmmdefs: hmm của monophones.
- Ins/mktri.hed: tập tin chứa lệnh thực hiện “trói buộc” các ma trận
chuyển của mỗi triphone trong tập tin triphones1.
- B: lưu trữ hmmdefs ở dạng nhị phân thay vì text (giảm không gian
chiếm dụng).
Đầu ra:
- M hmm10: hmm10 được huấn luyện thành triphones.
12. Training 2 vong
HERest -A -D -T 1 -C cfg/HERest.cfg -I mlf/wintri.mlf -t 250.0 150.0 3000.0 -S
train/train.scp -H hmm10/macros -H hmm10/hmmdefs -M hmm11 ph/triphones1

HERest -A -D -T 1 -C cfg/HERest.cfg -I mlf/wintri.mlf -t 250.0 150.0 3000.0 -s stats -S
train/train.scp -H hmm11/macros -H hmm11/hmmdefs -M hmm12 ph/triphones1
13. Tao full list + full hmm
HDMan -A -D -T 1 -b sp -n fulllist -g global.ded -l flog dict-tri dict.txt
Sau đó tạo mới 1 file “fulllist1” rồi copy hết nội dung của file fulllist và file
triphones1 vào sau đó chạy lệnh sau để xóa hết các dòng trung nhau trong file fulllist1
$perl fixfulllist.pl fulllist1 fulllist
Tiếp tục tạo file tree.hed
perl pl/mkTree.pl TB 350 ph/monophones0.txt ins/tree.hed
14. Tao mo hinh HMM moi
HHEd -A -D -T 1 -H hmm12/macros -H hmm12/hmmdefs -M hmm13 ins/tree.hed
ph/triphones1
Đầu vào :
- H hmm12/macros -H hmm12/hmmdefs: hmm đã tạo ở bước trước
- tree.hed: là tập hợp các chỉ thị tìm kiếm các ngữ cảnh phù hợp cho việc
gom nhóm.
- ph/triphones1: danh sách các triphones
Trang | 85

GVHD: TS. Vũ Đức Lung SVTH: Võ Văn Hòa – Tôn Thanh Hùng
Đầu ra:
- M hmm13: Thư mục chứa mô hình hmm mới
15. Training 2 vong
HERest -A -D -T 1 -C cfg/HERest.cfg -I mlf/wintri.mlf -s stats -t 250.0 150.0 3000.0 -S
train/train.scp -H hmm13/macros -H hmm13/hmmdefs -M hmm14 tiedlist

HERest -A -D -T 1 -C cfg/HERest.cfg -I mlf/wintri.mlf -s stats -t 250.0 150.0 3000.0 -S
train/train.scp -H hmm14/macros -H hmm14/hmmdefs -M hmm15 tiedlist

4.6.5. Kiểm tra dữ liệu huấn luyện
1. Tao file "listwavmfc.scp" : chi duong dan cho cac file wave va cac file
mfc tuong ung cho file wave do
perl pl/listwavmfc.pl test/wav listwavmfc_test.scp
2. Tao danh sach file .mfc tuong ung cho tung file .wav
HCopy -T 1 -C cfg/HCopy.cfg -S listwavmfc_test.scp
3. Tao file "test.scp" : chua danh sach duong dan cac file .mfc
perl pl/mkTrainFile.pl mfc test/test.scp
4. Testing
HVite -T 1 -C cfg/HVite.cfg -H hmm15/macros -H hmm15/hmmdefs -S test/test.scp -i
test/recout.mlf -w wdnet txt/mydict.txt tiedlist
Giải thích
–C cfg/Hvite.cfg: Đầu vào, tập tin cấu hình.
-H hmm15/macros -H hmm15/hmmdefs: Đầu vào
-S test/test.scp: Đầu vào, tập tin chứa danh sách các file .mfc cần nhận dạng.
-i test/recout.mlf: Đầu ra, transcription nhận dạng được.
-w txt/wdnet.txt: Đầu vào, wordnet được tạo từ những bước đầu.
txt/dict.dct: Đầu vào, từ điển phiên âm.
tiedlist: Đầu vào, danh sách phones tạo được từ lệnh CO “tiedlist” trong
tree.hed.


Trang | 86

GVHD: TS. Vũ Đức Lung SVTH: Võ Văn Hòa – Tôn Thanh Hùng
Lưu ý
Với việc cấu tạo triphones theo kiểu word internal như đã nói phần trước, trong
tập tin cấu hình Hvite.cfg cần có thêm 2 tham số FORCECXTEXP = T và
ALLOWXWRDEXP=F. Muốn hiểu tại sao, xem chương 12 HTK Book.
Có thêm một vài tham số của Hvite như p, s, tùy người dùng điều chỉnh.
4.6.6. Kết quả đạt được
-Với 500 file wave dữ liệu huấn luyện và test trên 100 file wave thì khả năng
nhận diện của chương trình thu được như sau:
------------------------ Overall Results --------------------------
SENT: %Correct=22.80 [H=114, S=386, N=500]
WORD: %Corr=99.78, Acc=87.55 [H=3991, D=0, S=9, I=489, N=4000]
4.7. Triển khai ứng dụng demo
4.7.1. Ứng dụng điều khiển Google Chrome
a. Giới thiệu
Đây là ứng dụng demo sử dụng giọng nói để điểu khiển trình duyệt web
Google Chrome, người dùng sẽ thao tác với trình duyệt thông qua giọng nói, demo hỗ
trợ thực hiện khoảng 20 câu lệnh điều khiển, được ghép từ 47 từ đơn.
ảng 5 Danh sách 47 từ trong điều khiển Google Chrome
bản duyệt mở sang to xóa
chuyển hãy mới sau tới xuống
cửa khóa nghe sổ tra

cuối kiếm ngừng sử trái

cuộn kiểm nhạc tải trang

đầu lại nhỏ táp trình

đi lên phải thu trở

đồ lịch phóng thư trước

đóng lưu quép tìm từ

Từ các từ đơn này, ta có thể ghéo lại thành các câu lệnh điều khiển có nghĩa,
vd: mở táp (tab) mới, mở cửa sổ, mở trang quép (web). Danh mục các câu điều khiển
có thể tham khảo thêm trong phần phụ lục.
Trang | 87

GVHD: TS. Vũ Đức Lung SVTH: Võ Văn Hòa – Tôn Thanh Hùng
b. Chương trình
Chương trình được viết bằng ngôn ngữ C#, kết hợp thư viện Julius.dll và mô
hình âm học được huấn luyện từ công tụ HTK, bao gồm 2 module chính đó là: module
nhận dạng và module điều khiển trình duyệt.

Hình 4.2 Mô hình hoạt động của chương trình demo
Module nhận dạng sử dụng các hàm do bộ thư viện Julius.dll cung cấp để thực
hiện công đoạn nhận dạng, sử dụng mô hình âm học được huấn luyện phần trên (sử
dụng từ phần huấn luyện của HTK), kết hợp với mô hình ngôn ngữ. Sau khi nhận
dạng ra kết quả sẽ chuyễn sang dạng text (ký tự) và cuối cùng chuyễn nội dung nhận
dạng được sang module điều khiển.

Hình 4.3 Mô hình sơ đồ Module nhận dạng
Trang | 88

GVHD: TS. Vũ Đức Lung SVTH: Võ Văn Hòa – Tôn Thanh Hùng
Module điều khiểu sau khi được gọi và truyền vào tham số là kết quả tiếng nói
nhận dạng được sẽ thực hiện công đoạn điều khiển dựa vào nội dung đó. Module này
được xây dựng như một thư viện liên kết động (dll) để tiện cho việc nâng cấp điều
khiển sau này. Hiện tại, chương trình demo chỉ có thể điểu khiển được vài chức năng
cơ bản của Hệ điều hành, trình duyệt Google Chrome và trình nghe nhạc WMPlayer.
Trong Module này gồm 1 class chính là CommandReceiver.cs. Class này đảm nhận
nhiệm vụ nhận lệnh dưới dạng text để thực hiện lệnh điều khiển. Để hổ trợ việc ánh xạ
các câu lệnh điều khiển thành lệnh điều khiển thực sự, module này liên kết với một tập
tin danh sách lệnh mang tên voiceCommand.txt. Danh sách các câu lệnh trong đây sẽ
được nạp vào chương trình lúc khởi động, sau khi nhận được nội dung dưới dạng text
cho người dùng ra lệnh, module nhận dạng sẽ tiến hành tra khớp các lệnh có trong cơ
sở dữ liệu lệnh vừa được nạp vào, từ đó đưa ra được lệnh cần tiến hành thực sự. Nội
dung danh sách lệnh được bổ sung trong phần phụ lục.
Trong Module này còn bao gồm 3 class chính thực hiện nhiệm vụ điều khiển
cho 3 đối tượng chính của demo này đó là window, chrome và trình nghe nhạc
WMPlayer. Để điều khiển được trình duyệt Chrome cũng như các chương trình khác,
chương trình truyền cho hệ điều hành Windows những sự kiện bàn phím, những sự
kiện bàn phím này chính là các tổ hợp phím tắt đề sử dụng Chrome (vd: Ctrl + T: mở
tab mới, Ctrl + W: đóng tab,…).

Hình 4.4 Mô hình cấu tạo của Module điều khiển
Trang | 89

GVHD: TS. Vũ Đức Lung SVTH: Võ Văn Hòa – Tôn Thanh Hùng

Hình 4.5 Giao diện chương trình điều khiển máy tính
c. Nhận xét
Kết quả nhận dạng được từ module nhận dạng quyết định độ chính xác rất cao
của chương trình, nhiễu khi nhận dạng sẽ gây ra câu lệnh bị sai lệnh đôi chút so với
câu lệnh thực tế, ví dụ: người dùng nói “mở táp mới”, những do nhiễu môi trường nên
kết quả nhận dạng có thể trả về “hãy mở táp mới”. Biện pháp khác phục đơn giản nhất
đó chính là so sánh độ “giống nhau” giữa câu lệnh nhận dạng được và câu lệnh trong
mẫu câu thay vì so khớp chính xác từng từ. Nhìn chung kết quả nhận dạng khá chính
xác trong môi trường không quá ồn (~90%).
4.7.2. Ứng dụng điều khiển mô hình xe tăng
a. Giới thiệu
Đây là ứng dụng demo sử dụng giọng nói để điểu khiển hoạt động của một mô
hình xe tăng điều khiển từ xa. Người dùng sẽ nói những khẩu lệnh điều khiển di
chuyển, v.v vào microphone, và thông qua chương trình demo, mô hình xe tăng sẽ
hoạt động tương ứng với lệnh được điều khiển bằng giọng nói. Chương trình hỗ trợ
thực hiện khoảng hơn 30 hình thái câu lệnh điều khiển,được kết hợp từ 25 từ đơn
Trang | 90

GVHD: TS. Vũ Đức Lung SVTH: Võ Văn Hòa – Tôn Thanh Hùng
ảng 6 Danh sách 25 từ trong demo điều khiển mô hình xe tăng
ba dừng mươi quay tới
bắn lại ngừng sang trái
chạy lên nòng sáu trăm
đi lui phải súng vừa
độ lui qua tiến xoay
d. Chương trình
Chương trình được viết bao gồm 2 module, module nhận dạng mệnh lệnh tiếng
nói (ngôn ngữ Java) và module điều khiển mô hình xe tăng (ngôn ngữ C#). Chương
trình là sự kể hợp giữa 2 module được viết bằng 2 ngôn ngữ khác nhau, được kết nối
để giao tiếp với nhau bằng socket.
Module nhận dạng tiếng nói hoạt hoạt động tương tự như phần demo trên.
Trong đó có bổ sung thêm phần tạo kết nối thông qua giao thức socket với module
điều khiển. Sau khi nhận dạng được kết quả tiếng nói, chương trình sẽ truyền dữ liệu
đó qua giao thức socket đến với module điều khiển.
Module điểu khiển được viết bằng ngôn ngữ C#, module này làm việc giống
như một driver cho thiết bị USB, thông qua module này, máy tính sẽ truyền lệnh trực
tiếp xuống chiếc Remote điều khiển mô hình xe tăng, và thông qua thiết bị Remote
này điều khiển hoạt động của mô hình chiếc xe tăng từ xa.

Hình 4.6 Mô hình xe tăng sử dụng trong chương trình
Trang | 91

GVHD: TS. Vũ Đức Lung SVTH: Võ Văn Hòa – Tôn Thanh Hùng
Thiết bị demo là một mô hình xe tăng điều khiển từ xa, kèm một thiết bị
Remtoe, chiếc Remote này được thiết kế và gắn thêm một mạch điều khiển vào bên
trong, mạch này có nhiệm vụ nhận tín hiệu đầu vào từ cổng USB và dùng tín hiệu đó
để điều khiển thiết bị Remote. Khi thiết kế hoàn thành, chiếc Remote sẽ có một ngõ
vào USB (như Hình 4.7). Ta dùng một cáp nối USB để kết nối thiết bị Remote này với
máy tính.

Hình 4.7 Trong hình là điểu khiển xe tăng với cổng USB kết nối máy tính


Hình 4.8 Hình chụp bên trong Remote được lắp thêm mạch điều khiển qua USB
Trang | 92

GVHD: TS. Vũ Đức Lung SVTH: Võ Văn Hòa – Tôn Thanh Hùng

Hình 4.9 Giao diện chương trình điều khiển xe tăng từ xa bằng giọng nói
e. Nhận xét
Kết quả điều khiển chủ yếu phụ thuộc vào module nhận dạng tiếng nói. Nhận
dạng các từ trong điều kiện bình thường (không quá ồn) là 89%, độ chính xác nhận
dạng tương đối thấp hơn demo trước do bị nhiễu của tiếng ồn động cơ (từ mô hình xe
phát ra).
4.8. Thực hiện so sánh với HTK
4.8.1. Giới thiệu
Như chương 3 đã giới thiệu, HTK và Sphinx là 2 trong số những Framework
nhận dạng giọng nói mã nguồn sử dụng phổ biến nhất trên thế giới hiện nay. Đã có
nhiều bài viết, báo cáo, khóa luận tại Việt Nam trình bày về HTK và cho thấy được
khả năng của HTK trong ứng dụng nhận dạng giọng nói tiếng Việt. Một trong những
phòng thí nghiệm tại Việt Nam sử dụng mạnh mẽ HTK đó là phòng thí nghiệm
AILAB trực thuộc ĐH. Khoa Học Tư Nhiên do TS. Vũ Hải Quân quản lý. Trong khi
đó, Sphinx do phát triển sau nên còn khá mới mẽ tại Việt Nam. Phần này sẽ trình bày
sự so sánh về khả năng áp dụng cho tiếng Việt của 2 Framework này. Mục đích của
phần này là cho ta thấy được những điểm khác biệt cơ bản cũng như hiệu quả tương
đối của 2 công cụ nhận dạng giọng nói tự động.
Trang | 93

GVHD: TS. Vũ Đức Lung SVTH: Võ Văn Hòa – Tôn Thanh Hùng
Việc so sánh Sphinx và HTK tại Việt Nam là một thử nghiệm mới, nhóm
chúng em hiểu rõ việc so sánh khả năng của 2 Framework lớn như cách làm của nhóm
là còn thiếu sót về mặt khoa học, xong việc đó giải quyết được một số vấn đề cơ bản
mà nhóm đặt ra như:
- So sánh được độ khó khăn khi cài đặt 2 hệ thống.
- So sánh về khả năng nhận dạng Tiếng Việt ở mức cơ bản (không thay đổi
nhiều những thông số tinh chỉnh khác).
- So sánh được khả năng áp dụng mô hình vào chương trình thực tế đối với
người dùng không chuyên về lĩnh vực nghiên cứu nhận dạng tiếng nói.
4.8.2. Thực hiện
a. Chuẩn bị
Trước khi thực hiện quá trình huấn luyện và thử nghiệm, nhóm đã cài đặt HTK
và Sphinx theo hướng dẫn tham khảo mục [16], [12].
Xây dựng 2 bộ dữ liệu dành cho huấn luyện và thử nghiệm giống nhau dành
cho 2 framework.
Danh sánh từ trong từ điển phiên âm tham khảo tại bảng phụ lục, cả 2
framework đều sử dụng chung 1 từ điển ngữ âm.
Ngữ pháp sử dụng trong HTK ở dạng word-net, được sinh ra từ danh sách các
câu lệnh. Ngữ pháp sử dụng trong Sphinx ở dạng tri-gram, được tạo ra cũng từ danh
sách câu lệnh trên. Bảng danh sách câu lệnh tham khảo phần phụ lục.
Decoder sử dụng trong HTK là hàm HVite [16], và Sphinx là Sphinx3
Decoder.
Các thông số để thực hiện trong quá trình huấn luyện của 2 Framework được
giữ mặc định.
Ý nghĩa quan trọng của việc giữ các thông số mặc định: các thông số cơ bản
được thiết lập sẵn của nhà phát triển 2 framework là tương thích với đa số dữ liệu
huấn luyện của các ngôn ngữ khác nhau, việc tinh chỉnh các thông số chỉ nhằm mục
đích nghiên cứu và làm cho mô hình âm học thích hợp hơn với ngôn ngữ xác định.
Giữ nguyên các thông số này thể hiện tính khách quan trong quá trình so sánh. Người
dùng mới sẽ có định hướng nhất định về Framework nào sẽ thích hợp cho ngôn ngữ
Trang | 94

GVHD: TS. Vũ Đức Lung SVTH: Võ Văn Hòa – Tôn Thanh Hùng
của mình hơn với các thông số mặc định từ nhà phát triển. Trong trường hợp chúng ta
là tiếng Việt.
Âm thanh được thu ở định dạng chuẩn của cả 2 framwork là: tần số lấy mẫu
(sample rate):
b. Dữ liệu huấn luyện (training)
Dữ liệu huấn luyện là tập dữ liệu âm thanh thu âm từ 2 thành viên trong nhóm,
tổng thời lượng thu âm là sấp xỉ 15 giờ đồng hồ với số câu huấn luyện là 5300 câu
gồm các câu nói điều khiển máy tính và mô hình xe. Tổng số từ huấn luyện là 120 từ
đơn được cấu tạo từ 72 âm vị.
c. Dữ liệu thử nghiệm (testing)
Dữ liệu thử nghiệm là tập dữ liệu âm thanh thu âm cũng từ 2 thành viên trong
nhóm, tổng số câu sử dụng trong thử nghiệm là 1000 câu với thời lượng thu âm
khoảng 2 giờ đồng hồ.
d. Kết quả
ảng 7 Kết quả so sánh HTK và Sphinx
Tỉ lệ câu đúng (%) Tỉ lệ từ đúng (%) Độ chính xác từ (%)
HTK 41.60 99.97 94.38
SPHINX 68 98.2 96.7
ảng 8 Kết quả chi tiết lỗi sai
Insertions Deletions Substitutions
HTK 833 28 4
SPHINX 206 43 227
Tỉ lệ câu đúng được tính theo cách sau: một câu được nhận là đúng khi tất cả
các từ trong câu đó đều đúng, nếu có ít nhất 1 từ sai thì câu đó xem như câu sai. Tỉ lệ
câu đúng là số câu đúng chia cho tổng số câu thử nghiệm, trong trường hợp này là
1000 câu.
Tỉ lệ từ đúng là tỉ lệ giữa số từ mà hệ thống nhận dạng đúng so với tổng số từ
cần nhận dạng.
Độ chính xác từ là tỉ lệ giữa tổng số từ sai, bao gồm các lỗi nhận dạng sai từ
như Insertion (thêm từ), Deletion (xóa từ), Substitutions (thay từ). Khác với chỉ số Tỉ
Trang | 95

GVHD: TS. Vũ Đức Lung SVTH: Võ Văn Hòa – Tôn Thanh Hùng
lệ từ đúng, chỉ số này thể hiện độ chính xác khi nhận dạng từ của hệ thống nhận dạng.
Tỉ lệ này càng cao, hệ thống nhận dạng các từ đơn càng chính xác.
4.8.3. Đánh giá kết quả
Sau quá trình thử nghiệm cùng các kết quả có được, nhóm có một số nhận xét
tổng quan về 2 Framework như sau:
- Khả năng nhận dạng từ đúng của cả 2 Framework đều rất cao (>98%), trong
đó HTK thể hiện tốt hơn.
- Tuy nhiên so với Sphinx thì HTK lại mắc quá nhiều lỗi Insertion-thêm từ
do đó là giảm độ chính xác của hệ thống nhận dạng xuống đáng kể. Trong
đó bao gồm cả độ chính xác nhận dạng câu.
- Thời gian thực hiện thí nghiệm decode của Sphinx ngắn hơn nhiều so với
HTK.
- Việc triển khai huấn luyện trên HTK thường xuyên gặp nhiều khó khăn do
quy trình thực hiện bao gồm nhiều công đoạn phức tạp hơn Sphix.
- Tài liệu tìm hểu HTK tuy phong phú nhưng khá chi tiết và nặng về kỹ thuật,
vì thế đối với người mới bắt đầu sẽ gặp nhiều khó khăn. Trong khi đó,
Sphinx cung cấp một trang chủ [11] khá đầy đủ thông tin kèm một cộng
đồng Forum thường xuyên được cập nhật và giải đáp thắc mắc. Vì thế, đối
với người muốn phát triển nhanh chóng một hệ nhận dạng giọng nói cho
một ngôn ngữ thì Sphinx là sự lựa chọn ưu tiên.
- Về chính sách bản quyền thì Sphinx được cung cấp hoàn toàn miễn phí,
người dùng có thể sử dụng thư viện và mã nguồn cho nhiều mục đích từ
nghiên cứu tới xây dựng ứng dụng thương mại. Khác với Sphinx, HTK tuy
cũng là một Framework mã nguồn mở, nhưng có những điểu khoảng ràng
buộc chặt chẽ đối với người dùng và yêu cầu người dùng phải đăng ký
thành viên mới được download sử dụng HTK.

Trang | 96

GVHD: TS. Vũ Đức Lung SVTH: Võ Văn Hòa – Tôn Thanh Hùng
CHƯƠNG 5. KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN
5.1. Kết quả đạt được
Sau quá trình tìm hiểu, nghiên cứu phương pháp nhận dạng giọng nói tiếng
Việt, khóa luận đã đạt được những mục tiêu đề ra như sau:
a. Tìm hiểu các khái niệm có liên quan đến hệ nhận dạng tiếng nói từ đó hiểu
và vận dụng được một số yếu tố quan trọng trong việc sử dụng công cụ hỗ
trợ.
b. Tìm hiểu phương pháp cài đặt công cụ hỗ trợ xây dựng hệ nhận dạng tiếng
nói Sphinx và HTK. Trong đó bao gồm việc chi tiết hóa từng bước cài đặt
và thực hiện. Các bước xây dựng mô hình huấn luyện.
c. Xây dựng bộ huấn luyện với dữ liệu thu âm ~ 15 giờ đồng hồ.
d. Thực nghiệm so sánh khả năng áp dụng vào tiếng Việt của 2 công cụ
Sphinx và HTK, trong đó bao gồm cả thử nghiệm các công cụ decode khác
nhau như Hvite, Sphinx4 và Julius để từ đó rút ra được kết luận và nhận xét.
e. Xây dựng chương trình mô phỏng nhận dạng tiếng nói tiếng Việt trên máy
tính sử dụng mô hình âm học được huấn luyện bằng công cụ Sphinx,
chương trình nhận dạng được trên 60 từ đơn, được ghép thành khoảng 100
câu lệnh điều khiển. Ngoài ra, nhóm còn thực hiện demo trên mô hình thật,
vận dụng khả năng của mạch điều khiển vào việc điểu khiển mô hình thật.
Kết quả đạt được trong cả 2 demo đều đạt được tỉ lệ chính xác rất cao.
5.2. Những điểm còn hạn chế
Do đây là một đề tài tương đối khó, và nhóm cũng chưa được trang bị các kiến
thức về xử lý tín hiệu số, xử lý tiếng nói, các mô hình toán học,.. cũng như tài liệu về
âm học, ngữ âm học còn hạn chế nên khóa luận không tránh khỏi nhiều thiếu sót.
Những mặt còn hạn chế của khóa luận:
a. Bộ từ vựng còn quá ít, so với tất cả từ đơn của tiếng Việt (hơn 7000 từ). Để
có được bộ tự vựng lớn hơn đòi hỏi phải bỏ ra rất nhiều công sức bao gồm
cả thu thập dữ liệu, xây dựng mô hình phiên âm chính xác, thu âm, phân
tích ngữ pháp,…
b. Mô hình ngữ âm còn hạn chế, hệ thống chỉ nhận dạng được với độ chính
xác cao đối với 2 thành viên trong nhóm, đối với một người chưa được
Trang | 97

GVHD: TS. Vũ Đức Lung SVTH: Võ Văn Hòa – Tôn Thanh Hùng
huấn luyện thì mô hình vẫn có thể nhận dạng được tiếng nói của họ nhưng
độ chính xác không cao.
c. Hai demo của khóa luận chỉ tập trung xây dựng nhằm mục đích thể hiện khả
năng ứng dụng của mô hình nhận dạng tiếng nói tiếng Việt tự động được
xây dựng từ các framework. Tính ứng dụng thực tế vẫn còn hạn chế, tuy
nhiên, để xây dựng 1 ứng dụng mang tính thực tiễn thật sự không quá khó,
vấn đề quan trọng là đặt ra được mục tiêu thực tiển của 1 ứng dụng cụ thể,
từ đó xây dựng mô hình âm học thích hợp.
5.3. Hướng nghiên cứu và phát triển
Hiện tại, nhóm đã thành công trong việc thử nghiệm mô hình từ điển tiếng Việt
do nhóm tham khảo được từ nhiều nguồn (mô hình này chưa thật sự chuẩn xác, nhưng
khả năng áp dụng ở mức chấp nhận được) vào các công cụ xây dựng hệ thống nhận
dạng tiếng nói tự động, bao gồm HTK và Sphinx. Nhóm đã thực hiện thí nghiệm trên
các công cụ decode khác nhau như Hvite, Julius, Sphinx4, và nhận thấy kết quả rất
khả quan, đứng tại mức thành quả đạt được này sẽ có rất nhiều hướng nghiên cứu mới
có thể được thực hiện cụ thể như:
Tìm hiểu, nghiên cứu xây dựng mô hình phát âm tiếng Việt, điều này có ý
nghĩa to lớn cho cả việc tổng hợp và nhận dạng giọng nói. Mô hình này nếu được phát
triển một cách khoa học và đúng đắn sẽ đưa độ chính xác nhận dạng của các mô hình
âm học được xây dựng bởi các công cụ lên rất nhiều. Công việc này đòi hỏi sự nghiên
cứu của các nhà âm học, ngữ âm học, nghiên cứu về tiếng Việt,..
Tìm hiểu sâu hơn về cấu tạo của các framework nhận dạng giọng nói trên, để từ
đó, nắm được quy trình hoạt động một cách rõ ràng hơn, ta có thể xây dựng được một
mô hình âm học thích hợp nhất cho tiếng Việt.
Mở rộng vốn từ vựng của bộ tự điển, thực hiện thu âm số với quy mô rộng rãi
hơn, đa dạng giọng nói hơn, nhằm mục đích xây dựng một hệ nhận dạng tiếng nói đọc
lập người nói.
Xây dựng các ứng dụng cụ thể hóa hơn sử dụng các mô hình đã được huấn
luyện. Các ứng dụng tương tác giữa người và thiết bị bằng giọng nói, hỗ trợ sự thông
minh cho thiết bị hoặc hỗ trợ hoạt động của người khuyết tật.

Trang | 98

GVHD: TS. Vũ Đức Lung SVTH: Võ Văn Hòa – Tôn Thanh Hùng
TÀI LIỆU THAM KHẢO

[1] B.H. Juang, Lawrence R. Rabiner, "Automatic Speech Recognition – A Brief
History of the Technology".
[2] S. Furui, "50 years of progress in speech and speaker recognition".
[3] [Online]. Available: http://www.cslu.ogi.edu/toolkit/. [Accessed 7 2012].
[4] L. C. Mai, "Phát triển các kết quả tổng hợp, nhận dạng câu lệnh, chuỗi số tiếng
Việt liên tục trên môi trường điện thoại di động," 2006.
[5] Đăng Ngọc Đức, Lương Chi Mai, "Tăng cường độ chính xác của hệ thống mạng
neuron nhận dạng tiếng Việt," 2003.
[6] B. H. Khang, "Báo cáo tổng kết Khoa học và Kỹ thuật đề tài Nghiên cứu phát
triển công nghệ nhận dạng, tổng hợp và xử lý ngôn ngữ tiếng Việt," 2004.
[7] "Vietnamese alphabet," Wikipedia, [Online]. Available:
http://en.wikipedia.org/wiki/Vietnamese_alphabet. [Accessed 7 2012].
[8] "IPA for Vietnamese," Wikipedia, [Online]. Available:
http://en.wikipedia.org/wiki/Wikipedia:IPA_for_Vietnamese. [Accessed 7
2012].
[9] "Digital audio," [Online]. Available: http://en.wikipedia.org/wiki/Digital_audio.
[Accessed 7 2012].
[10] Red Hat, [Online]. Available: http://www.cygwin.com/. [Accessed 7 2012].
[11] Carnegie Mellon University, [Online]. Available:
http://cmusphinx.sourceforge.net/. [Accessed 7 2012].
[12] "Training Acoustic Model For CMUSphinx," Carnegie Mellon University,
[Online]. Available: http://cmusphinx.sourceforge.net/wiki/tutorialam.
[Accessed 7 2012].
[13] [Online]. Available: http://audacity.sourceforge.net/. [Accessed 7 2012].
[14] "Recording the Test Data," [Online]. Available:
http://www.voxforge.org/home/dev/acousticmodels/windows/test/htk--
julius/data-prep/step-3. [Accessed 7 2012].
Trang | 99

GVHD: TS. Vũ Đức Lung SVTH: Võ Văn Hòa – Tôn Thanh Hùng
[15] "Sphinx-4 Application Programmer's Guide," Carnegie Mellon University,
[Online]. Available: http://cmusphinx.sourceforge.net/wiki/tutorialsphinx4.
[Accessed 7 2012].
[16] Steve Young, Gunnar Evermann, Mark Gales, Thomas Hain, Dan Kershaw,
Xunying (Andrew) Liu, Gareth Moore, Julian Odell, Dave Ollason, Dan Povey,
Valtcho Valtchev, Phil Woodland, HTK Book, Cambridge University
Engineering Department, 2009.
[17] L. Rabiner, A Tutorial on Hidden Markov Models and Selected Application in
Speech Recognition, 1989.