Nghiên cứu về nhận dạng giọng nói tiếng Việt và ứng dụng

99
Trang | 1 GVHD: TS. Vũ Đức Lung SVTH: Võ Văn Hòa – Tôn Thanh Hùng CHƯƠNG 1. TNG QUAN 1.1. Gii thiệu đề tài Đề tài này mang tên “Nghiên cứu vnhn dng ging nói tiếng Vit và ng dụng trong điều khiển”. Để thc hiện được vic nhn dng ging nói, ta phi xây dng mt hthng gi là Hthng nhân dng tiếng nói tđộng (Automatic Speech Recognition -ASR), đây là hệ thng chuyển đổi chui âm thanh tiếng nói thành chui t. Vic xây dng mt hnhn dng tiếng nói không phi là mt công việc đơn giản, đòi hỏi nhóm phát trin phi am hiu các kthut, lý thuyết tnhiu kiến thc khác nhau như: âm học - vt lý, ngâm hc, ngôn nghc, lý thuyết xác sut thng kê, máy hc, trí tunhân tạo, … Trên thế gii, nhiu nhóm nghiên cứu đã phát triển thành công hnhn dng tiếng nói cho các ngôn nglớn như: tiếng Anh, tiếng Trung Quc, tiếng Nht, nhưng gii pháp nhn dng cho tiếng Vit vn còn nhiu mt hn chế. 1.2. Các nghiên cu có liên quan đến khóa lun 1.2.1. Trên thế gii Giao tiếp người-máy là một lĩnh vực nghiên cu lớn và khó nhưng lại có nhiu ng dng thc tin. Tiếng nói là một phương tiện giao tiếp tnhiên nht ca con người và vì vy, nghiên cứu để máy tính có thhiu tiếng nói của con người, hay còn gi là nhn dng tiếng nói tđộng (Automatic Speech Recognition –ASR), đã trải qua quá trình 70 năm phát triển. Nhng nlc nghiên cứu đầu tiên vASR đã được tiến hành trong thp niên 50 với ý tưởng chính là da trên ngâm. Do kĩ thuật xtín hiu scũng như khả năng máy tính còn giới hn, các hthng nhn dạng lúc đó chtp trung khai thác đặc trưng phổ cộng hưởng (spectral resonances) đối vi các nguyên âm ca 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 hthống đáng chú ý như: hệ thng nhn dng ký sri rc ca Bell-lab (1952), bnhn dng 13 âm vcủa trường đại hc CollegeAnh (1958) [1, p. 8]Trong thp k1960, điểm đáng ghi nhận nhất là ý tưởng ca tác gingười Nga, Vintsyuk khi ông đề xuất phương pháp nhận dng tiếng nói da trên qui hoạch động theo thi 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ế gii biết đến. Cui những năm 1960, Reddy trường đại hc CMU (Mỹ) đã đề xut những ý tưởng đầu tiên vnhn

Transcript of Nghiên cứu về nhận dạng giọng nói tiếng Việt và ứng dụng

Page 1: Nghiên cứu về nhận dạng giọng nói tiếng Việt và ứng dụng

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

Page 2: Nghiên cứu về nhận dạng giọng nói tiếng Việt và ứng dụng

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.

Page 3: Nghiên cứu về nhận dạng giọng nói tiếng Việt và ứng dụng

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ư:

Page 4: Nghiên cứu về nhận dạng giọng nói tiếng Việt và ứng dụng

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).

Page 5: Nghiên cứu về nhận dạng giọng nói tiếng Việt và ứng dụng

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%.

Page 6: Nghiên cứu về nhận dạng giọng nói tiếng Việt và ứng dụng

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.

Page 7: Nghiên cứu về nhận dạng giọng nói tiếng Việt và ứng dụng

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 2 F0t

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

Page 8: Nghiên cứu về nhận dạng giọng nói tiếng Việt và ứng dụng

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ố F0. 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.

Page 9: Nghiên cứu về nhận dạng giọng nói tiếng Việt và ứng dụng

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:

Page 10: Nghiên cứu về nhận dạng giọng nói tiếng Việt và ứng dụng

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

Page 11: Nghiên cứu về nhận dạng giọng nói tiếng Việt và ứng dụng

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/

