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. 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: sin Q
2 m
π⎛
⎜
Q
⎝ ⎞
⎟
⎠ ⎡
1
+⎢
⎣ ⎤
⎥
⎦ w(m) = , 1 ≤ m ≤ Q. 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. 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. 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 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ị). 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à 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 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. 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: 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. 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: đi lên như trong hình vẽ), đặt tên là X1. X,X
2 3 2 S x = − 12 23 ∑ x = x
X
= 12 x,X
1 23 2 47 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 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. 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 Á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: (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 (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. 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 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 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, 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 λ. 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 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 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 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 Hình 3.11: Minh họa việc nhận dạng âm vị trong HMM 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] iy Feel, eve, me front close unrounded ih Fill, hit, lid front close unrounded (lax) ae 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 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 b voiced bilabial plosive p voiceless bilabial plosive d voiced alveolar plosive t voiceless alveolar plosive g voiced velar plosive t Meter alveolar flap g voiced velar plosive k voiceless velar plosive f voiceless labiodental fricative v voiced labiodental fricative s voiceless alveolar fricative z voiced alveolar fricative th voiceless dental fricative dh voiced bilabial plosive sh voiceless postalveolar fricative zh voice postalveolar fricative l alveolar lateral approximant l elbow, sail velar lateral approximant r retroflex approximant y palatal sonorant glide w labiovelar sonorant glide hh voiceless glottal fricative m biliabial nasal n alveolar nasal ng sing, anger velar nasal ch voiceless alveolar affricate: t + sh jh voiced alveolar affricate: d + zh 62 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ỏ. 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ý. 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: 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. 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 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.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 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 để đá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 72 thể có 1 hoặc nhiều pha trộn Gaussian, số pha trộn được đánh dấu bằng tab 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 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ừ, … 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: 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 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 (
one | two | three | four | five |
six | seven | eight | nine | zero
) (
sil (one | two | three | four | five |
six | seven | eight | nine | zero) sil
) $digit = one | two | three | four | five |
six | seven | eight | nine | zero;
(
sil < $digit > sil
) $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 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 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 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 (cid:190) Số mẫu nhận dạng: (cid:190) Số mẫu đúng: 600 600, đạt tỉ lệ: 100% (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% (cid:190) Số mẫu nhận dạng: (cid:190) Số mẫu đúng: 600 600, đạt tỉ lệ: 100% (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% 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) (cid:190) Số mẫu nhận dạng: (cid:190) Số mẫu đúng: 600 600, đạt tỉ lệ: 100% (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% (cid:190) Số mẫu nhận dạng: (cid:190) Số mẫu đúng: 600 600, đạt tỉ lệ: 100% (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% (cid:190) Số mẫu nhận dạng: (cid:190) Số mẫu đúng: 600 600, đạt tỉ lệ: 100% (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% (cid:190) Số mẫu nhận dạng: (cid:190) Số mẫu đúng: 600 600, đạt tỉ lệ: 100% (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 (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 (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 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 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. 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 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: để 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 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 đượ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. 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: (chẳng hạn đặt tên là train.scp). 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” 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: (chẳng hạn đặt tên là train.scp). 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” 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 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: 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. HRest được dùng để huấn luyện mô hình Markov ẩn, có thể sử dụng bằng cách sau: (chẳng hạn đặt tên là train.scp). (chẳng hạn với từ nhanh – tên tập tin HMM cũng là nhanh). 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”. 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: (chẳng hạn đặt tên là train.scp). 101 Label chứa tất cả mô tả (hoặc đánh nhãn) các dữ liệu huấn luyện 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. 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: đặt tên là test.scp). 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. 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Đặt trọng số cho các hệ số cepstral
Công thức 2.17
Nhận xét
2.2.2.5 Đặc trưng tần số cơ bản
a) Phương pháp tự tương quan
Công thức 2.18
b) Lỗi LPC và phương pháp SIFT
c) Phương pháp dùng cepstral
d) Phương pháp CLIP
e) Hàm AMDF
Công thức 2.19
∑
f) Phương pháp so khớp biên độ
1. Dò tìm điểm cắt zero thứ nhất theo một chiều nào đó (ví dụ
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
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.
Làm trơn kết quả F0 bằng bộ lọc median
Chương 3 MÔ HÌNH MARKOV ẨN
3.1 Mô hình Markov ẩn
3.2 Ứng dụng Mô hình Markov vào nhận dạng tiếng nói
1. Tính điểm: Cho chuỗi quan sát O = {o1,o2,...,oT } và mô hình λ = {A, B,
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
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
3.2.1 Thuật toán tiến
3.2.2 Thuật toán lùi
3.2.3 Phương pháp tìm chuỗi trạng thái tối ưu
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
3.2.4 Thuật toán Viterbi
Số phép tính: N2T
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
∑
∑
3.3 Cấu trúc ngôn ngữ và mô hình nhận dạng theo âm vị
3.3.1 Cấu trúc ngôn ngữ
Danh sách các âm vị trong tiếng Anh
Vowels and Diphthongs
Phonemes Word Examples
Description
at, carry, gas
ate, day, tape
Consonants and Liquids
Phonemes Word Examples
Description
big, able, tab
put, open, tap
dig, idea, wad
talk, sat
gut, angle, tag
gut, angle, tag
cut, ken, take
Fork, after, if
vat, over, have
sit, cast, toss
zap, lazy, haze
thin, nothing, truth
then, father, scythe
she, cushion, wash
genre, azure
lid
red, part, far
yacht, yard
with, away
help, ahead, hotel
mat, amid, aim
no, end, pan
chin, archer, march
joy, agile, edge
3.3.2 Mô hình âm vị
3.3.3 Tha âm vị (allophones)
3.3.4 Nhận xét
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:
Đề xuất cho nhận dạng đa luồng:
Chương 4 HMM TOOLKIT
4.1 Cấu trúc tập tin trong HTK
Ví dụ:
Ví dụ 1: Nếu như ta có hai tập tin đánh nhãn như sau
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,
a) Ví dụ 1 (Xem hình 4.9 a)
b) Ví dụ 2 (Xem hình 4.9b)
c) Ví dụ 3(Xem hình 4.9c)
d)Ví dụ 4( Xem hình 4.9d)
4.2 Nhận dạng nguyên từ
4.3 Nhận dạng theo mô hình âm vị
Chương 5 ỨNG DỤNG: ĐIỀU KHIỂN XE TỰ ĐỘNG
BẰNG TIẾNG NÓI
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:
Nhận dạng trên tập dữ liệu mới:
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:
Nhận dạng trên tập dữ liệu mới:
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ệ
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:
Nhận dạng trên tập dữ liệu mới:
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:
Nhận dạng trên tập dữ liệu mới:
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:
Nhận dạng trên tập dữ liệu mới:
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:
Nhận dạng trên tập dữ liệu mới:
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
5.1.2.2 Nhận dạng theo mô hình âm vị triphone dùng
MFCC_0_D_A_Z
5.2 Ứng dụng nhận dạng tiếng nói
KẾT LUẬN
Hướng phát triển:
Phụ lục MỘT SỐ CÔNG CỤ TRONG HTK
1. HCopy
Bước 1: Tạo một tập tin script (chẳng hạn như đặt tên là convert.scp) dùng
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)
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
2. HCompV
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
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ư:
3. HInit
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
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
4. HParse
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
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
5. HRest
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
Bước 2: Khởi tạo tập tin mô hình HMM (bằng HInit hoặc HCompV)
Bước 3: Thực thi HRest với dòng lệnh và các tham số, chẳng hạn như:
6. HERest
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
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
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ư:
7. HVite
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
Bước 2: Chuẩn bị các tập tin như: từ điển phát âm dictionary, mạng ngôn
Bước 3: Thực thi HVite với dòng lệnh và các tham số, chẳng hạn như: