TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN KHOA CÔNG NGHỆ THÔNG TIN BỘ MÔN CÔNG NGHỆ TRI THỨC NGUYỄN HỒNG QUANG - 0012081

NHẬN DẠNG TIẾNG NÓI TIẾNG VIỆT

TÌM HIỂU VÀ ỨNG DỤNG

LUẬN VĂN CỬ NHÂN TIN HỌC

GIÁO VIÊN HƯỚNG DẪN

Th.s BÙI TIẾN LÊN

NIÊN KHÓA 2000 – 2004

Lời cảm ơn

Hoàn thành luận văn này có sự đóng góp rất lớn của thầy

Bùi Tiến Lên, thầy đã hướng dẫn tạo điều kiện cho em trong quá

trình thực hiện nghiên cứu nhận dạng tiếng nói, em xin chân thành

cảm ơn thầy.

Em xin gởi lời cảm ơn đến các thầy cô trong trường, đặc

biệt là các thầy cô bộ môn Công Nghệ Tri Thức đă tạo ra một môi

trường thật hoàn hảo cho chúng em học tập và nghiên cứu khoa

học.

Em cũng không thể không nhắc đến sự động viên chăm sóc

của gia đình, sự cộng tác giúp đỡ và ủng hộ tinh thần của bạn bè.

Em xin được tri ơn tất cả.

TP. Hồ Chí Minh, tháng 7 năm 2004.

Nguyễn Hồng Quang

1

MỤC LỤC

1.2.1 1.2.2

1.2.3 1.2.4

2.1.1 2.1.2 2.1.3

2.2.1

2.2.2

DANH SÁCH HÌNH VẼ...........................................................................................4 M Ở Đ Ầ U .................................................................................................................6 Chương 1 TỔNG QUAN .........................................................................................8 1.1 Nhận dạng.....................................................................................................8 1.2 Nhận dạng tiếng nói .....................................................................................9 Xử lý âm thanh......................................................................................9 Phân loại nhận dạng tiếng nói.............................................................10 1.2.2.1 Nhận dạng từ liên tục và nhận dạng từ cách biệt ............................10 1.2.2.2 Nhận dạng phụ thuộc người nói và độc lập người nói....................11 Hệ thống nhận dạng tiếng nói tự động................................................13 Lý thuyết nhận dạng tiếng nói ............................................................14 1.2.4.1 Rút trích vector đặc trưng................................................................15 1.2.4.2 Phân lớp...........................................................................................17 Chương 2 XỬ LÝ TIẾNG NÓI RÚT TRÍCH VECTOR ĐẶC TRƯNG .........21 2.1 Xử lý tiếng nói............................................................................................21 Lấy mẫu tín hiệu .................................................................................21 Bộ lọc tín hiệu.....................................................................................22 Dò tìm điểm cuối (end-point detection)..............................................24 2.2 Rút trích đặc trưng......................................................................................26 Các bước rút trích đặc trưng ...............................................................27 2.2.1.1 Làm rõ tín hiệu ................................................................................27 2.2.1.2 Phân đoạn thành các khung.............................................................27 2.2.1.3 Lấy cửa sổ .......................................................................................28 Các dạng đặc trưng tiếng nói ..............................................................33 2.2.2.1 Biến đổi tín hiệu sang miền tần số ..................................................33 2.2.2.2 Đặc trưng năng lượng......................................................................35 2.2.2.3 Đặc trưng MFCC.............................................................................36 2.2.2.4 Đặc trưng LPC ................................................................................39 2.2.2.5 Đặc trưng tần số cơ bản..................................................................42 Chương 3 MÔ HÌNH MARKOV ẨN ..................................................................49 3.1 Mô hình Markov ẩn....................................................................................49 3.2 Ứng dụng Mô hình Markov vào nhận dạng tiếng nói ................................51 Thuật toán tiến ....................................................................................52 3.2.1 Thuật toán lùi ......................................................................................53 3.2.2 Phương pháp tìm chuỗi trạng thái tối ưu ............................................54 3.2.3 3.2.4 Thuật toán Viterbi ...............................................................................55 3.2.5 Ước lượng Baum-Welch.....................................................................58 3.3 Cấu trúc ngôn ngữ và mô hình nhận dạng theo âm vị................................60 3.3.1 Cấu trúc ngôn ngữ...............................................................................60 3.3.2 Mô hình âm vị .....................................................................................63 Tha âm vị (allophones) .......................................................................63 3.3.3

2

3.3.4

4.1.1 4.1.2 4.1.3 4.1.4

5.1

5.1.1

5.1.2

Nhận xét ..............................................................................................65 Chương 4 HMM TOOLKIT .................................................................................67 4.1 Cấu trúc tập tin trong HTK ........................................................................69 Cấu trúc tập tin vector đặc trưng HTK ...............................................69 Cấu trúc tập tin mô hình HMM ..........................................................71 Cấu trúc tập tin đánh nhãn dữ liệu ......................................................75 Cấu trúc tập tin văn phạm ...................................................................78 4.2 Nhận dạng nguyên từ .................................................................................81 4.3 Nhận dạng theo mô hình âm vị ..................................................................85 Chương 5 ỨNG DỤNG: ĐIỀU KHIỂN XE TỰ ĐỘNG BẰNG TIẾNG NÓI .88 Thử nghiệm nhận dạng tiếng nói Tiếng Việt .............................................89 Nhận dạng tĩnh (offline)......................................................................89 5.1.1.1 Dùng vector đặc trưng dạng LPCEPSTRA_E_D ...........................89 5.1.1.2 Dùng vector đặc trưng dạng LPCEPSTRA_E_D_A ......................89 5.1.1.3 Dùng vector đặc trưng dạng MFCC_0_D .......................................89 5.1.1.4 Dùng vector đặc trưng dạng MFCC_0_D_A ..................................90 5.1.1.5 Dùng vector đặc trưng dạng MFCC_0_D_A_Z..............................90 Nhận dạng thời gian thực (online) ......................................................91 5.1.2.1 Nhận dạng theo mô hình âm vị dùng MFCC_0_D_A_Z................91 5.1.2.2 Nhận dạng nguyên từ dùng MFCC_0_D_A_Z...............................92 5.2 Ứng dụng nhận dạng tiếng nói ...................................................................93 KẾT LUẬN ..............................................................................................................96 TÀI LIỆU THAM KHẢO ......................................................................................98 Phụ lục MỘT SỐ CÔNG CỤ TRONG HTK ..................................................99

3

DANH SÁCH HÌNH VẼ

Hình 1.1: Sơ đồ nhận dạng tổng quát .........................................................................8 Hình 1.2: Các lĩnh vực trong xử lý tiếng nói ............................................................10 Hình 1.3: Ranh giới giữa “cô” và “ấy” không rõ ràng ...........................................11 Hình 1.4: Người nói khác nhau sẽ phát âm khác nhau.............................................12 Hình 1.5: Mô hình nhận dạng bán độc lập người nói ..............................................13 Hình 1.6: Các thành phần cơ bản của hệ thống ASR ...............................................14 Hình 1.7: Các dạng cửa sổ thường dùng ..................................................................16 Hình 1.8: Tổng quát quá trình rút trích vector đặc trưng ........................................17 Hình 1.9: Các kỹ thuật nhận dạng tiếng nói và xu hướng phát triển .......................18 Hình 1.10: HMM với 3 trạng thái và trọng số chuyển trạng thái.............................20 Hình 2.1: Ví dụ về lấy mẫu tín hiệu f(t) trên miền thời gian....................................22 Hình 2.2: Minh họa hoạt động bộ lọc FIR................................................................23 Hình 2.3: Minh họa hoạt động bộ lọc IIR.................................................................23 Hình 2.4: Dò tìm điểm cuối dựa vào mức năng lượng .............................................25 Hình 2.5: Sơ đồ rút trích vector đặc trưng tổng quát ...............................................26 Hình 2.6: Sơ đồ rút trích đặc trưng chi tiết ..............................................................27 Hình 2.7: Phân đoạn tiếng nói thành các khung chồng lấp .....................................28 Hình 2.8: Sự khác biệt giữa các dạng cửa sổ tín hiệu ..............................................32 Hình 2.9: Đồ thị biểu diễn mối quan hệ giữa Mel và Hz..........................................36 Hình 2.10: Các bước trích đặc trưng MFCC ...........................................................37 Hình 2.11: Bộ lọc trên thang Mel .............................................................................37 Hình 2.12: Bộ lọc trên tần số thật.............................................................................38 Hình 2.13: Minh họa các bước biến đổi MFCC .......................................................38 Hình 2.14: Sơ đồ xử lý LPC dùng cho trích đặc trưng tiếng nói.............................40 Hình 2.15: Hình dạng tín hiệu tiếng nói ...................................................................47 Hình 2.16: Kết quả trích F0......................................................................................48 Hình 2.17: Kết quả sau khi lọc Median ....................................................................48 Hình 3.1: Minh họa hoạt động của mô hình Markov ẩn...........................................49 Hình 3.2: Mô hình Left - Right..................................................................................51 Hình 3.3: Mô hình Bakis ...........................................................................................51 Hình 3.4: Mô hình Tuyến tính ...................................................................................51 Hình 3.5:Minh họa thuật toán tiến............................................................................53 Hình 3.6:Minh họa thuật toán lùi .............................................................................53 Hình 3.7: Ví dụ minh họa thuật toán Viterbi ............................................................56 Hình 3.8:Ví dụ minh họa thuật toán Viterbi (tt) .......................................................57 Hình 3.9: Ví dụ minh họa so khớp dùng thuật toán tiến-lùi .....................................58 Hình 3.10: Minh họa ước lượng Baum - Welch........................................................59 Hình 3.11: Minh họa việc nhận dạng âm vị trong HMM .........................................60 Hình 4.1: Mô hình đơn giản trong nhận dạng tiếng nói...........................................67 Hình 4.2: Các module và chức năng trong HTK ......................................................68

4

Hình 4.3: Các công cụ và chức năng trong HTK .....................................................69 Hình 4.4: Phân bố các tham số trong 1 số vector đặc trưng của HTK ....................71 Hình 4.5: Các dạng đặc trưng có thể chuyển đổi qua lại bằng HCopy ...................71 Hình 4.6: Dạng cơ bản của 1 tập tin HMM (chưa được khởi tạo)...........................72 Hình 4.7: Dạng cơ bản của 1 tập tin HMM có sử dụng pha trộn Gaussian ............74 Hình 4.8: Dạng cơ bản của 1 tập tin HMM có sử dụng đa luồng ............................75 Hình 4.9: Vai trò của văn phạm trong nhận dạng dùng HTK ..................................78 Hình 4.10: Lược đồ văn phạm ..................................................................................79 Hình 4.11: Mô hình minh họa các văn phạm............................................................80 Hình 4.12: Minh họa việc nhận dạng nguyên từ.......................................................81 Hình 4.13: Huấn luyện nguyên từ và các công cụ hỗ trợ .........................................82 Hình 4.14: Quy trình hoạt động của HInit................................................................83 Hình 4.15: Quy trình hoạt động của HCompV .........................................................83 Hình 4.16: Quy trình hoạt động của HRest ..............................................................84 Hình 4.17: Huấn luyện theo mô hình âm vị dùng HTK ............................................85 Hình 4.18: Quá trình xử lý các tập tin trong HERest ...............................................87 Hình 5.1: Mô hình ngôn ngữ dành cho hệ nhận dạng ..............................................88

5

MỞ Đ Ầ U

Tiếng nói là phương tiện giao tiếp cơ bản nhất của loài người, nó hình thành và phát triển song song với quá trình tiến hóa của loài người. Đối với con người, sử dụng lời nói là một cách diễn đạt đơn giản và hiệu quả nhất. Ưu điểm của việc giao tiếp bằng tiếng nói trước tiên là ở tốc độ giao tiếp, tiếng nói từ người nói được người nghe hiểu ngay lập tức sau khi được phát ra. Bên cạnh đó, tiếng nói là cách giao tiếp được sử dụng rộng rãi nhất – bất cứ ai (dĩ nhiên là trừ những người khuyết tật) cũng có thể nói được.

Ngày nay, nhờ sự phát triển của khoa học kỹ thuật, máy móc dần dần thay

thế các lao động tay chân. Tuy nhiên để điều khiển máy móc, con người phải làm

khá nhiều thao tác tốn nhiều thời gian và cần phải được đào tạo. Điều này gây trở

ngại không ít đối với việc sử dụng các máy móc, thành tựu khoa học kỹ thuật.

Trong khi đó, nếu điều khiển máy móc thiết bị bằng tiếng nói sẽ dễ dàng hơn. Nhu

cầu điều khiển máy móc thiết bị bằng tiếng nói càng bức thiết hơn đối với các thiết

bị cầm tay, như: điện thoại di động, máy Palm/Pocket PC,…

Để cho máy tính có thể nghe được nhiều người đã vật lộn với tín hiệu âm thanh trong hơn nửa thế kỷ qua trong lĩnh vực nhận dạng tiếng nói. Quá trình này được đánh dấu bằng các kết quả nghiên cứu đặc sắc trong lĩnh vực phân tích và xử lý tiếng nói, các ứng dụng thực tế khá hữu ích. Nhưng dù sao, khả năng của máy vẫn vẫn còn trong khoảng giới hạn, còn cần phát triển hơn nữa để có thể thật sự đáp ứng nhu cầu thực sự của cuộc sống. Mặt khác, nhận dạng tiếng nói chỉ đang được phát triển trên các thứ tiếng khác, nhưng chưa được phát triển và ứng dụng mạnh ở nước ta. Do tình hình phát triển ở Việt Nam, để cho công cuộc nhận dạng tiếng nói thật sự được quan tâm, đầu tư và tạo thành các nhóm các phòng thí nghiệm chuyên nghiên cứu về nhận dạng tiếng nói thì thật sự gặp khó khăn.

Luận văn này xây dựng với mong muốn góp phần thúc đẩy quá trình trên, bằng cách kế thừa các đàn anh đàn chị đi trước, và thông qua việc tìm hiểu các thành tựu nước ngoài em mong rằng mình sẽ góp phần tạo nên những bước phát triển trong lĩnh vực nhận dạng tiếng nói ở nước ta. Qua quá trình nghiên cứu, em

6

nhận thấy rằng nếu như chúng ta có sự phổ biến kiến thức rộng rãi, không chỉ cho những người chuyên về lĩnh vực công nghệ thông tin, mà còn cho những người không chuyên thì chúng ta hoàn toàn có thể thúc đẩy, phát triển và gặt hái nhiều thành công hơn. Vì lúc đó vấn đề không chỉ được nghiên cứu, phát triển bởi một số người mà là của nhiều người. Những lĩnh vực nghiên cứu khác cưng có thể làm tương tự.

Vì lý do trên mà em không chỉ tìm tòi nghiên cứu lý thuyết, mà còn cố gắng

phát triển thành ứng dụng.

7

Chương 1 TỔNG QUAN

1.1 Nhận dạng

Nhận dạng của loài người là một quá trình hoàn hảo, đó là sự quan sát đối