Page 12: Nghiên cứu về nhận dạng giọng nói tiếng Việt và ứng dụng

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ê,

yê /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]

Page 13: Nghiên cứu về nhận dạng giọng nói tiếng Việt và ứng dụng

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

Page 14: Nghiên cứu về nhận dạng giọng nói tiếng Việt và ứng dụng

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

Page 15: Nghiên cứu về nhận dạng giọng nói tiếng Việt và ứng dụng

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

Page 16: Nghiên cứu về nhận dạng giọng nói tiếng Việt và ứng dụng

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

Page 17: Nghiên cứu về nhận dạng giọng nói tiếng Việt và ứng dụng

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

Page 18: Nghiên cứu về nhận dạng giọng nói tiếng Việt và ứng dụng

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,

Page 19: Nghiên cứu về nhận dạng giọng nói tiếng Việt và ứng dụng

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:

Page 20: Nghiên cứu về nhận dạng giọng nói tiếng Việt và ứng dụng

Trang | 20

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

(2.1)

Trong đó apre 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()()(' nsansns 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:

Em=

(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à

Page 21: Nghiên cứu về nhận dạng giọng nói tiếng Việt và ứng dụng

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 MN 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ứ là

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)

Page 22: Nghiên cứu về nhận dạng giọng nói tiếng Việt và ứng dụng

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, x0(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, x1(n), chứa các mẫu ~( )s M ,

~( )s M 1 ,...,

~( )s M N 1 ,và khung thứ L, xL-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 n N-1, thì kết quả chia

cửa sổ cho khung x(n):

10)()()(~ Nnnwnxnx 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

Page 23: Nghiên cứu về nhận dạng giọng nói tiếng Việt và ứng dụng

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

Page 24: Nghiên cứu về nhận dạng giọng nói tiếng Việt và ứng dụng

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 Xt(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)

Page 25: Nghiên cứu về nhận dạng giọng nói tiếng Việt và ứng dụng

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.

Page 26: Nghiên cứu về nhận dạng giọng nói tiếng Việt và ứng dụng

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ố Yt(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 Xt(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 đó: Mj 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.

Page 27: Nghiên cứu về nhận dạng giọng nói tiếng Việt và ứng dụng

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

Page 28: Nghiên cứu về nhận dạng giọng nói tiếng Việt và ứng dụng

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) a1s(n-1) + a2s(n-2) + ... + aps(n-p) (2.13)

Trong đó a1, a2, ..., an 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 nGuinsans1

)()()(

(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 zi

i

i

p

( ) ( ) ( )

1

(2.15)

dẫn đến hàm chuyển:

H zS z

GU za z

A zi

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)(

zAzH , tạo ra tín hiệu tiếng nói s(n).

Page 29: Nghiên cứu về nhận dạng giọng nói tiếng Việt và ứng dụng

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ố, {ak}. 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 nGuknsans1

)()()(

(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 )(ns ,

được định nghĩa là:

Page 30: Nghiên cứu về nhận dạng giọng nói tiếng Việt và ứng dụng

Trang | 30

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

s n a n kk

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 kk

k

p

( ) ( ) ( ) ( ) ( )

1

(2.19)

với hàm chuyển đổi lỗi:

A zE z

S za zk

k

k

p

( )( )

( )

11

(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,

{ak}, 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 pn

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

Page 31: Nghiên cứu về nhận dạng giọng nói tiếng Việt và ứng dụng

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 )(mr ):

E r( ) ( )0 0 (2.22)

k r i r i j E i pi j

i

j

Li

( ) (| |) ,( ) ( ) 1

1

11 1

(2.23)

i

i

ik( ) (2.24)

j

i

j

i

j i j

ik( ) ( ) ( )

1 1

(2.25)

E k Ei

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à

ma các hệ số LPC m

p m p( ) , 1 (2.27)

mk các hệ số PARCOR (2.28)

mg các hệ số truyền miền logarit

m

m

k

k

1

1log (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 ak

mc a m pm m k m k

k

m

1

1

1,

(2.30)

pmQacm

kc

m

k

kmkm

,1

1 (2.31)

Trong đó 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 đó pQ

2

3.

Page 32: Nghiên cứu về nhận dạng giọng nói tiếng Việt và ứng dụng

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)

Page 33: Nghiên cứu về nhận dạng giọng nói tiếng Việt và ứng dụng

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).

Page 34: Nghiên cứu về nhận dạng giọng nói tiếng Việt và ứng dụng

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ô

Page 35: Nghiên cứu về nhận dạng giọng nói tiếng Việt và ứng dụng

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 fN(x, µ, σ2) được cho

bởi công thức:

2

2

2

)(exp

2

1)(

xxp

(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 fN(x, µ, Σ) được

cho bởi công thức:

)()'(

2

1exp

)2(

1)( 1

2/12/

xxxp

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:

2exp

2

1)(

2xxp

(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.

Page 36: Nghiên cứu về nhận dạng giọng nói tiếng Việt và ứng dụng

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 độ p1, p2, …, pM, 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

iiGMM xpwxp1

)()(

(2.38)

trong đó, wi là trọng số của phân phối Gauss thứ i, thỏa ràng buộc 0≤ wi ≤1 và

M

i

iw1

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ố λ = { wi, µi, Σi }, i [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:

Page 37: Nghiên cứu về nhận dạng giọng nói tiếng Việt và ứng dụng

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 = {S1, S2, …, SN} Tập các trạng thái, gọi qt là trạng thái đạt đến được ở

thời điểm t.

A = { aij } Ma trận xác suất chuyển trạng thái, mỗi aij thể hiện xác

xuất di chuyển từ trạng thái Si sang trạng thái Sj,

NjiSqSqpa itjtij ,1,|1 , sao cho

N

j

ijij aa1

1,0

.

π= {πi} πi là xác suất khởi đầu của trạng thái Si – xác suất rơi

vào trạng thái Si ở thời điểm t = 1:

Page 38: Nghiên cứu về nhận dạng giọng nói tiếng Việt và ứng dụng

Trang | 38

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

NiSqp ii 1,1,

N

i

i

1

1

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 = {v1, v2, v3, v4}. Khả năng quan sát được sự

kiện vk trong trạng thái Sj phụ thuộc vào xác suất quan sát bj(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).

Page 39: Nghiên cứu về nhận dạng giọng nói tiếng Việt và ứng dụng

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 = {S1, S2, …, SN} Tập các trạng thái, qt là trạng thái đạt đến được ở thời

điểm t.

V = {v1, v2, …, vM} Tập các tín hiệu quan sát, gọi Ot là tín hiệu quan sát

được ở thời điểm t

A = { aij } Ma trận xác suất chuyển trạng thái, mỗi aij thể hiện xác

xuất di chuyển từ trạng thái Si sang trạng thái Sj,

NjiSqSqpa itjtij ,1,|1 , sao cho

N

j

ijij aa1

1,0

.

B = { bj(k) } Ma trận các hàm mật độ xác suất trong mỗi trạng thái,

MkNjSqtatvpkb jtkj 1,1,|)(

Thỏa ràng buộc

M

k

j kb1

1)(

π= {πi} πi là xác suất khởi đầu của trạng thái Si – xác suất rơi

vào trạng thái Si ở thời điểm t = 1:

NiSqp ii 1,1 ,

N

i

i

1

1

Để 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).

Page 40: Nghiên cứu về nhận dạng giọng nói tiếng Việt và ứng dụng

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 = O1 O2 … OT 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 = O1 O2 … OT 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 = q1 q2 … qT đã 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 = O1 O2 … OT. 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 O1, O2, ..., Ot với mô hình λ cho trước:

)|,...()( 21 ittt SqOOOpi

(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:

NiObi ii 1,)()( 11

(2.40)

2) Qui nạp:

NjTtObaij tj

N

i

ijtt

1,11,)()()( 1

1

1

(2.41)

3) Đầu ra:

Page 41: Nghiên cứu về nhận dạng giọng nói tiếng Việt và ứng dụng

Trang | 41

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

N

i

T iOp1

)()|(

(2.42)

Độ phức tạp tính toán của thuật toán forward là O(N2T).

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 Ot+1, Ot+2, ..., OT cho trước trạng

thái i ở thời điểm t và mô hình λ:

),|...()( 21 iqOOOpi tTttt (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:

NiiT 1,1)(

(2.44)

2) Qui nạp:

N

j

ttjijt jObai1

11 )()()( với 1...,,2,1 TTt và Ni 1 (2.45)

3) Đầu ra:

N

j

jOp1

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(N2T). 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 = q1 q2 … qT đã

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.

Page 42: Nghiên cứu về nhận dạng giọng nói tiếng Việt và ứng dụng

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 Si ở thời điểm t và đã quan sát được đoạn O1, O2, …, Ot cho trước mô

hình λ:

)|...,...(max)( 2121,...,, 121

titqqq

t OOOSqqqpit

(2.47)

δt(i) có thể được tính theo qui nạp:

)(])(max[)( 11 tjijti

t Obaij

(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

11

i

NiObi ii

(2.49)

2) Lặp qui nạp:

Nj

TtObaij tjijtNi

t

1

2,)(])([max)( 11

(2.50)

Nj

Ttaij ijtNi

t

1

2,])([maxarg)( 11

(2.51)

3) Kết thúc:

)]([maxarg*

)]([max*

1

1

iq

ip

TNi

T

TNi

(2.52)

4) quay lui – backtracking:

1,...,2,1,*)(* 11 TTtqq ttt

(2.53)

Kết thúc thuật toán, chuỗi **

2

*

1 ... TqqqQ 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.

Page 43: Nghiên cứu về nhận dạng giọng nói tiếng Việt và ứng dụng

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 Si tại thời điểm t và rơi

vào trạng thái Sj ở thời điểm t+1 cho trước mô hình λ và chuỗi tín hiệu quan sát O:

),|,(),( 1 OSqSqpji jtitt (2.54)

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

Suy ra:

)|(

)()()(

)|(

)|,,(),(

111

Op

jObai

Op

OSqSqpji

ttjijtjtit

t

(2.55)

Hình 2.21 Cách tính )|,,( 1 OSqSqp jtit

Gọi γt(i) là xác suất ở trạng thái Si vào thời điểm t cho trước chuỗi tín hiệu quan

sát O và mô hình λ:

),|()( OSqpi itt

(2.56)

Áp dụng xác suất Bayes, suy ra:

Page 44: Nghiên cứu về nhận dạng giọng nói tiếng Việt và ứng dụng

Trang | 44

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

)|(

)|,()(

Op

OSqpi it

t

(2.57)

Áp dụng xác suất forward và backward như trong Hình 2.22, suy ra:

)|(

)()()(

Op

iii tt

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 [1, T-1], kết quả nhận được là số lần kỳ vọng

chuyển trạng thái từ Si. Tương tự, lấy tổng ξt(i,j) theo t [1, T-1], ta sẽ có số lần kỳ

vọng chuyển từ trạng thái Si sang Sj:

1

1

)(T

t

t i số lần kỳ vọng chuyển trạng thái từ Si. (2.59)

1

1

),(T

t

t ji số lần kỳ vọng chuyển từ trạng thái Si sang Sj. (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 số lần kỳ vọng ở trạng thái Si vào thời điểm (t=1) = γ1(i) (2.61)

1

1

1

1

)(

),(

)(

),(T

t

t

T

t

t

i

ji

ij

i

ji

Sexnum

SSexnuma

(2.62)

Page 45: Nghiên cứu về nhận dạng giọng nói tiếng Việt và ứng dụng

Trang | 45

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

T

t

t

vOts

T

t

t

j

kj

j

j

j

Sinexnum

vSinexnumkb kt

1

..1

)(

)(

)(_

),(_)(

(2.63)

exnum(Si,Sj): số lần kỳ vọng chuyển từ trạng thái Si sang trạng thái Sj.

exnum(Si): số lần kỳ vọng chuyển trạng thái từ Si.

exnum_in(Sj,vk): số lần kỳ vọng ở trạng thái Sj và quan sát được tín hiệu vk.

exnum_in(Sj): số lần kỳ vọng ở trạng thái Sj.

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 ),,( BA . Theo Baum đã chứng minh, ta luôn có )|()|( OpOp 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).

Page 46: Nghiên cứu về nhận dạng giọng nói tiếng Việt và ứng dụng

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 Ot được cho bởi mô hình GMM:

)()( tGMMtj OpObj

(2.64)

trong đó jGMMp chính là xác suất đầu ra của mô hình GMM trong trạng thái Sj.

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 = { aij }, aij là xác suất chuyển từ trạng thái Si sang trạng thái Sj.

π = { πi }, πi là xác suất khởi đầu của trạng thái Si.

B = { bj }, bj là hàm mật độ xác suất trong trạng thái Sj.

aij và πi thì không có gì thay đổi so với HMM, điểm khác biệt chính nằm ở bj. Từ

(2.38) ta có:

Page 47: Nghiên cứu về nhận dạng giọng nói tiếng Việt và ứng dụng

Trang | 47

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

jmjmt

M

m

jmtj UOGcOb ,,)(1

(2.65)

trong đó trạng thái thứ j [1, N], Ot là vector quan sát được ở thời điểm t,

G(μjm, Ujm) là hàm mật độ Gauss thứ m trong trạng thái Sj 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), cjm là trọng số (không âm) của phân phối Gauss thứ m trong trạng thái Sj