tượng cần nhận dạng, ghi nhận lại những đặc trưng của đối tượng, phân lớp đối

tượng và có sử dụng khả năng phán đoán suy luận để phân biệt đối tượng đó với đối

tượng khác (trong một tập gần như vô hạn đối tượng).

Trong khi đó, nhận dạng tự động – nhận dạng bằng công cụ máy vi tính chỉ

đơn giản là quá trình phân biệt tín hiệu này với tín hiệu khác (trong một tập hữu hạn

các tín hiệu), quá trình này được thực hiện bằng cách thực hiện các bước tổng quát

sau (như trong hình 1.1).

Tín hiệu

Tiền xử lý và rút trích vector đặc trưng

Tín hiệu cần nhận dạng

Tín hiệu dùng để học

Học mẫu, phân lớp

Nhận dạng, so khớp mẫu

Ngưỡng và luật quyết định

Kết quả

Tập hợp từ điển các lớp tín hiệu

Hình 1.1: Sơ đồ nhận dạng tổng quát

• Thu nhận tín hiệu và trích đặc trưng: thu nhận tín hiệu cần nhận dạng,

khử nhiễu lọc tín hiệu (tiền xử lý) và rút ra các đặc trưng của tín hiệu

(vector đặc trưng).

• Học mẫu: kết nhóm, phân lớp các nhóm vector đặc trưng của từng

nhóm tín hiệu (bằng các thuật giải Heristic, bằng cách sử dụng mạng

Neural, bằng các siêu phẳng dùng thuật toán K-means, Batchelor-

8

Wilkins, ……). Quá trình này tạo ra các lớp tín hiệu, mỗi lớp này đặc

trưng cho từng nhóm tín hiệu.

• Nhận dạng, so khớp mẫu: tìm mối liên hệ giữa tín hiệu cần nhận dạng

và các lớp tín hiệu được tạo ra ở bước trước (bằng cách thông qua quy

tắc người láng giềng gần nhất chẳng hạn). Nếu như tín hiệu đó so

khớp nhất (và mức độ so khớp thỏa một ngưỡng nào đó) ứng với một

lớp tín hiệu nào đó thì hệ thống nhận dạng xác định tín hiệu đó thì tín

hiệu đó thuộc vào nhóm tín hiệu đó với một tỉ lệ nhất định gọi là độ

chính xác của hệ thống nhận dạng (tỉ lệ này dĩ nhiên là càng cao càng

tốt).

1.2 Nhận dạng tiếng nói

1.2.1 Xử lý âm thanh

Khi âm thanh được máy vi tính hỗ trợ thì nhu cầu xử lý âm thanh đã

xuất hiện. Các nhu cầu này đã tạo ra nhiều lĩnh vực ứng dụng trong thực tế.

Chẳng hạn như: Tổng hợp âm thanh (Synthesis), nén âm thanh (Compression),

nhận dạng người nói (speaker recognition), nhận dạng tiếng nói (speech

recognition)… Các lĩnh vực ứng dụng khác nhau của xử lý tiếng nói được thể

hiện qua hình 1.2.

Xử lý âm thanh đóng một vai trò quan trọng trong quá trình nhận dạng

tiếng nói, nó cần trong việc lọc nhiễu tín hiệu, biến đổi tín hiệu, rút trích vector

đặc trưng,…

9

Hình 1.2: Các lĩnh vực trong xử lý tiếng nói

1.2.2 Phân loại nhận dạng tiếng nói

1.2.2.1 Nhận dạng từ liên tục và nhận dạng từ cá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

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

10

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.

Hình 1.3: Ranh giới giữa “cô” và “ấy” không rõ ràng

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

11

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 hệ thống). Điều này đã được

Microsoft đưa vào bộ phần mềm Office của mình.

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 đó.

Hình 1.4: Người nói khác nhau sẽ phát âm khác nhau

12

Hình 1.5: Mô hình nhận dạng bán độc lập người nói

1.2.3 Hệ thống nhận dạng tiếng nói tự động

Nhận dạng tiếng nói tự động (Automatic Speech Recognition - ASR):

có nghĩa là chuyển đổi tự động tiếng nói thành chữ viết hoặc thành một trong

các chức năng của thiết bị.

Một hệ thống nhận dạng tiếng nói tự động gồm có các thành phần sau:

• Rút trích đặc trưng tiếng nói: biến đổi tín hiệu âm thanh thành

chuỗi các vector đặc trưng. Ngoài ra, quá trình này còn giải quyết

vấn đề dò tìm điểm cuối (phân biệt trong chuỗi âm thu được đâu là

tiếng nói đâu là độ ồn nền) và lọc nhiễu.

• Quá trình phân lớp và nhận dạng: Thực chất đây là quá trình

nhận dạng dựa trên mô hình âm thanh, từ điển phát âm và mô hình

ngôn ngữ của hệ thống. Mô hình ngôn ngữ ở đây thực chất chỉ biểu

diển một ngữ pháp nào đó, nó có thể ứng với một ngôn ngữ cụ thể

hoặc đơn giản chỉ gói gọn trong phạm vi ứng dụng của hệ thống,

13

điều này góp phần giảm thiểu phạm vi nhận dạng của tiếng đó trong

một vài từ chứ không phải toàn bộ từ vựng.

• Giải mã: Quá trình này quá trình này có thể chỉ đơn giản là xuất ra

chuỗi văn bản nhận dạng được hoặc là một quá trình phân tích

chuỗi nhận được ứng với tác vụ gì và thực hiện tác vụ đó.

Hình 1.6: Các thành phần cơ bản của hệ thống ASR

Ứng dụng:

• Điều khiển bằng tiếng nói (khoảng 30 từ): Nhận dạng tên người,

chữ số của hệ thống quay số bằng giọng nói trên điện thoại di động,

điều khiển thiết bị điện tử,…

• Trong điện tử viễn thông (khoảng 2000 từ): Tự động điền mẫu đơn

trong hệ thống xử lý thông tin, tổng đài điện thoại, …

• Từ điển (khoảng 64k từ): Chuyển đổi thư thoại (bộ từ vựng lớn),

thư ký điện tử,…

1.2.4 Lý thuyết nhận dạng tiếng nói

Nhận dạng tiếng nói là kỹ thuật nhận ra các thành phần lời nói của con

người. Tiến trình này có thể được thực hiện từ việc thu vào tín hiệu tiếng nói

từ micro, và kết thúc bằng từ đã được nhận dạng được hệ thống xuất ra. Những

bước của quá trình trên sẽ được đề cập ở phần sau.

Việc nghiên cứu nhận dạng tiếng nói đã được bắt đầu từ cuối thập niên

40, trong đó sự phát triển nhanh chóng của công nghệ máy tính đã đóng góp

14

một rất quan trọng. Ngày nay, nhờ sự phát triển tăng vọt trong công nghệ,

nhận dạng tiếng nói đã có mặt trong công nghiệp ở một số lĩnh vực. Trong

công nghiệp, khi tay và mắt của con người đã được tận dụng triệt để, thì việc

điều khiển bằng tiếng nói có một thuận lợi rất lớn. Những trình ứng dụng khác

thì áp dụng nhận dạng tiếng nói vào hệ thống nhận đặt phòng tự động qua điện

thoại, bằng cách này khách hàng cảm thấy thuận lợi hơn so với việc nhấn các

nút của điện thoại. Hơn nữa, nhận dạng tiếng nói còn được ứng dụng nhiều

dạng khác nhau như hệ thống chính tả, các đồ chơi trẻ em, trò chơi game,…

Một cách lý tưởng, một trình nhận dạng sẽ có thể nhận dạng được các

từ khác nhau của bất kỳ người nào trong bất kỳ môi trường nào. Nhưng trong

thực tế, khả năng của hệ thống phụ thuộc vào nhiều yếu tố khác nhau. Bộ từ

vựng, đa người dùng, nhận dạng liên tục (phức tạp hơn nhiều so với nhận dạng

từng từ) là các yếu tố gây khó khăn, phức tạp cho việc nhận dạng tiếng nói.

Tương tự như vậy đối với độ ồn nền.

1.2.4.1 Rút trích vector đặc trưng

Ngày nay, việc xử lý tín hiệu tiếng nói được thực hiện trên miền

số. Tín hiệu số được thu bằng cách lấy mẫu theo một tần số nhất định, đó

là việc đo tín hiệu theo một chu kỳ thời gian. Theo lý thuyết, bất cứ một

tín hiệu có băng tần giới hạn nào cũng có thể tái tạo lại một cách hoàn

chỉnh nếu như tần số lấy mẫu FS ít nhất là gấp đôi tần số tối đa của tín

hiệu (theo Alan và Willsky, 1997). Chất lượng của tín hiệu được lấy mẫu

còn phụ thuộc vào biên độ lấy mẫu – phụ thuộc vào số bit được dùng.

Đối với những ứng dụng ASR, biểu diễn tín hiệu ở miền tần số thì

tối ưu hơn – một biểu diễn gọn hơn hữu dụng hơn là cần thiết. Rút trích

vector đặc trưng là việc xử lý biến đổi tín hiệu âm thanh thành một chuỗi

những vector đặc trưng. Có một vài dạng đặc trưng của tín hiệu âm thanh

có thể được sử dụng làm vector đặc trưng, chẳng hạn như là MFCC (Mel

Frequency Cepstral Coeficient), LPC

(Linear Prediction Filter

Coefficient),…

15

Để tham số hóa dạng sóng của tín hiệu, tín hiệu được chia thành

chuỗi các khung gối lên nhau theo thời gian, mỗi khung thường dài

khoảng 25ms, khoảng thời gian thích hợp để cho việc xử lý tĩnh hơn

(hình 1.8).

Để khử nhiễu và làm rõ tín hiệu, các khung trước khi được xử lý

được nhân với hàm cửa sổ, thường dùng là cửa sổ Hamming hay

Hanning. Sau khi áp hàm cửa sổ cạnh của khung sẽ trở nên mịn hơn, mặt

khác nó còn giúp cho thành phần có tần số cao của tín hiệu xuất hiện

trong phổ.

Hình 1.7: Các dạng cửa sổ thường dùng

16

Hình 1.8: Tổng quát quá trình rút trích vector đặc trưng

1.2.4.2 Phân lớp

Sau việc biến đổi tiếng nói thành vector đặc trưng là việc nhận ra

cái gì thực sự được nói ra. Có một vài cách tiếp cận vấn đề này, như là:

hướng cơ sở tri thức, hướng so khớp mẫu,… những phương pháp này có

thể được kết hợp với nhau.

17

Hình 1.9: Các kỹ thuật nhận dạng tiếng nói và xu hướng phát triển

a) Kỹ thuật so khớp mẫu

Một hệ thống so khớp mẫu dựa trên ý tưởng là sự so khớp lời

nói với một số tập mẫu được lưu trữ, chẳng hạn như các đoạn âm

thanh mẫu. Thường mỗi mẫu phù hợp với một từ trong từ điển. Người

phân lớp sẽ tính toán sự khác nhau về âm thanh giữa lời nói thu vào và

từng mẫu đã được lưu trữ. Sau đó, anh ta sẽ chọn mẫu nào so khớp

nhất với dữ liệu nhập.

Đối với chương trình, một thuật toán cần được sử dụng để tìm

ra sự so khớp không tuyến tính giữa tỷ lệ thời gian giữa hai tín hiệu,

nó dùng để bù đắp sự chênh lệch do sự khác biệt tốc độ nói gây ra.

Kỹ thuật so khớp mẫu được sử dụng rộng rãi trong sản xuất

thương mại vào các thập niên 70 và 80, nhưng sau đó ngày càng được

thay thế bởi các phương pháp mạnh hơn (Holmes, 2001).

b) Mạng Neural

18

Mạng Neural là một mô hình cố gắng mô phỏng hệ thống

nơron thần kinh của con người. Một mạng neural bao gồm một số

lượng các nút. Những nút này được sắp xếp thành từng lớp kết nối lẫn

nhau bằng trọng số khác nhau. Thông tin được đưa qua lớp vào, được

xử lý qua mạng, sau đó được xuất ra ngoài thông qua lớp ra. Kết quả

trả về của mỗi nút được tính bằng hàm không tuyến tính các trọng số

của các giá trị vào.

Mạng có khả năng phân loại chính xác phụ thuộc vào trọng số

và các giá trị tối ưu được xác định trong quá trình huấn luyện. Khi

huấn luyện, thông tin một vài mẫu âm thanh, ví dụ như phổ biên độ,

được đưa vào mạng thông qua các nút nhập, các giá trị kết xuất được

so sánh với giá trị được yêu cầu. Sự sai khác giữa các giá trị sẽ làm

thay đổi các trọng số. Quá trình này được lập đi lập lại vài lần cho mỗi

mẫu học, làm tăng độ chính xác của mạng.

Mặc dù là một kỹ thuật thú vị và đầy hứa hẹn, nhưng mạng

Neural chưa thật sự thành công trong một hệ nhận dạng tiếng nói liên

tục hoàn chỉnh.

c) Hướng dựa trên tri thức

Hệ thống dựa trên tri thức sử dụng tri thức để phân biệt sự khác

nhau giữa các âm thanh. Vào khoảng thập niên 70 và 80, nó thích hợp

trong việc ứng dụng trong hệ chuyên gia, nó dựa trên bộ luật được rút

ra từ tri thức về tín hiệu âm thanh.

Một dạng khác của hệ thống được kế thừa từ quá trình phát âm

của con người. Ở đây thay vì sử dụng bộ luật thì định nghĩa thành

phần trung gian. Theo cách này, sự phân biệt diễn ra bằng cách so

sánh tiếng nói được tổng hợp với một tiếng nói cần nhận dạng. Mặc

dù là một kỹ thuật có tiềm năng, nhưng một hệ thống như vậy có sự

giới hạn của nó.

d) Mô hình Markov ẩn (Hidden Markov models – HMM)

19

Mô hình Markov ẩn là một phương pháp thống kê mạnh mẽ để

mô hình hóa tín hiệu tiếng nói, và nó thật sự vượt trội trong việc áp

dụng vào nhận dạng tiếng nói ngày nay. Một mô hình Markov ẩn được

dùng để biểu diễn cho một đơn vị của ngôn ngữ, như là từ hay là âm

vị. Nó gồm có một số hữu hạn các trạng thái và sự chuyển đổi trạng

thái, sự chuyển đổi đó được thực hiện thông qua xác suất chuyển đổi,

hàm phân bố Gauss thường được chọn lựa để thực hiện điều này.

Một khi biểu diển một chuỗi mẫu quan sát, mô hình có thể xác

định xác suất gặp các mẫu quan sát đó, nhưng nếu như một chuỗi đơn

các mẫu quan sát không thể tìm ra một chuỗi các trạng thái có liên

quan thì nó không thể xác định trạng thái nào và ở thứ tự nào.

Xác suất chuyển trạng thái và sự phân bố xác suất phụ thuộc

vào trọng số của nó. Trong quá trình huấn luyện các trọng số này được

tối ưu hóa cho phù hợp với dữ liệu huấn luyện. (hình 1.9)

Hình 1.10: HMM với 3 trạng thái và trọng số chuyển trạng thái

20

Chương 2 XỬ LÝ TIẾNG NÓI

RÚT TRÍCH VECTOR ĐẶC TRƯNG

2.1 Xử lý tiếng nói

Tín hiệu (signal) là tất cả sự vật hiện tượng có mang hoặc chứa một thông

tin nào đó mà chúng ta có thể hiểu, được quy ước trước. Các tín hiệu trong thế giới

thực đều ở dạng liên tục (tín hiệu tương tự), nó hết sức phức tạp, thiếu độ chính xác

cần thiết đối với máy tính. Do đó các tín hiệu này thường bị biến đổi thành các tín

hiệu số (số hóa), một dạng thông tin máy tính có thể xử lý.

Tiếng nói cũng là một dạng tín hiệu tương tự, do đó nó cũng cần được số

hóa.

2.1.1 Lấy mẫu tín hiệu

Hàm lấy mẫu là cầu nối giữa các hệ thống rời rạc và các hệ thống liên

tục. Nó còn được gọi là: hàm Dirac Delta, hàm sàng lọc,…

Công thức 2.1

t()t(x

)nT

=

−δ

)t(x s

n

−∞=

Đối với máy tính, lấy mẫu chỉ đơn giản là cứ theo một chu kỳ thời gian

(đối với tín hiệu âm thanh và các dạng tương tự), hay là chu kỳ không gian

(đối với tín hiệu là ảnh và các dạng tương tự) ta đo tín hiệu một lần.

Quá trình trên sẽ tạo ra một chuỗi các số biểu diễn cho tín hiệu, và có

thể xử lý được bởi máy tính.

21

Hình 2.1: Ví dụ về lấy mẫu tín hiệu f(t) trên miền thời gian

2.1.2 Bộ lọc tín hiệu

Bộ lọc số có vai trò rất quan trọng trong xử lý tiếng nói, chúng được

dùng với 2 mục đích chính:

- Tách tín hiệu cần thiết: Các tín hiệu ban đầu thường chứa đựng các nhiễu hoặc các tín hiệu không mong muốn khác, các nhiễu này làm giảm đáng kể chất lượng của tín hiệu và cần phải tách riêng các tín hiệu cần thiết.

Ví dụ: Đối với âm thanh được thu, tín hiệu âm thường chứa thêm các tiếng ồn của môi trường, chẳng hạn như tiếng ồ ồ của quạt trần thổi vào micro; còn đối với ảnh chụp thì là các điểm lốm đốm trên những tấm ảnh cũ khi được quét vào….

- Khôi phục các tín hiệu bị biến dạng: Có một số trường hợp vì một nguyên nhân nào đó (thường là nguyên nhân liên quan đến thiết bị) sẽ tạo ra các tín hiệu vào bị méo mó. Vì vậy cần phải chỉnh lại để tăng chất lượng của tín hiệu số.

Ví dụ: Các micro cũ sẽ cho ra các tín hiệu âm thanh không tốt; “con mắt” (forcus len) của các máy quét bị mờ sẽ làm cho các ảnh được quét bị mờ theo ….

Trong thực tế kỹ thuật, có hai bộ lọc tuyến tính dùng để lọc tín hiệu như

sau:

22

- Bộ lọc đáp ứng xung hữu hạn (Finite Impulse Response – FIR): hệ có tín hiệu ra chỉ phụ thuộc vào tín hiệu vào nên các hệ này còn được gọi là mạch không truy hồi hay mạch không đệ qui (non-recursive). Bộ lọc có công thức sau:

Công thức 2.2

q

)n(y

)1n(xb)n(xb

...

)qn(xb

)j

=

++−

+

=

0

1

q

n(xb j

0j =

Hình 2.2: Minh họa hoạt động bộ lọc FIR

- Bộ lọc đáp ứng xung vô hạn (Infinite Impulse Response – IIR): hệ xử lý có đáp ứng xung có độ dài vô hạn hay đáp ứng xung vô hạn. Tín hiệu ra không những chỉ phụ thuộc vào tín hiệu vào mà còn phụ thuộc vào quá khứ của chính tín hiệu ra, vì vậy chúng còn được gọi là các mạch có truy hồi hay đệ qui. Công thức bộ lọc:

Công thức 2.3

p

q

y

=

n

ya i

xb j

− + in

jn −

1i =

0j =

Hình 2.3: Minh họa hoạt động bộ lọc IIR

23

2.1.3 Dò tìm điểm cuối (end-point detection)

Dò tìm điểm cuối là một xử lý cố gắng tìm ra chính xác khi nào người

ta bắt đầu và kết thúc nói. Nó còn được dùng để xác định khi mà người ta

không thật sự nói gì, hoặc nói những điều không mong đợi (như không có

trong bộ từ vựng định trước). Khi đó, dò tìm điểm cuối giúp giảm một số

lượng khung mà trình nhận dạng cần phải xử lý, dẫn đến giảm tải việc tính

toán. Tuy nhiên, việc dò tìm điểm cuối không dễ như ta tưởng, bởi vì có sự tồn

tại của tiếng ồn nền, tiếng nói nền và sự liên kết của các âm tiết, như là sự khó

khăn trong việc dò tìm đoạn vô thanh ở phần bắt đầu và kết thúc tiếng nói.

Dò tìm điểm cuối được thực hiện qua ba bước, qua mỗi bước xác định

điểm cuối càng chính xác. Việc dò tìm dựa trên mức năng lượng của tín hiệu

N

E log

2 x (n)

(xem phần 2.2.2.2)

được đặc trưng bằng:

= ∑

n 1 =

a) Dò tìm thô: dựa trên kỹ thuật năng lượng ít chính xác nhất. Nó tìm một

đoạn mà mức năng lượng cao hơn đoạn trước đó và cho một số khung

là điểm bắt đầu (thường khoảng 40 khung) trước khi gặp khung mức

năng lượng cao hơn. Khi một số lượng (thường khoảng 20 khung)

khung khác qua (không cần kiểm tra bất kỳ khung nào) được cho là

điểm cuối.

b) Dò tìm tinh: bước dò tìm tinh sẽ kiểm tra mức năng lượng của tiếng

nói, nó cố lọc ra điểm đầu và cuối bằng cách cho rằng mức năng lượng

của tiếng nói thì cao hơn độ ồn nền (cao hơn một ngưỡng nào đó).

c) Kỹ thuật VUS (Voice, Unvoice and Silence): kỹ thuật này cố phân loại

từng khung thành đoạn hữu thanh, đoạn vô thanh và khoảng lặng. Việc

phân loại dựa trên sự phân bố năng lượng trong khung, phổ biến dạng

và sự phân loại khung trước đó. Phương pháp này cố loại bỏ đi những

24

phần không phải tiếng nói, như: tiếng nhép miệng, thở, hoặc độ ồn nền

(chẳng hạn tiếng đóng cửa).

Hình 2.4: Dò tìm điểm cuối dựa vào mức năng lượng

25

2.2 Rút trích đặc trưng

Hình 2.5: Sơ đồ rút trích vector đặc trưng tổng quát

Đối với một hệ nhận dạng tiếng, việc rút trích vector đặc trưng của tiếng nói là cần thiết. Điều này giúp giảm thiểu số lượng dữ liệu trong việc huấn luyện và nhận dạng, dẫn đến số lượng công việc tính toán trong hệ giảm đáng kể. Bên cạnh đó, việc rút trích đặc trưng còn làm rõ sự khác biệt của tiếng này so với tiếng khác, làm mờ đi sự khác biệt của cùng hai lần phát âm khác nhau của cùng một tiếng. Hình 2.6 minh họa các bước xử lý trong việc rút trích vector đặc trưng tiếng nói.

26

2.2.1 Các bước rút trích đặc trưng

Hình 2.6: Sơ đồ rút trích đặc trưng chi tiết

2.2.1.1 Làm rõ tín hiệu

Ở bước này, mục đích là làm tăng cường tín hiệu, làm nổi rõ đặc trưng của tín hiệu và làm cho nó ít nhạy hơn với các hiệu ứng do độ chính xác hữu hạn ở những bước xử lý sau. Bộ làm rõ tín hiệu thường là một bộ lọc thông cao với phương trình sai phân như sau:

Công thức 2.4

)n(s~

)n(s

)1n(sa

=

; với 0.9 ≤ a ≤ 1

2.2.1.2 Phân đoạn thành các khung

)(~ ns

Trong bước phân đoạn khung,

được chia thành các khung,

mỗi khung gồm N mẫu, khoảng cách giữa các khung là M mẫu. Hình 2.7 minh họa cách phân thành các khung trong trường hợp M = (1/3)N.

27

)1N(s~

đến

Cụ thể, khung thứ nhất gồm N mẫu tiếng nói đầu tiên (bắt đầu từ − ). Khung thứ hai bắt đầu từ mẫu thứ M và kết thúc ở

)0(s~ vị trí M+N-1. Tương tự, khung thứ i bắt đầu từ mẫu thứ i*M và kết thúc ở vị trí i*M+N-1. Tiến trình này tiếp tục cho đến khi các mẫu tiếng nói đều đã thuộc về một hay nhiều khung.

Ta dễ dàng thấy rằng nếu M ≤ N thì các khung kề nhau sẽ có sự chồng lấp (như hình 2.7), dẫn đến kết quả là các phép rút trích đặc trưng có tương quan với nhau từ khung này sang khung kia; và khi M << N thì khung này sang khung khác được hoàn toàn trơn. Ngược lại, nếu M > N thì sẽ không có sự chồng lấp giữa các khung kề nhau, dẫn đến một số mẫu tiếng nói bị mất (tức là không xuất hiện trong bất kỳ khung nào). Nếu ta ký hiệu khung thứ i là xi(n) và giả sử có tất cả L khung trong tín hiệu tiếng nói thì:

)ni.M(s~

+

, n = 0, 1, …, N-1;

i = 0, 1, …, L-1

xi(n) =

Hình 2.7: Phân đoạn tiếng nói thành các khung chồng lấp

2.2.1.3 Lấy cửa sổ

Bước tiếp theo trong xử lý là lấy cửa sổ tín hiệu ứng với mỗi khung để giảm thiểu sự gián đoạn tín hiệu ở đầu và cuối mỗi khung. Một dãy tín hiệu con được lấy ra từ một tín hiệu dài hơn hoặc dài vô hạn x(n) gọi là một cửa sổ tín hiệu. Việc quan sát tín hiệu x(n) bằng một đoạn xN(n) trong khoảng n0…(n0 + N –1) tương đương với việc nhân x(n) với một hàm cửa sổ w(n-n0)

Công thức 2.5

)n(x

n

n

+

1N −

=

=

)n(x N

)nn(w).n(x 0

0

n(

0 n(

n

0 <

>

+

)1N −

n ≤≤ )n 0

0

⎡ ⎢ ⎣

28

Các dạng cửa sổ tín hiệu

Trong xử lý tín hiệu số, các cửa sổ thường dùng được biểu diễn

thông qua cửa sổ Hamming tổng quát:

Công thức 2.6

).

cos(

)N/n.2

2/Nn

π

)n(w

=

1( α−+α 0

2/Nn

>

⎡ ⎢ ⎣

Tuỳ theo các giá trị khác nhau của α mà ta có các cửa sổ khác

nhau:

• α = 0.54, ta có cửa sổ Hamming, đây là dạng cửa sổ thường

được dùng nhất.

• α = 0.5, ta có cửa sổ Hanning:

• α = 1, ta có cửa sổ chữ nhật:

Thêm vào đó, độ rộng của cửa sổ cũng có tác động khá lớn đến

kết quả của các phép phân tích.

29

Một số cửa sổ khác cũng được sử dụng trong xử lý tín hiệu số

như: cửa sổ tam giác, cửa sổ Kaiser, cửa sổ Blackman, cửa sổ cosin…

Sau đây là một số ví dụ cho thấy sự khác biệt giữa các loại cửa sổ.

Hình 2.5a: Âm /a/, cửa sổ chữ nhật,

512 điểm(45ms, trái) và 64 điểm(5.6ms, phải)

Hình 2.5b: Âm /a/, cửa sổ Hamming,

30

512 điểm(45ms, trái) và 64 điểm(5.6ms, phải)

Hình 2.5c: Âm /a/, cửa sổ Hanning,

512 điểm(45ms, trái) và 64 điểm(5.6ms, phải)

31

Hình 2.8: Sự khác biệt giữa các dạng cửa sổ tín hiệu

32

2.2.2 Các dạng đặc trưng tiếng nói

Để rút trích đặc trưng, ta cần phải chọn đặc trưng thỏa mãn những vấn

đề sau đây:

• Có khả năng diễn dạt thông tin tiếng nói độc lập người nói

• Dễ dàng tính toán

• Ổn định theo thời gian

• Xảy ra tự nhiên và liên tục trong tiếng nói

• Ít thay đổi theo môi trường nói (độc lập môi trường)

• Không ảnh hưởng bởi sự biến dạng bóp méo

• Không ảnh hưởng bởi độ ồn nền và băng tần giới hạn

• Không ảnh hưởng bởi trạng thái người nói

(cid:206) Đặc trưng có tất cả những đặc tính như thế không tồn tại!!!

Các dạng đặc trưng hiện nay

• Đặc trưng miền âm

(cid:190) Autocorrelation coefficients (COR)

(cid:190) Linear Prediction Coefficients (LPC)

(cid:190) Partial Correlation coefficients (PARCOR)

(cid:190) Log Area Ratio coefficients (LAR)

(cid:190) Perceptional Linear Prediction (PLP)

• Đặc trưng miền tần số và Cepstral

(cid:190) Line Spectrum Pairs (LSP)

(cid:190) Bank of filters (tuyến tính)

(cid:190) Bank of filters (Mel)

(cid:190) Mel Frequency Cepstral Coefficients (MFCC)

2.2.2.1 Biến đổi tín hiệu sang miền tần số

Có hai cách biến đổi:

a) Phép biến đổi Fourier rời rạc

33

Phép biến đổi Fourier là phép biến đổi thuận nghịch, dùng để

biến đổi tín hiệu sang miền tần số, nó dùng các công thức biến đổi rời rạc sau :

Phép biến đổi thuận:

Công thức 2.7

1N −

N/kn

)k(X

2je)n(x π−

=

, k = 0, 1, 2, …, N – 1

0n =

Phép biến đổi nghịch:

Công thức 2.8

1N −

N/kn

π

)n(x

2je)k(X

=

, n = 0, 1, 2, …, N – 1

0k =

b) Biến đổi cosin rời rạc

Biến đổi Cosin là một phép biến đổi mạnh, được dùng trong xử lý nén ảnh JPEG, nó cũng là một phép biến đổi chuyển tín hiệu sang miền tần số, ta có các công thức sau:

Phép biến đổi thuận:

Công thức 2.9

1-N

π