thỏa ràng buộc xác suất 11

M

m

jmc .

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 ii (2.66)

1

1

1

1

)(

),(

T

t

t

T

t

t

ij

i

ji

a

(2.67)

Tuy nhiên đối với B = { bj }, bj gồm 3 tham số con { cjm, μjm, Ujm }, 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 Ot bởi phân phối Gauss thứ k trong trạng thái Sj tại thời điểm t cho trước

chuỗi vector quan sát O và mô hình λ:

M

m

jmjmtjm

jkjktjk

N

j

tt

ttt

UOGc

UOGc

jj

jjkj

11

),,(

),,(

)()(

)()(),(

(2.68)

trong đó, α t(j), βt(j) là các biến forward-backward, cjk, μjk và Ujk lần lượt là

trọng số (weight), vector trung bình (mean vector) và ma trận hiệp phương sai

Page 48: Nghiên cứu về nhận dạng giọng nói tiếng Việt và ứng dụng

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 Sj. 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 bj như sau:

T

t

M

k

t

T

t

t

jk

kj

kj

c

1 1

1

),(

),(

(2.69)

T

t

t

T

t

tt

jk

kj

Okj

1

1

),(

),(

(2.70)

T

t

t

T

t

jktjktt

jk

kj

OOkj

U

1

1

),(

)')((),(