X(k)

)k(

).n(x

cos

α=

, k = 0, 1, 2, …, N –

k)1n2( + N2

⎡ ⎢⎣

⎤ ⎥⎦

0n =

1

Biến đổi nghịch:

Công thức 2.10

π

)n(x

cos

α=

, n = 0,1,2, …,N – 1

1N − ∑ ).k(X)n(

k)1n2( + N2

⎡ ⎢⎣

⎤ ⎥⎦

0k =

k

0

=

;

Với:

k∈Z

)k(

α

=

1Nk1

≤≤

1 N 2 N

⎡ ⎢ ⎢ ⎢ ⎢ ⎣

34

Cả hai phép biến đổi trên đều có phiên bản biến đổi nhanh, điều này giúp tăng tốc xử lý, thích hợp trong việc xử lý cần thời gian thực như xử lý âm thanh, đó là FFT (Fast Fourie Transform) và FCT (Fast Cosine Transform). Các phép biến đổi nhanh này đều dựa trên kỹ thuật phân chia theo cơ số 2, nghĩa là thay vì biến đổi trên toàn bộ tín hiệu thì phép biến đổi này sẽ phân chia chuỗi tín hiệu thành 2 chuỗi tín hiệu con, và lại áp dụng phép biến đổi lần nữa cho 2 phần này một cách đệ quy. Do phép chia cho 2, nên chuỗi tín hiệu đòi hỏi phải có chiều dài là lũy thừa của 2 (điều này có thể dễ dàng giải quyết được bằng cách tăng kích thước chuỗi tín hiệu lên và điền 0 vào)

Ví dụ việc phân chia và biến đổi sẽ được thực hiện trên chuỗi tín

hiệu có chiều dài 16 điểm như sau:

1 tín hiệu 16 điểm 0 1 2 3 4 5 6 7 8 9 10 11 12 13 15 16

0 2 4 6 8 10 12 14 1 3 5 7 9 11 13 15

2 tín hiệu 8 điểm

0 4 8 12 2 6 10 14 1 5 9 13 3 7 11 15

4 tín hiệu 4 điểm

0 8 4 12 2 10 6 14 1 9 5 13 3 11 7 15

8 tín hiệu 2 điểm

16 tín hiệu 1 điểm 0 8 4 12 2 10 6 14 1 9 5 13 3 11 7 15

Độ phức tạp của phương pháp này là O(Nlog2(N)).

2.2.2.2 Đặc trưng năng lượng

Năng lượng tín hiệu được thể hiện thông qua mức độ, số lượng tín hiệu có trong một đơn vị thời gian. Năng lượng của tín hiệu tiếng nói là một đặc trưng vật lý của tín hiệu, được dùng như là tham số trong vector đặc trưng trong nhận dạng tiếng nói, và còn được để dò tìm khoảng lặng trong tín hiệu tiếng nói. Tính toán năng lượng tín hiệu thường dựa trên sự phân khung và lấy cửa sổ, bằng cách lấy tổng các bình phương chuỗi tín hiệu x(n) trong cửa sổ tín hiệu.

Đặc trưng năng lượng ở đây được tính bằng cách lấy log năng

lượng tín hiệu, tính bằng công thức sau:

35

Công thức 2.11

N

E log

2 x (n)

= ∑

n 1 =

2.2.2.3 Đặc trưng MFCC

Các nghiên cứu cho ta thấy rằng hệ thống thính giác của con người thu nhận âm thanh với độ lớn các tần số âm thanh không theo thang tuyến tính. Do đó, các thang âm thanh đã ra đời cho phù hợp với sự tiếp nhận của thính giác con người.

Các thang được xây dựng bằng thực nghiệm, cho nên người ta xây dựng các công thức để xấp xỉ sự chuyển đổi này. Trong các thang và công thức dạng đó thì đặc trưng MFCC sử dụng thang Mel. Thang Mel được thể hiện thông qua đồ thị sau:

Hình 2.9: Đồ thị biểu diễn mối quan hệ giữa Mel và Hz

36

Hình 2.10: Các bước trích đặc trưng MFCC

Ta dùng phép biến đổi Fourier để chuyển tín hiệu từ miền thời

gian sang miền tần số. Sau đó ta dùng dãy bộ lọc để lọc tín hiệu, đó là

dãy bộ lọc tam giác có tần số giữa đều nhau trên thang Mel.

Hình 2.11: Bộ lọc trên thang Mel

37

Hình 2.12: Bộ lọc trên tần số thật

Lấy log trên dãy kết quả từ dãy bộ lọc và thực hiện biến đổi cosin

rời rạc ta thu được các hệ số đặc trưng MFCC.

Hình 2.13: Minh họa các bước biến đổi MFCC

38

2.2.2.4 Đặc trưng LPC

Ý tưởng cơ bản của phương pháp LPC là tại thời điểm n, mẫu tiếng nói s(n) có thể được xấp xỉ bỡi một tổ hợp tuyến tính của p mẫu trước đó.

Công thức 2.12

)n(s~

;

s(n) ≈

p

là giá trị dự báo của s(n)

Với

)kn(sa

)n(s~

=

k

1k =

(giả sử a1, a2, … , ap là hằng số trên khung dữ liệu (frame) được xem xét)

Chúng ta chuyển quan hệ trên thành dạng đẳng thức bằng cách

thêm vào số hạng G.u(n) gọi là nguồn kích thích:

Công thức 2.13

)n(u.G)n(s~)n(s

+

=

trong đó u(n) là nguồn kích thích được chuyển hóa và G gọi là độ lợi của nó.

)n(e~

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

Khi đó sai số dự báo

Công thức 2.14

)n(e~

)n(u.G)n(s~)n(s

=

=

Để tìm tập các hệ số ai, k = 1, 2, …, p trên khung được phân tích, cách tiếp cận cơ bản là ta cực tiểu hóa sai số bình phương trung bình. Khi đó sẽ dẫn đến việc ta phải giải một hệ phương trình với p ẩn số. Có nhiều phương pháp để giải hệ phương trình đó, nhưng trong thực tế, phương pháp thường được dùng là phương pháp phân tích tự tương quan.

39

Hình 2.14: Sơ đồ xử lý LPC dùng cho trích đặc trưng tiếng nói

Hình 2.13 trình bày sơ đồ chi tiết của quá trình xử lý LPC để rút trích đặc trưng tiếng nói. Các bước cơ bản trong tiến trình xử lý như sau:

Phân tích tự tương quan

Mỗi khung sau khi được lấy cửa sổ sẽ được đưa qua bước phân

tích tự tương quan và cho ra (p + 1) hệ số tự tương quan:

Công thức 2.15

1mN −−

)mn(x~)n(x~

;

m = 0, 1, …, p

=

+

)m(r i

i

i

0n =

Trong đó giá trị tự tương quan cao nhất, p, được gọi là cấp của phân tích LPC. Thông thường, ta sử dụng các giá trị p trong khoảng từ 8 đến 16.

Phân tích LPC

Bước này, ta sẽ chuyển mỗi khung gồm (p + 1) hệ số tự tương

quan thành p hệ số LPC bằng cách dùng thuật toán Levinson – Durbin.

40

Thuật toán Levinson – Durbin thể hiện qua mã giả sau, với dữ liệu vào là p+1 hệ số tự tương quan chứa trong r, kết quả ra là p hệ số LPC chứa trong a.

Procedure Levinson_Durbin (Vector a, Vector r)

r(0)(cid:198)E(0) For i = 1 to p do

r(i)(cid:198)ki For j = 1 to i – 1 do −

(cid:198)ki

1i α+ − j

i

)j i(r k

− (cid:198)ki

= α

α

k − α i

k i )1i( E -ki(cid:198) )i( iα For j = 1 to i – 1 do ( i 1) ( i ) − j j

( i 1) − j i −

End for

2

End for

ik )E(i-1)

)p(

E(i) = (1 -

End for For m = 1 to p do mα (cid:198)a(m)

End for End Procedure

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

Phân tích cepstral

Từ p hệ số LPC ở mỗi khung, ta dẫn xuất ra q hệ số cepstral c(m)

theo công thức đệ quy sau:

Công thức 2.16

41

c0 = ln 2σ

m 1 −

k m

k 1 =

⎛ ⎜ ⎝

⎞ c a ⎟ k m k ⎠

m 1 −

; 1≤m≤p cm = am +

k m

k 1 =

⎛ ⎜ ⎝

⎞ c a ⎟ k m k ⎠

2σ là độ lợi của mô hình LPC. Thông thường ta chọn

; p

Trong đó,

Q≈(3/2)p.

Đặt trọng số cho các hệ số cepstral

Do độ nhạy của các hệ số cepstral cấp thấp làm cho phổ bị đổ dốc và do độ nhạy của các hệ số cepstral cấp cao gây ra nhiễu nên ta thường sử dụng kỹ thuật đặt trọng số để làm giảm thiểu các độ nhạy này:

ĉi (m) = c(m).w(m)

Với w(m) là hàm đặt trọng số. Hàm đặt trọng số thích hợp thường

là bộ lọc thông dải:

Công thức 2.17

sin

Q 2

m π⎛ ⎜ Q ⎝

⎞ ⎟ ⎠

⎡ 1 +⎢ ⎣

⎤ ⎥ ⎦

w(m) = , 1 ≤ m ≤ Q.

Nhận xét

Mô hình LPC là mô hình đặc biệt thích hợp cho 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 cho ta một xấp xỉ tốt đối với đường bao phổ âm. Với tiếng nói vô thanh, mô hình LPC tỏ ra ít hữu hiệu hơn so với 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ên phần cứng lẫn phần mềm. Đặc biệt, kinh nghiệm đã chứng tỏ rằng phương pháp LPC thực hiện tốt hơn so với bộ trích đặc trưng bằng dãy bộ lọc.

2.2.2.5 Đặc trưng tần số cơ bản

Tần số cơ bản đóng một vai trò quan trọng trong nhận dạng tiếng nói. Từ tần số cơ bản, ta có thể có những phân biệt các tiếng theo một số

42

đặc điểm ngữ âm. Tần số cơ bản còn thể hiện sắc thái, thanh điệu, giọng người nói… Do đó, xác định tần số cơ bản là một phần công việc không thể thiếu trong các hệ nhận dạng tiếng nói, đặc biệt là tiếng nói có thanh điệu như tiếng Việt.

Sự thể hiện của các thanh điệu liên quan đến giá trị và sự biến đổi của tần số cơ bản. Trong xử lý tiếng nói, tín hiệu được chia thành các khung liên tiếp nhau, nên thanh điệu sẽ được thể hiện bằng tần số cơ bản trong từng khung tín hiệu cũng như sự vận động của nó từ khung này sang khung khác.

Tín hiệu đầu vào của các phương pháp trên là tín hiệu tiếng nói thô, hoặc tín hiệu đã được xử lý bằng một phép toán phi tuyến (như cắt tâm) hay dùng lỗi dự báo (trong mô hình LPC).

Tần số cơ bản chỉ có trong các âm hữu thanh, nên việc rút trích tần số cơ bản cũng phải đảm nhận luôn việc phân biệt giữa các âm vô thanh và hữu thanh.

Để tăng hiệu quả, người ta tiến hành một số bước tiền xử lý cho tín hiệu tiếng nói thô, nhằm tăng độ chính xác, giảm khối lượng tính toán. Thông thường tín hiệu thô được xử lý qua 2 bước trước khi dùng để trích F0:

• Lọc thông thấp: tín hiệu tiếng nói được cho qua bộ lọc thông thấp để loại bỏ các thành phần có tần số cao hơn Fmax. (Tần số cơ bản lớn nhất có thể của tiếng nói). Thông thường Fmax = 900Hz.

• Thực hiện việc lấy mẫu lại, giảm bớt kích thước sóng âm. Tần số lấy mẫu được giảm xuống còn 2 KHz (theo định luật Nyquist: tần số lấy mẫu phải lớn hơn hoặc bằng 2 lần tần số cơ bản lớn nhất). Lấy mẫu lại tần số giúp giảm đáng kể khối lượng tính toán. Ở các phương pháp tìm F0 thông thường, khối lượng tính toán giảm khoảng Z2 lần. Với Z là tỉ lệ giảm tần số lấy mẫu.

a) Phương pháp tự tương quan

43

Thực hiện tính hàm tự tương quan trên khung tín hiệu tiếng

nói độ dài N

Công thức 2.18

1pN −−

)pk(s)k(s

+

0k =

rN(p) = ∑

Trong đó, p được giới hạn trong vùng có âm cơ bản. Nếu tín hiệu s(n) là tuần hoàn thì sẽ có các đỉnh tại i = 0, P, 2P,…(P là chu kỳ âm cơ bản). Ngưỡng quyết định đỉnh thường là : rN(p)>0.8rN(0). Có một vài ý tưởng tạo ra ngưỡng động dựa vào tương quan năng lượng của khung tín hiệu và năng lượng trung bình của cả tín hiệu.

Nhận xét:

• Thông thường, tín hiệu được nhân với một hàm cửa sổ để

giảm sự tác động do sự thay đổi âm điệu.

• Nếu áp dụng phương pháp này cho tín hiệu tiếng nói thô

thì tỏ ra không tốt, đỉnh xuất hiện không rõ.

• Cần một số bước tiền xử lý để loại bỏ thông tin của dãy

âm.

• Áp dụng phương pháp này cho e~ (n) sẽ tốt hơn (phương

pháp Simplified Inverse Filter Tracking).

• Có lấy vài đỉnh trong một khung tín hiệu sau đó dựa vào phương pháp Dynamic Programing để tìm ra chuỗi F0 trong một đoạn các khung liên tiếp.

Một phương pháp dẫn xuất từ phương pháp này là dùng hiệp tương quan giữa hai tín hiệu x(n) và y(n), y(n) = x(n + P) (tín hiệu y(n) là do tín hiệu x(n) dịch đi P đơn vị).

b) Lỗi LPC và phương pháp SIFT

Mô hình LPC đặc trưng bằng hàm truyền đạt có dạng như

sau:

44

)z(H =

)z(s )z(u.G

p

)n(s

)n(u.G)kn(sa

=

+

k

1k =

Trong miền thời gian là:

)n(e~

Trong đó, G.u(n) chính là nguồn kích thích, trong trường hợp âm hữu thanh, G.u(n) chính là miêu tả chính xác dạng dao động của dây thanh hay F0.

Chúng ta cũng đã định nghĩa lỗi của ước lượng, như

)n(e~

)n(u.G)n(s~)n(s

=

=

sau:

)n(e~ chứa thông tin về nguồn kích thích, và do đó, việc xác định F0 trong trường hợp hữu thanh trở nên dễ dàng hơn.

Như vậy mô hình LPC đã tạo ra tín hiệu lỗi dự báo

)n(e~

Đối với phương pháp SIFT (Simplified Inverse Filter Tracking), phương pháp này áp dụng phương pháp tự tương quan

thu được ở trên. với tín hiệu vào là

c) Phương pháp dùng cepstral

Phương pháp này có thể mô tả đơn giản như sau:

• Dùng phép phân tích Cepstral thực cho tín hiệu vào. Tín hiệu

vào này có thể sử dụng trực tiếp tiếng nói thô.

• Tìm đỉnh trong vùng thích hợp của tín hiệu cn.

Nhận xét