(2.71)

Giải thuật huấn luyện:

- Input: chuỗi các vector đặc trưng O = { O1, O2, …, OT },

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) = πibi(O1)

for t = 1 → T-1

for j = 1 → N

)()()( 1

1

1

tj

N

i

ijtt Obaij

// Tính các biến backward β

Page 49: Nghiên cứu về nhận dạng giọng nói tiếng Việt và ứng dụng

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

ttjijt jObai1

11 )()()(

// 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.

Page 50: Nghiên cứu về nhận dạng giọng nói tiếng Việt và ứng dụng

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.

Page 51: Nghiên cứu về nhận dạng giọng nói tiếng Việt và ứng dụng

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.

Page 52: Nghiên cứu về nhận dạng giọng nói tiếng Việt và ứng dụng

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.

Page 53: Nghiên cứu về nhận dạng giọng nói tiếng Việt và ứng dụng

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).

Page 54: Nghiên cứu về nhận dạng giọng nói tiếng Việt và ứng dụng

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

Page 55: Nghiên cứu về nhận dạng giọng nói tiếng Việt và ứng dụ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.

Page 56: Nghiên cứu về nhận dạng giọng nói tiếng Việt và ứng dụng

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.

Page 57: Nghiên cứu về nhận dạng giọng nói tiếng Việt và ứng dụ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.

Page 58: Nghiên cứu về nhận dạng giọng nói tiếng Việt và ứng 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

Page 59: Nghiên cứu về nhận dạng giọng nói tiếng Việt và ứng dụng

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.

Page 60: Nghiên cứu về nhận dạng giọng nói tiếng Việt và ứng dụng

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ữ

Page 61: Nghiên cứu về nhận dạng giọng nói tiếng Việt và ứng dụ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

Page 62: Nghiên cứu về nhận dạng giọng nói tiếng Việt và ứng dụng

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ố.

Page 63: Nghiên cứu về nhận dạng giọng nói tiếng Việt và ứng dụng

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

Page 64: Nghiên cứu về nhận dạng giọng nói tiếng Việt và ứng dụng

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].

Page 65: Nghiên cứu về nhận dạng giọng nói tiếng Việt và ứng dụng

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

Page 66: Nghiên cứu về nhận dạng giọng nói tiếng Việt và ứng dụng

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

Page 67: Nghiên cứu về nhận dạng giọng nói tiếng Việt và ứng dụng

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

Page 68: Nghiên cứu về nhận dạng giọng nói tiếng Việt và ứng dụng

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,

Page 69: Nghiên cứu về nhận dạng giọng nói tiếng Việt và ứng dụng

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

Page 70: Nghiên cứu về nhận dạng giọng nói tiếng Việt và ứng dụng

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;