• Đỉnh được tìm khá chính xác, ít bị lấy nhầm hài âm.

• Dùng tốt trong trường hợp tiếng nói có cao độ thấp.

• Việc xác định ngưỡng để quyết định có đỉnh tại cn0 không tuỳ thuộc vào người nói (cid:198) khó phân biệt vô thanh/hữu thanh.

45

d) Phương pháp CLIP

Phương pháp CLIP (center clipping pitch detector) tương tự như phương pháp tự tương quan ở trên, nhưng tín hiệu được xử lý để loại bỏ thông tin về các phoocmăng (thông tin về đường phát âm).

Có một vài giải pháp cho việc này. Cụ thể là phương pháp cắt tâm (center clipping). Phương pháp này sẽ loại bỏ bớt các đỉnh nhỏ trên sóng âm, làm cho sóng âm nhìn giống dạng xung hơn.

L

Phép toán cắt C được mô tả như sau:

L

C)n(s > L C)n(s ≤ C

C ≤ L )n(s

−<

L

L

C)n(s − ⎧ ⎪ 0 ⎨ ⎪ C)n(s + ⎩

C{s(n)} =

Trong đó CL là ngưỡng cắt, thường được lấy bằng 30% giá

trị lớn nhất của tín hiệu.

e) Hàm AMDF

Phương pháp (Average Magnitude Difference Function) giống phương pháp tự tương quan ở trên, nhưng khối lượng tính toán sẽ giảm xuống do không phải dùng phép nhân.

Chúng ta định nghĩa hàm trung bình hiệu biên độ như sau:

Công thức 2.19

1pN −−

)n(s|

|)pn(s +

D(p) =

1 pN −

0n =

Sau khi tính D(p) trong vùng có khả năng xuất hiện P0.

Chọn điểm cực tiểu D(P0), P0 là chu kỳ tần số cơ bản.

f) Phương pháp so khớp biên độ

Chuỗi tín hiệu tiếng nói đưa vào máy tính có dạng hình sin. Do đó, ta sẽ tìm hai điểm dao động cùng pha, khoảng thời gian giữa hai điểm đó chính là chu kỳ T. Từ T, ta sẽ tìm ra tần số f.

46

Hình 2.15: Hình dạng tín hiệu tiếng nói

Tuy nhiên cần chú ý rằng tín hiệu tiếng nói là sự tổng hợp của nhiều tần số (xem hình vẽ), do đó, hai điểm dao động cùng pha được xét phải là 2 điểm cắt zero. Bên cạnh đó, ta cũng phải xác định đúng 2 điểm cắt zero để tạo thành chu kỳ của F0, vì các dao động cộng hưởng cũng có thể gây ra điểm cắt zero.

Phương pháp so khớp biên độ được tiến hành như sau:

1. Dò tìm điểm cắt zero thứ nhất theo một chiều nào đó (ví dụ

đi lên như trong hình vẽ), đặt tên là X1.

2. Dò tìm 2 điểm cắt zero cùng chiều tiếp theo, đặt tên là X2, X3. Với khoảng thời gian giữa X1X2 và X2X3 là tương đương nhau và nằm trong khoảng ngưỡng thời gian xác định chu kỳ.

3. Lần lượt so sánh biên độ các điểm tương ứng trong hai khoảng X1X2 và X2X3 . Gọi tổng bình phương các độ sai lệch biên độ là S.

Công thức 2.20

X,X 2

3

2

S

x

=

12

23

x

=

x X =

12

x,X 1

23

2

4. Nếu S nhỏ hơn ngưỡng độ lệch (tức là hai khoảng X1X2 và X2X3 giống nhau) thì kết luận mỗi khoảng đó là một chu kỳ. Nếu không, thay đổi khoảng thời gian, nghĩa là dò tìm các điểm cắt zero khác.

47

Làm trơn kết quả F0 bằng bộ lọc median

Bộ lọc Median được dùng khá rộng rãi trong việc khử nhiễu. Nội

dung kỹ thuật được thể hiện như sau:

• Để có một tín hiệu ra, một cửa sổ các tín hiệu vào liền nhau

được chọn.

Sắp xếp các dữ liệu trong cửa sổ tín hiệu kể trên. •

• Giá trị trung tâm của dãy đã sắp xếp được chọn làm median

của tập hợp các mẫu trong cửa sổ.

Có nghĩa là bộ lọc median sẽ tính lại giá trị một điểm bằng cách

Hình 2.16: Kết quả trích F0

Hình 2.17: Kết quả sau khi lọc Median

lấy điểm có giá trị trung bình trong các điểm xung quanh.

48

Chương 3 MÔ HÌNH MARKOV ẨN

Hình 3.1: Minh họa hoạt động của mô hình Markov ẩn

Mô hình Markov ẩn (Hidden Markov Model - HMM) là mô hình dựa trên

thống kê dùng để mô hình hoá các loại tín hiệu theo thời gian, được sử dụng rất

thành công trong những ứng dụng về nhận dạng. Nó có khả năng mô hình hoá tiếng

nói theo thời gian dựa trên cấu trúc được ràng buộc bằng toán học chặt chẽ. Cho nên

HMM nhận dạng tiếng nói đạt hiệu quả cao hơn các phương pháp khác. Thực tế cho

thấy, trong lĩnh vực nhận dạng tiếng nói, mô hình Markov ẩn cho kết quả cao hơn

mạng neural. Nhờ những ưu điểm đó, mô hình Markov ẩn còn được sử dụng trong

nhiều lĩnh vực nhận dạng khác, có trong các ứng dụng khác nhau.

3.1 Mô hình Markov ẩn

Mô hình Markov ẩn gồm các trạng thái, và một ma trận trọng số chuyển

trạng thái tạo thành một mạng chuyển đổi trạng thái. Trong phương pháp nhận dạng

tiếng nói bằng mô hình Markov ẩn, mỗi từ mẫu sẽ được biểu diễn bằng một mô

hình Markov ẩn. Tại một thời điểm bất kỳ, hệ thống sẽ ở vào trạng thái qt trong tập

49

S = {Si} có N trạng thái. Qua các thời gian rời rạc, hệ thống sẽ chuyển qua các trạng

thái khác. Ký hiệu qt là trạng thái ở thời điểm t, ta có:

P[qt = Sj|qt-1 = Si, qt-2 = Sk,…] = P[qt = Sj | qt-1 = Si]

Chúng ta chỉ xét các quá trình mà vế phải không phụ thuộc vào thời gian.

Khi đó tập xác suất chuyển trạng thái aij có dạng:

1=∑ ija

. aij = P[qt = Sj | qt-1 = Si], với aij ≥ 0;

1. N: số trạng thái của mô hình Tập trạng thái của mô hình: s = {s1,s2,...,sN } Trạng thái ở thời điểm t, qt ∈ s

2. M: số các ký hiệu quan sát được ứng với một trạng thái

Tập các ký hiệu quan sát: v = {v1,v2,...,vM }

Ký hiệu quan sát ở thời điểm t, ot ∈v

3. Tập xác suất chuyển trạng thái: A = {aij} aij = P(qt+1 = sj | qt = si ), 1 ≤ i,j ≤ N