Page 71: Nghiên cứu về nhận dạng giọng nói tiếng Việt và ứng dụng

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].

Page 72: Nghiên cứu về nhận dạng giọng nói tiếng Việt và ứng dụng

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.

Page 73: Nghiên cứu về nhận dạng giọng nói tiếng Việt và ứng dụng

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

Page 74: Nghiên cứu về nhận dạng giọng nói tiếng Việt và ứng dụng

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

Page 75: Nghiên cứu về nhận dạng giọng nói tiếng Việt và ứng dụng

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

Page 76: Nghiên cứu về nhận dạng giọng nói tiếng Việt và ứng dụng

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.

Page 77: Nghiên cứu về nhận dạng giọng nói tiếng Việt và ứng dụng

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

Page 78: Nghiên cứu về nhận dạng giọng nói tiếng Việt và ứng dụng

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

Page 79: Nghiên cứu về nhận dạng giọng nói tiếng Việt và ứng dụng

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.

Page 80: Nghiên cứu về nhận dạng giọng nói tiếng Việt và ứng dụ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).

Page 81: Nghiên cứu về nhận dạng giọng nói tiếng Việt và ứng dụng

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

Page 82: Nghiên cứu về nhận dạng giọng nói tiếng Việt và ứng dụng

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

Page 83: Nghiên cứu về nhận dạng giọng nói tiếng Việt và ứng dụng

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

Page 84: Nghiên cứu về nhận dạng giọng nói tiếng Việt và ứng dụng

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

Page 85: Nghiên cứu về nhận dạng giọng nói tiếng Việt và ứng dụng

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.

Page 86: Nghiên cứu về nhận dạng giọng nói tiếng Việt và ứng dụng

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.

Page 87: Nghiên cứu về nhận dạng giọng nói tiếng Việt và ứng dụng

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

Page 88: Nghiên cứu về nhận dạng giọng nói tiếng Việt và ứng 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

Page 89: Nghiên cứu về nhận dạng giọng nói tiếng Việt và ứng dụng

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

Page 90: Nghiên cứu về nhận dạng giọng nói tiếng Việt và ứng dụng

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

Page 91: Nghiên cứu về nhận dạng giọng nói tiếng Việt và ứng dụng

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

Page 92: Nghiên cứu về nhận dạng giọng nói tiếng Việt và ứng dụng

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.

Page 93: Nghiên cứu về nhận dạng giọng nói tiếng Việt và ứng dụ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ữ

Page 94: Nghiên cứu về nhận dạng giọng nói tiếng Việt và ứng dụ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ỉ

Page 95: Nghiên cứu về nhận dạng giọng nói tiếng Việt và ứng dụng

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.

Page 96: Nghiên cứu về nhận dạng giọng nói tiếng Việt và ứng dụng

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

Page 97: Nghiên cứu về nhận dạng giọng nói tiếng Việt và ứng dụng

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.

Page 98: Nghiên cứu về nhận dạng giọng nói tiếng Việt và ứng dụng

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].

Page 99: Nghiên cứu về nhận dạng giọng nói tiếng Việt và ứng dụng

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.