4. Tập xác suất ký hiệu Vk quan sát được trong một trạng thái: B = {bj(k)} at t | qt = sj ), 1 ≤ j ≤ N, 1 ≤ k ≤ M bj (k) = P(vk 5. Tập xác suất trạng thái ban đầu là trạng thái i: π = {πi }

πi = P[qt = Si], i∈[1,N]

Do đó, một mô hình Markov ẩn được đặc trưng bởi các tham số sau:

Ta ký hiệu một mô hình Markov ẩn như sau: λ = (A, B, π).

Một số mô hình HMM thông dụng là:

50

Hình 3.2: Mô hình Left - Right

Hình 3.3: Mô hình Bakis

Hình 3.4: Mô hình Tuyến tính

3.2 Ứng dụng Mô hình Markov vào nhận dạng tiếng nói

Áp dụng mô hình Markov ẩn cho xử lý tiếng nói, ta phải giải quyết 3 bài toán

cơ bản sau:

1. Tính điểm: Cho chuỗi quan sát O = {o1,o2,...,oT } và mô hình λ = {A, B,

(cid:206) Thuật toán tiến - lùi

π}, ta phải tính xác suất có điều kiện P(O|λ) của chuỗi quan sát.

51

2. So khớp: Cho chuỗi quan sát O và mô hình λ, ta phải tìm chuỗi trạng thái

(cid:206) Thuật toán Viterbi

Q= {q1, q2, ..., qT} sao cho xác suất có điều kiện P(O|λ) là tối ưu.

3. Huấn luyện: Cho chuỗi quan sát O và mô hình λ, ta phải đánh giá lại các

thông số của mô hình λ sao cho xác suất có điều kiện P(O|λ) của chuỗi

quan sát là tối ưu.

(cid:206) Hàm ước lượng Baum-Welch

3.2.1 Thuật toán tiến

Toán tử tiến αt(i) là xác xuất của chuỗi quan sát từng phần o1o2 ...ot và

αt (i) = P(o1o2 ...ot, qt = si | λ)

trạng thái quan sát Si tại thời điểm t với điều kiện cho mô hình Markov ẩn λ.

Bước 1: Khởi tạo

với i∈[1,N]

α(i) = πibi(O1),

Bước 2: Qui nạp

N

(i)a

t

ij

j

b (O )+ t 1

Toán tử tiến có thể được tính theo các bước qui nạp sau:

i 1 =

⎡ ∑ α⎢ ⎣

⎤ ⎥ ⎦

Bước 3: Kết thúc:

N

(i)

, (t∈[1,T-1], j∈[1,N]) αt+1(j) =

T

α∑

i 1 =

P(O|λ) =

52

Hình 3.5:Minh họa thuật toán tiến

3.2.2 Thuật toán lùi

Hình 3.6:Minh họa thuật toán lùi

53

Toán tử lùi βt(i) là xác xuất của chuỗi quan sát từng phần Ot+1Ot+2…OT

βt(i) = P(Ot+1Ot+2…OT|qt = Si,λ)

và trạng thái Si tại thời điểm t với điều kiện cho mô hình Markov ẩn λ.

Bước 1: Khởi tạo

βt(i) có thể tính được theo các bước qui nạp sau:

Bước 2: Qui nạp

N

( j)

β

,

ij

(t∈[1,T-1])

a b (O ) t 1 j +

t 1 +

βt(i) =

j 1 =

(i∈(1,N)) βT(i) = 1,

3.2.3 Phương pháp tìm chuỗi trạng thái tối ưu

Một tiêu chuẩn chọn trạng thái qt là tối đa hóa xác suất số trạng thái

Xét toán tử γt(i):Toán tử γt(i) là xác suất của hệ thống ở trạng thái i tại

đúng

γt(i) = P(qt = S|O,λ)

(i)

(i)

β

t

t

=

α N

γt(i) =

(i) β α t P(O |

(i) t ) λ

(i)

t

t

β∑ (i) α

i 1 =

(i)

=

=

thời điểm t với điều kiện cho chuỗi quan sát O và mô hình λ.

Và toán tử δt (i) là xác suất tối đa trên đường đi max P(q q ...q ,q δ 1 2

s ,o o ...o | i 1 2 t

t

t

t 1 −

λ )

q ,q ,...,q 1 2

t 1 −

Quy nạp:

δ

=

δ

t

ij

j

t 1 +

b (o ) t 1 +

( j) max (i)a i

⎡ ⎣

⎤ ⎦

Để thu được chuỗi trạng thái, chúng ta phải lưu đường đi của chuỗi

trạng thái tối ưu ở thời điểm t. Ta lưu lại trong mảng ψt (i)

54

3.2.4 Thuật toán Viterbi

Bước 1: Khởi tạo

(i)

δ 1

= π i

b (o ) 1

i

ψ

1(i) 0 =

Bước 2: Quy nạp

(i)a

t T 1

j N

δ

δ

≤ ≤

≤ ≤

t

t-1

ij

b (o ), 2 t

j

⎡ ⎣

⎤ ⎦

( j) max = 1 i N ≤ ≤

( j)

(i)a

, 2

t T 1

j N

ψ

=

δ

≤ ≤

≤ ≤

t

t-1

ij

⎡ ⎣

⎤ ⎦

argmax 1 i N ≤ ≤

Bước 3: Kết thúc

*

(i)

δ

T

[

]

P max = 1 i N ≤ ≤

q

(i)

=

δ

* T

T

[

]

argmax 1 i N ≤ ≤

Bước 4: Quay lui tìm chuỗi trạng thái (đường đi) tối ưu

q

t T 1, T 2, ..., 1

= ψ

= −

* T

* (q ), t 1 +

t 1 +

, 1≤ i ≤ N

Số phép tính: N2T

55

Hình 3.7: Ví dụ minh họa thuật toán Viterbi

56

Hình 3.8:Ví dụ minh họa thuật toán Viterbi (tt)

57

Hình 3.9: Ví dụ minh họa so khớp dùng thuật toán tiến-lùi

3.2.5 Ước lượng Baum-Welch

Xét toán tử ξt(i,j) là xác suất của hệ thống ở trạng thái i tại thời điểm t

và trạng thái j tại thời điểm t+1 với điều kiện có chuỗi quan sát O và mô hình

ξ

(i, j) P(q =

=

=

) λ

t

s ,q i

t

s | O, j

t 1 +

Markov ẩn λ.

( j)

α

β

t

t 1 +

(i, j)

ξ

=

t

(i)a b (o ) t 1 ij j + ) P(O | λ

N

(i)

(i, j)

γ

=

t

t

ξ∑

j 1 =

Khi đó:

Kết hợp γt(i) và ξt(i,j), ta được

58

π = xác suất của hệ thống ở trạng thái i tại thời điểm t=1, tức là bằng

T 1 −

(i, j)

ξ

t

γt(i).

a

=

ij

t 1 = T 1 −

(i)

γ

t

t 1 =

=

b (k) j

O V = t k T 1 −

(i)

t

γ∑

t 1 =

Hình 3.10: Minh họa ước lượng Baum - Welch

Khi đó λ = ( A , B , π ) là mô hình được ước lượng lại.

59

3.3 Cấu trúc ngôn ngữ và mô hình nhận dạng theo âm vị

Hình 3.11: Minh họa việc nhận dạng âm vị trong HMM

3.3.1 Cấu trúc ngôn ngữ

Giả định cơ bản nhất là các từ được cấu tạo từ những thành phần cơ

bản, gọi là âm vị. Ví dụ như, từ “cat” được cấu tạo từ chuỗi âm vị /kæt/. Âm vị

được đề cập trong các từ điển ví dụ: Oxford English Dictionary, nó chứa đựng

nhiều thông tin về việc một từ được phát âm như thế nào, nhưng điều đó

không đủ cho hệ thống nhận dạng. Khi một âm vị được nói thì nó bị ảnh

hưởng bởi ngữ cảnh lúc đó. Ví dụ, nó sẽ được kéo dài nếu nó ở vị trí kết thúc,

hoặc có thể nó bị ảnh hưởng bởi âm vị trước và sau nó trong một từ. Những

âm vị khi được phát âm ra gọi là âm tố, âm tố đôi khi có thể được tiên đoán

bằng cách dựa trên những quy tắc chính tả.

60

Xét ví dụ, từ can được biểu diễn bởi chuỗi âm vị /kæn/. Trong tiếng

Anh nói có hiện tượng thông thường là những nguyên âm không nhấn được

nói giảm. Khi một nguyên âm được nói giảm, nó không được phát âm cẩn

schwa hơi khác so với âm tố ban đầu, và nó rất ngắn. Tuy nhiên cũng có khi

thận, và được nói lướt kết quả là nó trở thành nguyên âm schwa. Nguyên âm

người nói phát âm cẩn thận thì nó là trở âm tố ban đầu. Do đó từ can có thể có

hai dạng âm [kæn] và [kən]

Danh sách các âm vị trong tiếng Anh

Vowels and Diphthongs

Phonemes Word Examples

Description

iy Feel, eve, me front close unrounded

ih Fill, hit, lid front close unrounded (lax)

ae

at, carry, gas

front open unrounded (tense)

aa father, ah, car back open rounded

ah cut, bud, up open mid-back rounded

ao Dog, lawn, caught open-mid back round

ay tie, ice, bite diphthong with quality: aa + ih

ax ago, comply central close mid (schwa)

ey

ate, day, tape

front close-mid unrounded (tense)

eh pet, berry, ten front open-mid unrounded

er turn, fur, meter central open-mid unrounded

ow go, own, town back close-mid rounded

aw foul, how, our diphthong with quality: aa + uh

oy toy, coin, oil diphthong with quality: ao + ih

uh book, pull, good back close-mid unrounded (lax)

uw tool, crew, moo back close round

61

Consonants and Liquids

Phonemes Word Examples

Description

b

big, able, tab

voiced bilabial plosive

p

put, open, tap

voiceless bilabial plosive

d

dig, idea, wad

voiced alveolar plosive

t

talk, sat

voiceless alveolar plosive

g

gut, angle, tag

voiced velar plosive

t Meter alveolar flap

g

gut, angle, tag

voiced velar plosive

k

cut, ken, take

voiceless velar plosive

f

Fork, after, if

voiceless labiodental fricative

v

vat, over, have

voiced labiodental fricative

s

sit, cast, toss

voiceless alveolar fricative

z

zap, lazy, haze

voiced alveolar fricative

th

thin, nothing, truth

voiceless dental fricative

dh

then, father, scythe

voiced bilabial plosive

sh

she, cushion, wash

voiceless postalveolar fricative

zh

genre, azure

voice postalveolar fricative

l

lid

alveolar lateral approximant

l elbow, sail velar lateral approximant

r

red, part, far

retroflex approximant

y

yacht, yard

palatal sonorant glide

w

with, away

labiovelar sonorant glide

hh

help, ahead, hotel

voiceless glottal fricative

m

mat, amid, aim

biliabial nasal

n

no, end, pan

alveolar nasal

ng sing, anger velar nasal

ch

chin, archer, march

voiceless alveolar affricate: t + sh

jh

joy, agile, edge

voiced alveolar affricate: d + zh

62

3.3.2 Mô hình âm vị

Một khi có nhiều dạng âm cho một từ thì nó cần phải xác định xem mô

hình nào sẽ dược dùng để có thể nhận dạng được từ đó. Nếu như đủ dữ liệu

huấn luyện và những mô hình tốt nhất là mô hình từ, ứng với một mô hình là

một dạng âm của từ. Khi đó số lượng dữ liệu huấn luyện là rất lớn, thường là

quá lớn để có thể thực nghiệm và số lượng phép tính để có thể nhận dạng là rất

lớn thậm chí với một số ít các từ vựng.

Để giải quyết được vấn đề trên, người ta chia từ ra thành nhiệu âm vị,

mỗi âm vị có các dạng âm (âm tố) và ứng với mỗi mô hình là một dạng âm tố.

Sau đó kết nối chúng lại với nhau thành các từ trong từ vựng để nhận dạng. Ví

dụ như từ cat có thể được kết nối từ những âm tố [k], [a], và [t]

Cách này có nhiều ưu điểm như số lượng mô hình cần dùng nhỏ gần

bằng với đơn vị cơ bản của ngôn ngữ (trong tiếng Anh khoảng 45), điều này sẽ

giảm đáng kể số lượng phép tính phức tạp, hơn nữa số lượng dữ liệu dùng để

nhận dạng là nhỏ.

3.3.3 Tha âm vị (allophones)

Sử dụng mô hình âm vị như là một đơn vị trong từ chỉ là yêu cầu trực

giác. Khi mô hình bất kỳ từ nào (đưa ra cách phát âm của nó) là đơn giản cho

rằng từ đó được tạo từ âm vị. Tuy nhiên, thực tế thì cùng một âm vị sẽ có thể

rất khác nhau tùy thuộc vào ngữ cảnh âm vị (ngữ cảnh âm vị được đề cập như

các âm vị trước và sau nó, vị trí của nó trong từ, trong đoạn trong câu). Ví dụ

[t] trong từ string sẽ hơi khác so với [t] trong cat.

Để phân biệt các trường hợp khác nhau của cùng một âm vị, người ta

dùng tha âm vị. Ví dụ, [t] trong từ string sẽ được đặt là [t1] được sử dụng khi

[t] nằm giữa [s] và [r], còn đối với [t] trong cat sẽ được đặt là [t2] và được sử

dụng khi mà [t] nằm ở vị trí kết thúc 1 từ.

63

Chính xác loại tha âm vị nào, và có bao nhiêu tha âm vị được dùng vẫn

đang còn là vấn đề cần giải quyết. Nếu số lượng tha âm vị càng lớn thì số biến

của mô hình các tha âm vị đó càng giảm. Nhưng nếu số tha âm vị càng lớn sẽ

càng tăng số lượng mô hình cần dùng.

Có hai loại tha âm vị đơn giản là triphone và biphone. Triphone có ngữ

cảnh âm vị phụ thuộc vào âm vị trước và sau nó. Ví dụ, [t] trong từ string sẽ

có tha âm vị là [s#t#r] và [t] trong từ cat có tha âm vị là [a#t#]. Chú ý dấu #

chỉ để phân cách, [s#t#r] cách ký hiệu đó có nghĩa là tha âm vị đó là của [t]

với [t] đặt trong ngữ cảnh âm vị là [s] trước nó và [r] sau nó. Triphone đơn

giản có hiệu qua, nhưng có vài điểm bất lợi. Thứ nhất, cần phải huấn luyện

nhiều, không đủ trường hợp để huấn luyện hết tất cả mô hình tha âm vị. Khi

tầng suất xuất hiện của tha âm vị là thấp, thì không đủ để phân biệt giữa các

tha âm vị của một âm vị. Thứ hai, các triphone có thể cần thiết trong việc nhận

dạng nhưng không có sẵn trong tập huấn luyện. Thực ra, triphone trong [E#t#]

(trong từ bet) thì khá giống với [a#t#], và cũng thật là mất công khi cố gắng

phân biệt.

Loại tha âm vị thứ hai là biphone, nó tương tự như triphone nhưng nó

có thể giải quyết được các khuyết điểm của triphone. Nó dựa trên ngữ cảnh âm

vị là chỉ chịu sự ảnh hưởng của âm vị đi theo sau nó. Biphone cũng có những

hạn chế nhưng ít bị ảnh hưởng hơn, nó tổng quát hơn, khả năng xuất hiện của

nó trong các từ cũng cao hơn. Hơn nữa số lượng mô hình của biphone cũng

thấp hơn của triphone.

Còn một cách nữa đó là thuật toán dựa trên cơ sở cây quyết định nhị

phân. Cây nhị phân này có lá là các tha âm vị, các nút con là các câu hỏi nhị

phân (như: “Is the phone to the left a liquid?”). Khi trả lời là Yes thì một nhánh

được chọn, nếu No thì nhánh kia được chọn. Huấn luyện cây quyết định cho

từng âm vị, một danh sách các câu hỏi có thể được tạo ra, và dữ liệu huấn

luyện được lặp đi lặp lại và phân chia thành các tha âm vị bằng cách chọn nút

64

lá và những câu hỏi thích hợp nhất với dữ liệu huấn luyện. Kỹ thuận lợi là có

thể khám phá ra nhiều hơn các luật chung về âm vị hơn biphone hay triphone.

Với biphone và triphone nếu một mô hình cụ thể không có xuất hiện đủ trong

tập huấn luyện, thì nó không được huấn luyện và một mô hình độc lập ngữ

cánh đượcc dùng thay thế, thậm chí nếu đã có một mô hình khác được huấn

luyện gần giống với nó. Sử dụng cây quyết định thì trong trường hợp trên nó

sẽ được tìm thấy bởi giải thuật huấn luyện và một mô hình gần giống nhất sẽ

được thay thế. Điểm bất lợi của cây quyết định là không rõ cần bao nhiêu dữ

liệu huấn luyện là đủ, và không dễ để xác định tha âm vị nào được chọn một

hợp lý.

3.3.4 Nhận xét

Mặc dù trong tiếng Việt số tiếng có thể có là giới hạn (chỉ khoảng

7000-8000 tiếng), nhưng nếu đứng ở góc độ nhận dạng tiếng nói thì số lượng

đó là đáng kể. Do đó, khả năng ứng dụng mô hình âm vị vào trong tiếng Việt

để cho có thể tăng số từ trong bộ từ vựng hệ thống nhận dạng là rất đáng xem

xét.

Tuy nhiên, việc thực hiện cũng không phải là điều dễ. Vấn đề muôn

thuở vẫn là thanh điệu trong tiếng Việt. Ở đây, sau khi xem xét, em nhận thấy

mặc dù thanh điệu ảnh hưởng toàn bộ tiếng trong Tiếng Việt, nhưng nó ảnh

hưởng lớn nhất vẫn là ở các nguyên âm. Do đó, ta có một giải pháp như sau:

Giải pháp cho việc áp dụng mô hình âm vị vào nhận dạng Tiếng Việt:

Ta xét các âm vị bao gồm các dạng sau:

• Các phụ âm bao gồm: b, d, đ, g, h, k, l, m, n, p, r, s, t, v, x, ch, th,

kh, qu, nh

• Các nguyên âm bao gồm cả dấu thanh điệu: a, á, à, ả, ạ, ã, â, ấ, ầ, ẫ,

ẩ, ậ, ă, ằ, ắ, ẳ, ẵ, ặ, e, é, è, ẻ, ẽ, ẹ, ê, ế, ề, ể, ễ, ệ, i, í, ì, ỉ, ĩ, ị, o, ó, ò, ỏ,

65

õ, ọ, ô, ố, ồ, ổ, ỗ, ộ, ơ, ớ, ờ, ở, ỡ, ợ, u, ú, ù, ủ, ũ, ụ, ư, ứ, ừ, ử, ữ, ự,

ai, ái, ải, ãi, ại….

Ta thấy tổng số âm vị không nhiều lắm, có thể áp dụng được. Tuy nhiên

vẫn là quá nhiều đối với nhận dạng theo mô hình âm vị, và trong thực tế thử

nghiệm chương trình thử nghiệm hoạt động kém hiệu quả. Công sức bỏ ra

nhiều hơn kết quả mong đợi, nó chỉ mang lại hiệu quả trong quá trình nhận

dạng các phụ âm cho nên độ chính xác của mô hình là không cao.

Để giải quyết vấn đề này một cách triệt để thì ta cần phải đào sâu vào

dạng nhận dạng đa luồng.

Đề xuất cho nhận dạng đa luồng:

Mô hình gồm hai luồng nhận dạng song song:

• Luồng thứ nhất sử dụng vector đặc trưng gồm các thành phần:

MFCC tĩnh và các đạo hàm bậc nhất và bậc hai của nó (bởi vì

MFCC tỏ ra hiệu quả trong việc lọc đi mức độ phụ thuộc người nói,

và độ nhiễu, độ ồn nền, và thanh điệu trong tiếng nói).

• Luồng thứ hai sử dụng vector đặc trưng gồm các thành phần: mức

năng lượng E, tần số cơ bản F0, và các đạo hàm bậc nhất bậc hai

của chúng.

Hai luồng này sẽ sử dụng hai tập mô hình Markov và chúng sẽ kết hợp

lại với nhau và cho ra kết quả. Cách này có thể áp dụng cho cả mô hình nhận

dạng nguyên tiếng và mô hình âm vị.

Tuy nhiên, khi thử nghiệm thì vector đặc trưng ở luồng thứ hai có độ

hội tụ thấp, tốc độ xử lý còn chậm nên khó ứng dạng thực tế được. Để giải

quyết ta cần cải tiến thêm về vector đặc trưng này.

66

Chương 4 HMM TOOLKIT

Hình 4.1: Mô hình đơn giản trong nhận dạng tiếng nói

Young và nhóm nghiên cứu của ông. Nó tích hợp hầu hết các kỹ thuật về mô hình

HMM ToolKit (HTK) là một công cụ hỗ trợ nhận dạng mạnh mẽ của Steve

Markov ẩn và các kỹ thuật về xử lý tiếng nói và nhận dạng tiếng nói. Bên cạnh đó,

nó còn kết hợp cả mô hình ngôn ngữ, cú pháp văn phạm, điều này giúp cho việc

nhận dạng hiệu quả hơn. Các chức năng và cấu trúc của nó thể hiện qua các hình 4.2

và 4.3

67

Hình 4.2: Các module và chức năng trong HTK

68

Hình 4.3: Các công cụ và chức năng trong HTK

4.1 Cấu trúc tập tin trong HTK

4.1.1 Cấu trúc tập tin vector đặc trưng HTK

Cấu trúc tập tin vector HTK có thể được minh họa qua cấu trúc sau:

{

struct FeatureVectorFile

}

long nSamples; //số mẫu trong tập tin long sampPeriod; //tần số của mẫu = tần số window (tính theo 100ns) short int sampSize; //số byte trên mỗi mẫu = số chiều vector * 4 short int parmKind; //loại mẫu FeatureVector sample[nSample]; //sizeof(FeatureVector) = sampSize

69

Với parmKind định nghĩa như sau: (gồm 6 bit cuối)

• 0: WAVEFORM (sampled waveform)

• 1: LPC (Linear Prediction Filter Coefficients)

• 2: LPREFC (Linear Prediction Reflection Coefficients)

• 3: LPCEPSTRA (LPC Cepstral Coefficients)

• 4: LPDELCEP (LPC Cepstra plus Delta Coefficients)

• 5: IREFC (LPC Reflection Coef in 16 bit integer format)

• 6: MFCC (Mel-Frequency Cepstral Coefficients)

• 7: FBANK (Log Mel-Filter bank channel outputs)

• 8: MELSPEC (Linear Mel-filter bank channel outputs)

• 9: USER (User defined sample kind)

• 10: DISCRETE - vector quantised data

Và các bit còn lại sẽ quy định các dạng hỗ trợ thêm của tập tin vector

đặc trưng như sau (dùng số hệ cơ số 8):

• 000100 (ký hiệu _E): có đặc trưng năng lượng

• 000200 (ký hiệu _N): năng lượng tĩnh bị loại bỏ

• 000400 (ký hiệu _D): có các hệ số đạo hàm cấp 1

• 001000 (ký hiệu _A): có các hệ số đạo hàm cấp 2

• 002000 (ký hiệu _C): có nén dữ liệu

• 004000 (ký hiệu _Z): có thực hiện zero mean các hệ số tĩnh.

• 010000 (ký hiệu _K): có kiểm lỗi CRC

• 020000 (ký hiệu _0): có hệ số Cepstral thứ 0 (đầu tiên).

Xét ví dụ cụ thể sau:

70

Hình 4.4: Phân bố các tham số trong 1 số vector đặc trưng của HTK

Hình 4.5: Các dạng đặc trưng có thể chuyển đổi qua lại bằng HCopy

4.1.2 Cấu trúc tập tin mô hình HMM

71

Hình 4.6: Dạng cơ bản của 1 tập tin HMM (chưa được khởi tạo)

(còn gọi là HMM prototype)

Tập tin mô hình HMM được mở đầu bằng: ~h “Tên mô hình”

Phần thân được bao bọc bởi 2 tab:

Nó bao gồm nhiều trạng thái (state), số trạng thái được đặt sau tab

. Mỗi trạng thái bao bọc bởi tab đánh trạng thái và tab đánh

dấu của trạng thái sau nó, hoặc tab đánh dấu ma trận chuyển trạng thái .

Trong mỗi trạng thái có thể có 1 hoặc nhiều luồng (stream), tab dùng

để đánh dấu số luồng và trọng số của từng luồng, mỗi luồng mở đầu bằng tab

kết thúc khi gặp luồng kế tiếp hoặc trạng thái kế tiếp. Trong mỗi luồng có

72

thể có 1 hoặc nhiều pha trộn Gaussian, số pha trộn được đánh dấu bằng tab

. Ứng với mỗi tab là số thứ tự và trọng số của mixture đó,

tổng số trọng số của tất cả mixture trong 1 luồng là phải = 1. Trong mỗi mixture có

2 vector đánh dấu bằng tab , các vector này bao gồm số

chiều vector được đặt ở đầu, sau đó là nội dung vector (gồm số chiều số float).

Các tập tin này sẽ được người sử dụng HTK tự tạo lấy cho phù hợp với mục

đích của mình, đặc biệt là có thể thay đổi số chiều của vector đặc trưng, loại vector

đặc trưng (bao gồm các loại cơ bản được hỗ trợ và vector tự định nghĩa (cid:198) có thể áp

dụng công cụ vào nhận dạng một cách uyển chuyển hơn, từ đó ta có thể đưa vào các

dạng vector đặc trưng phù hợp với ngôn ngữ Tiếng Việt.)

Sau đó các tập tin này sẽ được khởi tạo bằng các công cụ như: HInit hay

HCompV.

73

Hình 4.7: Dạng cơ bản của 1 tập tin HMM có sử dụng pha trộn Gaussian

74

Hình 4.8: Dạng cơ bản của 1 tập tin HMM có sử dụng đa luồng

4.1.3 Cấu trúc tập tin đánh nhãn dữ liệu

Mỗi tập tin đánh nhãn dữ liệu (Label File) dùng để đánh nhãn cho một tập

tin dữ liệu (được đặt cùng tên với tập tin dữ liệu nhưng khác kiểu, mặc định là .lab),

mỗi dòng đánh dấu cho vị trí bắt đầu và kết thúc cho từng âm vị hoặc cho từng từ.

[start [end] ] name [score] { auxname [auxscore] } [comment]

Mỗi dòng có cú pháp sau:

75

Với start đánh dấu vị trí bắt đầu, end đánh dấu vị trí kết thúc trong dữ liệu

theo đơn vị 100ns của name với mức độ chắc chắn score, và name nằm trong

auxname với mức độ chắc chắn auxscore, và cuối cùng là ghi chú của người đánh

nhãn. Trong đó name là một bộ phận của auxname, ví dụ như là, âm vị trong tiếng,

tiếng trong từ, …

Ví dụ:

ice

cream

0000000 2200000 3600000 4300000 5000000 7400000 ay 2200000 s 3600000 k 4300000 r 5000000 7400000 iy 8200000 m

Để thuận tiện trong việc đánh nhãn, nhất là khi các dữ liệu được đánh nhãn

giống nhau, HTK có hỗ trợ thêm dạng tập tin đánh nhãn tốt hơn (Master Label

File). Nó có cú pháp như sau:

76

MLF = “#!MLF!#” MLFDef { MLFDef }

MLFDef = ImmediateTranscription | SubDirDef

ImmediateTranscription = Pattern

Transcription “.”

SubDirDef = Pattern SearchMode String

SearchMode = “->” | “=>”

Pattern = String

Trong đó String là một chuỗi ký tự, có thể chứa những ký tự ‘?’ và ‘*’ dùng

làm ký tự đại diện, ‘?’ thay thế cho một ký tự và ‘*’ thay cho 0 hoặc nhiều ký tự.

Cú pháp trên có thể minh họa qua các ví dụ sau:

Ví dụ 1: Nếu như ta có hai tập tin đánh nhãn như sau

Tập tin a.lab chứa các dòng sau

000000 590000 sil 600000 2090000 a 2100000 4500000 sil

Và tập tin b.lab chứa

000000 990000 sil 1000000 3090000 b 3100000 4200000 sil

Thì tập tin Master Label được dùng thay thế sẽ chứa

#!MLF!# "*/a.lab" 000000 590000 sil 600000 2090000 a 2100000 4500000 sil . "*/b.lab" 000000 990000 sil 1000000 3090000 b 3100000 4200000 sil .

77

Ví dụ 2: Nếu như ta có các tập tin dữ liệu huấn luyện gồm: nhanh.001.mfc,

nhanh.002.mfc, …, nhanh.100.mfc và tất cả chúng đều chứa chuỗi vector đặc trưng

của từ “nhanh” thì ta có thể tạo Master Label như sau

4.1.4 Cấu trúc tập tin văn phạm

Hình 4.9: Vai trò của văn phạm trong nhận dạng dùng HTK

#!MLF!# "*/nhanh.???.lab" nhanh .

78

Tập tin mô hình ngôn ngữ trong HTK được tạo từ tập tin siêu ngôn ngữ

(ngôn ngữ đặc tả) qua công cụ HParse và HBuild

(

Start < bit | but > End

)

Ví dụ ta có đoạn văn phạm định nghĩa bằng siêu ngôn ngữ sau:

Hình 4.10: Lược đồ văn phạm

Nó biểu diễn cho mô hình bên dưới

# Khai báo các tham số của mạng (ở đây là đồ thị có hướng) # N=số nút và L=số cạnh N=4 L=8 # Danh sách nút: I=số thứ tự nút, W=từ I=0 W=start I=1 W=end I=2 W=bit I=3 W=but # Danh sách cạnh: J=số thứ tự cạnh, S=nút bắt đầu, E=nút kết thúc J=0 S=0 E=2 J=1 S=0 E=3 J=2 S=3 E=1 J=3 S=2 E=1 J=4 S=2 E=3 J=5 S=3 E=3 J=6 S=3 E=2 J=7 S=2 E=2

Sau khi qua công cụ HParse tạo ra tập tin dạng sau đây

Một số ví dụ khác:

79

a) Ví dụ 1 (Xem hình 4.9 a)

( one | two | three | four | five | six | seven | eight | nine | zero )

b) Ví dụ 2 (Xem hình 4.9b)

( sil (one | two | three | four | five | six | seven | eight | nine | zero) sil )

c) Ví dụ 3(Xem hình 4.9c)

$digit = one | two | three | four | five | six | seven | eight | nine | zero; ( sil < $digit > sil )

d)Ví dụ 4( Xem hình 4.9d)

$digit = one | two | three | four | five | six | seven | eight | nine | zero; ( [sil] < $digit > [sil] )

Hình 4.11: Mô hình minh họa các văn phạm

80

4.2 Nhận dạng nguyên từ

Hình 4.12: Minh họa việc nhận dạng nguyên từ

Phương pháp nhận dạng nguyên từ sẽ được thực hiện thông qua các công cụ

của HTK là: HInit, HCompV, HRest để huấn luyện tạo ra các tập tin mô hình đã

được ước lượng lại (reestimate) trong quá trình huấn luyện. Còn đối với quá trình

nhận dạng, có sự tham gia của HParse và HVite.

Tập mẫu dùng để huấn luyện là các tập tin chứa chuỗi vector đặc trưng thu

được bằng cách dùng HCopy, nó được dùng để rút trích đặc trưng của tín hiệu âm

thanh trong tập tin .Wav.

81

Trong quá trình huấn luyện, HInit và HCompV sẽ tham gia vào quá trình khởi

tạo các tham số của mô hình, chúng sẽ khởi tạo các tham số trong HMM prototype

dựa trên tập mẫu huấn luyện, quá trình này sẽ tạo ra HMM đã được khởi tạo. Sau đó

HRest sẽ đảm nhiệm việc huấn luyện, HRest sẽ dùng tập huấn luyện huấn luyện mô

hình đã được khởi tạo, quá trình này được thực hiện lần lược cho từng mô hình (mỗi

mô hình ứng với một từ trong tập từ vựng cần nhận dạng), ta thu được các mô hình

sẵn sàng cho việc nhận dạng.

Trước khi nhận dạng, HParse sẽ tạo ra một mô hình ngôn ngữ dùng trong nhận

dạng từ tập tin siêu ngôn ngữ. Sau đó, ứng với tín hiệu âm thanh cần nhận dạng, ta

tạo ra chuỗi vector đặc trưng (dùng HCopy) của nó. Khi đó, HVite sẽ đảm nhiệm

nhận dạng, nó sử dụng mô hình ngôn ngữ và tập hợp các mô hình Markov ẩn để

Hình 4.13: Huấn luyện nguyên từ và các công cụ hỗ trợ

nhận dạng chuỗi vector cần nhận dạng.

82

Hình 4.15: Quy trình hoạt động của HCompV

Hình 4.14: Quy trình hoạt động của HInit

83

Hình 4.16: Quy trình hoạt động của HRest

84

4.3 Nhận dạng theo mô hình âm vị

Hình 4.17: Huấn luyện theo mô hình âm vị dùng HTK

Trong giai đoạn huấn luyện theo mô hình âm vị, các công cụ được dùng là

HInit, HRest, HcompV, HERest. Mô hình Markov ẩn có thể được khởi tạo bằng hai

cách, cách thứ nhất được sử dụng khi dữ liệu huấn luyện đã được đánh nhãn, cách

85

này sử dụng các công cụ HInit và HRest tạo ra các mô hình ứng với từng âm vị.

Cách thứ hai dùng HCompV để khởi tạo mô hình HMM đối với trường hợp dữ liệu

chưa được đánh nhãn (chỉ được mô tả), mô hình được khởi tạo sẽ được sao chép ra

nhiều bản ứng với từng âm vị. Sau quá trình khởi tạo, các mô hình được khởi tạo sẽ

được huấn luyện bằng HERest (nên huấn luyện hai lần). Sau đó, tập các mô hình

sẵn sàng để nhận dạng.

Công cụ HVite cũng được dùng để nhận dạng trong mô hình nhận dạng bằng

âm vị. Nó kết hợp với mô hình ngôn ngữ (tạo bởi HParse) và từ điển phát âm (mỗi

từ được định nghĩa thông qua cách phát âm của nó) (trong nhận dạng nguyên từ

HVite cũng cần từ điển phát âm nhưng chỉ là hình thức, các từ đơn giản có cách

phát âm là chính nó).

86

Hình 4.18: Quá trình xử lý các tập tin trong HERest

87

Chương 5 ỨNG DỤNG: ĐIỀU KHIỂN XE TỰ ĐỘNG

BẰNG TIẾNG NÓI

Các tiếng trong hệ nhận dạng điều khiển xe tự động gồm:

STT Tiếng Mô hình Lệnh thực hiện

1 trái trais Xe bẻ lái sang trái

2 phải phair Xe bẻ lái sang phải

3 thẳng thawngr Xe chạy thẳng

4 tiến tieens Xe chạy tới

5 lui lui Xe chạy lui

6 dừng duwngf Dừng xe lại

7 khoảng lặng sil Chỉ dùng trong nhận dạng

Hệ dùng 100 mẫu huấn luyện cho mỗi tiếng (tổng cộng 600 mẫu huấn

Hình 5.1: Mô hình ngôn ngữ dành cho hệ nhận dạng

luyện). Hệ dùng mô hình ngôn ngữ như sau:

88

5.1 Thử nghiệm nhận dạng tiếng nói Tiếng Việt

5.1.1 Nhận dạng tĩnh (offline)

5.1.1.1 Nhận dạng nguyên từ dùng LPCEPSTRA_E_D

Nhận dạng trên tập huấn luyện:

(cid:190) Số mẫu nhận dạng:

(cid:190) Số mẫu đúng:

600

600, đạt tỉ lệ: 100%

Nhận dạng trên tập dữ liệu mới:

(cid:190) Số mẫu dùng huấn luyện: 600

(cid:190) Số mẫu dùng để thử:

300

(cid:190) Số mẫu đúng:

300, đạt tỉ lệ: 100%

5.1.1.2 Nhận dạng nguyên từ dùng LPCEPSTRA_E_D_A

Nhận dạng trên tập huấn luyện:

(cid:190) Số mẫu nhận dạng:

(cid:190) Số mẫu đúng:

600

600, đạt tỉ lệ: 100%

Nhận dạng trên tập dữ liệu mới:

(cid:190) Số mẫu dùng huấn luyện: 600

(cid:190) Số mẫu dùng để thử:

300

(cid:190) Số mẫu đúng:

300, đạt tỉ lệ: 100%

Nhận xét: Trong hệ nhận dạng tiếng nói này, việc dùng dạng đặc trưng hệ

số Cepstral của LPC mà có cả hai đạo hàm bậc 1 và bậc 2 là không cần thiết

(vector 39 chiều), để tiết kiệm chi phí tính toán chỉ cần dùng 1 đạo hàm bậc 1,

có nghĩa là chỉ dùng dạng vector đặc trưng LPCEPSTRA_E_D (vector 26

chiều)

5.1.1.3 Nhận dạng nguyên từ dùng MFCC_0_D

Nhận dạng trên tập huấn luyện:

(cid:190) Số mẫu nhận dạng:

(cid:190) Số mẫu đúng:

600

600, đạt tỉ lệ: 100%

Nhận dạng trên tập dữ liệu mới:

(cid:190) Số mẫu dùng huấn luyện: 600

89

(cid:190) Số mẫu dùng để thử:

300

(cid:190) Số mẫu đúng:

300, đạt tỉ lệ: 100%

5.1.1.4 Nhận dạng nguyên từ dùng MFCC_0_D_A

Nhận dạng trên tập huấn luyện:

(cid:190) Số mẫu nhận dạng:

(cid:190) Số mẫu đúng:

600

600, đạt tỉ lệ: 100%

Nhận dạng trên tập dữ liệu mới:

(cid:190) Số mẫu dùng huấn luyện: 600

(cid:190) Số mẫu dùng để thử:

300

(cid:190) Số mẫu đúng:

300, đạt tỉ lệ: 100%

5.1.1.5 Nhận dạng nguyên từ dùng MFCC_0_D_A_Z

Nhận dạng trên tập huấn luyện:

(cid:190) Số mẫu nhận dạng:

(cid:190) Số mẫu đúng:

600

600, đạt tỉ lệ: 100%

Nhận dạng trên tập dữ liệu mới:

(cid:190) Số mẫu dùng huấn luyện: 600

(cid:190) Số mẫu dùng để thử:

300

(cid:190) Số mẫu đúng:

300, đạt tỉ lệ: 100%

5.1.1.6 Nhận dạng theo mô hình âm vị triphone dùng

MFCC_0_D_A_Z Nhận dạng trên tập huấn luyện:

(cid:190) Số mẫu nhận dạng:

(cid:190) Số mẫu đúng:

600

600, đạt tỉ lệ: 100%

Nhận dạng trên tập dữ liệu mới:

(cid:190) Số mẫu dùng huấn luyện: 600

(cid:190) Số mẫu dùng để thử:

300

(cid:190) Số mẫu đúng:

300, đạt tỉ lệ: 100%

90

5.1.2 Nhận dạng thời gian thực (online)

5.1.2.1 Nhận dạng nguyên từ dùng MFCC_0_D_A_Z

(cid:190) Số mẫu dùng huấn luyện: 600

(cid:190) Số mẫu dùng để thử:

180

o trais:

(cid:131) Đúng:

30

(cid:131) Sai:

21

(cid:131) Tỉ lệ đúng: 96.67%

1 (nhận dạng ra duwngf)

o phair:

(cid:131) Đúng:

30

(cid:131) Sai:

28

(cid:131) Tỉ lệ đúng: 93.33%

2 (nhận dạng ra trais)

o thawngr:

(cid:131) Đúng:

30

(cid:131) Sai:

29

(cid:131) Tỉ lệ đúng: 96.67%

1 (nhận dạng ra phair)

o tieens:

(cid:131) Đúng:

30

(cid:131) Sai:

28

(cid:131) Tỉ lệ đúng: 93.33%

2 (nhận dạng ra duwngf)

o lui:

(cid:131) Đúng:

30

(cid:131) Tỉ lệ đúng: 100%

30

o duwngf:

(cid:131) Đúng:

30

(cid:131) Tỉ lệ đúng: 100%

(cid:190) Tổng số mẫu đúng:

30

174, đạt tỉ lệ: 96.67%

91

5.1.2.2 Nhận dạng theo mô hình âm vị triphone dùng

MFCC_0_D_A_Z

(cid:190) Số mẫu dùng huấn luyện: 600

(cid:190) Số mẫu dùng để thử:

180

o trais:

(cid:131) Đúng:

30

(cid:131) Sai:

28

(cid:131) Tỉ lệ đúng: 96.67%

1 (nhận dạng ra duwngf)

o phair:

(cid:131) Đúng:

30

(cid:131) Sai:

28

(cid:131) Tỉ lệ đúng: 93.33%

1 (nhận dạng ra trais)

o thawngr:

(cid:131) Đúng:

30

(cid:131) Sai:

30

(cid:131) Tỉ lệ đúng: 93.33%

1 (nhận dạng ra phair)

o tieens:

(cid:131) Đúng:

30

(cid:131) Sai:

28

(cid:131) Tỉ lệ đúng: 93.33%

2 (nhận dạng ra duwngf)

o lui:

(cid:131) Đúng:

30

(cid:131) Tỉ lệ đúng: 100%

30

o duwngf:

(cid:131) Đúng:

30

(cid:131) Tỉ lệ đúng: 100%

(cid:190) Tổng số mẫu đúng:

30

175, đạt tỉ lệ: 97.22%

92

5.2 Ứng dụng nhận dạng tiếng nói

Từ thử nghiệm trên, hệ nhận dạng điều khiển xe tự động dùng mô hình nhận

dạng theo âm vị triphone dùng MFCC_0_D_A_Z.

Mô hình hoạt động của chương trình ứng dụng

Thu tín hiệu (theo từng khung)

Trích đặc trưng

Micro

Xử lý và ra lệnh

Nhận dạng

Thiết bị Tập mô hình HMM

Mô hình ngôn ngữ

Một số hình ảnh về thiết bị.

93

94

95

KẾT LUẬN

Sau quá trình nghiên cứu nhận dạng tiếng nói Tiếng Việt, luận văn đã làm được một

số công việc như sau:

• Khảo sát các đặc trưng tiếng nói, thử áp dụng vào nhận dạng tiếng nói Tiếng

Việt.

• Khảo sát mô hình âm vị, thử nghiệm và ứng dụng mô hình nhận dạng bằng

âm vị triphone

• Cài đặt hệ nhận dạng thời gian thực ứng dụng vào điều khiển thiết bị

Trong giới hạn thời gian và sức lực của một người, em mới chỉ có khởi đầu tiếp

cận nghiên cứu về nhận dạng tiếng nói, vì vậy chắc chắn trong luận văn còn

nhiều thiếu sót. So với sự phát triển nhận dạng thì các kết quả đạt được trong

luận văn không đáng kể, nhưng em mong rằng luận văn này sẽ góp một phần

vào việc thúc đẩy nghiên cứu và ứng dụng của hệ nhận dạng tiếng nói Tiếng

Việt.

Chương trình ứng dụng Demo được cài đặt trên hệ thống với các thông số như

sau:

• Máy PC AMD XP 2500+ 1.8 GHz, FSB 333, 512 MB DDR.

• Card âm thanh onboard

• Micro dùng để thu dùng để thu âm dạng cầm tay.

• Tiếng nói được thu với tần số lấy mẫu 16000Hz, kích thước mỗi mẫu

là 16 bit.

Hướng phát triển:

Trong thời gian ngắn, lượng dữ liệu thu vào chưa phong phú (độ đa dạng và số lượng), cho nên kết quả chưa được chính xác. Do đó, có thể cải tiến được độ chính xác của hệ nhận dạng bằng cách tăng cường về mặt dữ liệu huấn luyện.

96

Khảo sát thêm các đặc điểm ngữ âm của Tiếng Việt mà có ảnh hưởng đến thanh điệu, từ đó có thể tạo ra các vector đặc trưng tốt hơn, có khả năng đặc trưng cho tiếng nói Tiếng Việt cao hơn. Đây là hướng phát triển khả quan trong tương lai.

Việc tách các tiếng trong một chuỗi tín hiệu hiện nay chỉ dừng ở mức kiểm tra mức năng lượng của nó, điều này dẫn đến việc tách các từ trong chuỗi âm có tỉ lệ chính xác không cao. Có thể dùng các đặc tính của tần số cơ bản để hỗ trợ thêm cho việc tách từ và loại bỏ những khoảng lặng, độ ồn nền và nhiễu.

97

TÀI LIỆU THAM KHẢO

[1]

Christine Englund, Speech recognition in the JAS 39 Gripen aircraft adaptation to speech at different G-loads, 2004, pp. 2 - 5

[2] Steve Young et all, “The HTK Book”, the Cambridge University

Engineering Department, July 2000

[3]

Lawrence Rabiner and Biing-Hwang Juang, “Fundamentals of Speech Recognition”, Prentice Hall, 1993

[4] Đỗ Xuân Đạt -Võ Văn Tuấn, Luận văn tốt nghiệp Khoa CNTT – ĐH KHTN,

2003

[5] Bob Dunn, Speech Signal Processing and Speech Recognition, 29 April 2003

[6] Arnon Cohen and Yaniv Zigel, Feature Selection in Speaker Verification Systems, Electrical and Computer Eng. Dept., Ben-Gurion University, Beer- Sheva, Israel

[7] Keiichi Tokuda, HMM-Based Speech Synthesis toward Human-like Talking

Machines

98

Phụ lục MỘT SỐ CÔNG CỤ TRONG HTK

1. HCopy

HCopy là công cụ của HTK dùng để chuyển đổi các dạng tập tin được hỗ trợ

bởi HTK (xem hình 4.5), là công cụ để rút trích đặc trưng trong tập tin chứa tiếng

nói. HCopy có thể được sử dụng theo cách sau:

Bước 1: Tạo một tập tin script (chẳng hạn như đặt tên là convert.scp) dùng

để chứa tên các tập tin cần chuyển đổi và tên các tập tin kết quả.

Mỗi dòng trong tập tin script chứa:

Tên_tập_tin_cần_xử_lý Tên_tập_tin_kết_quả_tương_ứng

Ví dụ:

Data\Nhanh\Wav\nhanh.001.wav Data\Nhanh\MFCC\nhanh.001.mfcc Data\Nhanh\Wav\nhanh.002.wav Data\Nhanh\MFCC\nhanh.002.mfcc Data\Nhanh\Wav\nhanh.003.wav Data\Nhanh\MFCC\nhanh.003.mfcc Data\Nhanh\Wav\nhanh.004.wav Data\Nhanh\MFCC\nhanh.004.mfcc Data\Nhanh\Wav\nhanh.005.wav Data\Nhanh\MFCC\nhanh.005.mfcc Data\Nhanh\Wav\nhanh.006.wav Data\Nhanh\MFCC\nhanh.006.mfcc

Bước 2: Tạo một tập tin cấu hình chứa các thông tin (đặt tên là HCopy.cfg)

như kiểu tập tin nguồn, kiểu tập tin đích, tần số nguồn và đích,

kích thước cửa sổ (đều tính bằng 100ns) (các thuộc tính khác để

mặc định)

Ví dụ:

= WAVEFORM

= 625

= 100000

= 250000.0 SOURCEKIND #dạng hình sóng SOURCEFORMAT = WAV #kiểu tập tin .wav SOURCERATE #tần số tập tin nguồn 16KHz TARGETKIND = LPCEPSTRA #kiểu tập tin kết quả là LPCEPSTRA TARGETFORMAT = HTK #kiểu tập tin HTK TARGETRATE #tần số tập tin kết quả 100Hz WINDOWSIZE #kích thước cửa sổ 25ms

99

Bước 3: Thực thi HCopy với dòng lệnh và các tham số là các tập tin tạo

được, chẳng hạn như sau:

HCopy –C HCopy.cfg –S convert.scp

Kết thúc quá trình, ta sẽ tạo ra các tập tin kết quả như mong muốn.

2. HCompV

HCompV được dùng để khởi tạo mô hình Markov ẩn khi tập huấn luyện

chưa được đánh nhãn, có thể sử dụng bằng cách sau:

Bước 1: Tạo tập tin script chứa tất cả các tập tin dùng để huấn luyện

(chẳng hạn đặt tên là train.scp).

Bước 2: Tạo tập tin mô hình HMM prototype (tên proto).

Bước 3: Thực thi HCompV với dòng lệnh và các tham số, chẳng hạn như:

HCompV –S train.scp proto

Kết thúc quá trình ta thu được HMM đã được khởi tạo trong tập tin “proto”

3. HInit

HInit được dùng để khởi tạo mô hình Markov ẩn với tập huấn luyện đã được

đánh nhãn hoặc mỗi tập tin dùng để huấn luyện chỉ chứa một từ (hoặc là âm vị) ứng

với một tập tin mô hình, có thể sử dụng bằng cách sau:

Bước 1: Tạo tập tin script chứa tất cả các tập tin dùng để huấn luyện

(chẳng hạn đặt tên là train.scp).

Bước 2: Tạo tập tin mô hình HMM prototype (tên proto).

Bước 3: Thực thi HInit với dòng lệnh và các tham số của nó, chẳng hạn

như sau:

HInit –S train.scp proto

Kết thúc quá trình ta thu được HMM đã được khởi tạo trong tập tin “proto”

4. HParse

HParse được dùng để tạo tập tin mô hình ngôn ngữ (dạng mạng) từ tập tin

văn phạm, có thể sử dụng bằng cách sau:

100

Bước 1: Tạo tập tin văn phạm phù hợp với hệ thống nhận dạng đang xây

dựng (đặt tên là grammar), chẳng hạn như nó chứa nội dung như

( sil (one | two | three | four | five | six | seven | eight | nine | zero) sil )

sau:

Bước 2: Thực thi HParse với dòng lệnh và các tham số của nó, chẳng hạn

như sau:

HParse grammar lattice

Kết thúc quá trình ta thu được mạng ngôn ngữ trong tập tin lattice, tập tin

này được dùng trong HVite.

5. HRest

HRest được dùng để huấn luyện mô hình Markov ẩn, có thể sử dụng bằng

cách sau:

Bước 1: Tạo tập tin script chứa tất cả các tập tin dùng để huấn luyện

(chẳng hạn đặt tên là train.scp).

Bước 2: Khởi tạo tập tin mô hình HMM (bằng HInit hoặc HCompV)

(chẳng hạn với từ nhanh – tên tập tin HMM cũng là nhanh).

Bước 3: Thực thi HRest với dòng lệnh và các tham số, chẳng hạn như:

HRest –S train.scp nhanh

Kết thúc quá trình ta thu được HMM đã được huấn luyện trong tập tin

“nhanh”.

6. HERest

HERest được dùng để huấn luyện trong hệ nhận dạng tiếng nói bằng mô

hình âm vị, có thể sử dụng bằng cách sau:

Bước 1: Tạo tập tin script chứa tất cả các tập tin dùng để huấn luyện

(chẳng hạn đặt tên là train.scp).

Bước 2: Chuẩn bị các tập tin như: danh sách tên các mô hình HMM

hmmlist, tập các mô hình HMM đã được khởi tạo hmmset, Master

101

Label chứa tất cả mô tả (hoặc đánh nhãn) các dữ liệu huấn luyện

train.mlf.

Bước 3: Thực thi HERest với dòng lệnh và các tham số, chẳng hạn như:

HERest –I train.mlf –S train.scp –H hmmset hmmlist

Bước 3 nên thực hiện 2 lần, kết thúc quá trình ta thu được tập các mô hình

HMM đã được huấn luyện trong hmmset.

7. HVite

HVite được dùng để nhận dạng trong hệ nhận dạng tiếng nói bằng mô hình

Markov ẩn, có thể sử dụng bằng cách sau:

Bước 1: Tạo tập tin script chứa tất cả các tập tin cần nhận dạng (chẳng hạn

đặt tên là test.scp).

Bước 2: Chuẩn bị các tập tin như: từ điển phát âm dictionary, mạng ngôn

ngữ lattice, danh sách tên các mô hình HMM hmmlist, tập các mô

hình HMM đã được huấn luyện hmmset.

Bước 3: Thực thi HVite với dòng lệnh và các tham số, chẳng hạn như:

HVite –w lattice –i recout.mlf –S test.scp –H hmmset dictionary hmmlist

Kết thúc quá trình ta thu được tập tin recout.mlf, một tập tin Master Label

chứa mô tả các dữ liệu cần nhận dạng.

102