Các phương pháp trích chọn đặc tính Phần này sẽ giới thiệu hai phương pháp được sử dụng rộng rãi trong các hệ thống nhận dạng hiện tại để tính toán các hệ số MFCC Mel Scale Frequency Ce
Trang 1thuộc đề tài cấp nhà nước
“nghiên cứu phát triển côngnghệ nhận dạng, tổng hợp
Trang 2MỤC LỤC
1 PHƯƠNG PHÁP PHÂN TÍCH TIẾNG NÓI THEO CÁC ĐẶC TRƯNG 1
1.1 Các phương pháp trích chọn đặc tính 1
1.1.1 Phương pháp tính hệ số MFCC 1
1.1.2 Phương pháp tính hệ số PLP 4
1.1.3 Các kĩ thuật khử nhiễu 6
1.2 Các đơn vị xử lý tiếng nói 7
1.2.1 Tần số lấy mẫu 7
1.2.2 Nhiễu 7
1.2.3 Tần số cơ bản 8
1.2.4 Formant 8
1.3 Định dạng âm thanh 9
1.4 Thu tín hiệu âm thanh trong thời gian thực 11
1.5 Xác định giá trị hằng – ngưỡng theo môi trường tín hiệu 12
1.5.1 Thông số ngưỡng zero 12
1.5.2 Thông số độ ồn nhiễu 13
1.6 Lọc nhiễu 13
1.7 Xác định dãy tín hiệu số có chứa dữ liệu tiếng nói và xác định các điểm đầu - cuối của tiếng nói 14
1.8 Chuẩn hoá biên độ 15
1.8.1 Biến đổi FFT 16
1.8.2 Làm rõ tín hiệu và cửa sổ hoá 19
1.8.3 Định lý lấy mẫu 20
1.8.4 Phổ dẹt của tiếng nói 20
1.8.5 Biểu diễn tiếng nói theo mô hình LPC và các hệ số dự báo tuyến tính 22
2 CÁC MÔ HÌNH ỨNG DỤNG CHO NHẬN DẠNG TIẾNG NÓI 28 2.1 Phương pháp VQ 28
2.1.1 Khái niệm phép lượng tử hoá 28
2.1.2 Độ biến dạng 29
2.1.3 Tính chất 29
2.1.4 Thiết kế codebook theo phương pháp LBG 30
2.1.5 Ứng dụng VQ trong xử lý tín hiệu tiếng nói 33
2.2 Phương pháp căn chỉnh thời gian động 34
Trang 32.2.2 Kĩ thuật căn chỉnh thời gian động 36
2.2.3 Các ràng buộc 41
2.2.4 Thuật toán căn chỉnh thời gian động 46
2.3 Mô hình Markov ẩn 52
2.3.1 Quá trình Markov 52
2.3.2 Mô hình Markov ẩn 54
2.3.3 Ba bài toán cơ bản của mô hình Markov ẩn 57
2.3.4 Các loại mô hình Markov ẩn 67
2.3.5 Giới hạn của mô hình Markov ẩn 69
2.4 Mạng Nơron 69
2.4.1 Các khả năng của mạng nơron 69
2.4.2 Cấu trúc mạng nơron nhân tạo 70
2.4.3 Phân loại mạng nơron 73
2.4.4 Ứng dụng mạng nơ ron lan truyền ngược cho nhận dạng tiếng nói 73
3 HUẤN LUYỆN VÀ NHẬN DẠNG TIẾNG NÓI 75 3.1 Huấn luyện và nhận dạng theo mô hình Markov 75
3.1.1 Giới thiệu về HTK 75
3.1.2 Huấn luyện hệ thống nhận dạng 75
3.1.3 Nhận dạng 91
3.1.4 Tổng kết 95
3.2 Mô hình lai ghép ANN/HMM 98
3.2.1 Hệ thống nhận dạng dùng HMM liên tục 98
3.2.2 Huấn luyện hệ thống nhận dạng dùng ANN 102
3.2.3 Hệ thống nhận dạng dùng HMM/ANN 103
3.2.4 Nhận dạng 106
3.3 So sánh hai phương pháp nhận dạng CD-HMM và HMM/ANN 110
4 MÔI TRƯỜNG TÍN HIỆU TIẾNG NÓI TRÊN ĐIỆN THOẠI 118 4.1 Giới thiệu về card Dialogic 118
4.2 Các khái niệm cơ bản 119
4.2.1 Event 119
4.2.2 Event Handlers 121
4.2.3 Dialogic device handle 122
4.2.4 Kênh (device channel) 122
4.3 Các mô hình lập trình 122
Trang 44.3.2 Lập trình bất đồng bộ 124
4.3.3 Mô hình bất đồng bộ mở rộng 128
4.3.4 Các mô hình kết hợp 129
4.4 Sơ lược về các hàm và cấu trúc dữ liệu trong SRL 130
4.4.1 Các hàm quản lý sự kiện 130
4.4.2 Các hàm thuộc tính chuẩn 137
4.4.3 Termination Parameter Table DV_TPT 139
4.4.4 Call status event block structure: DX_EBLK 141
4.4.5 User digit buffer:DV_DIGIT 142
4.4.6 Thư viện âm thanh của C (Voice library of C functions) 142
4.4.7 Chi tiết một số hàm đã được đề cập 145
5 TÍCH HỢP MODULE TỔNG HỢP TIẾNG VIỆT VÀ CÁC CHUẨN TÍCH HỢP TIẾNG NÓI 149 5.1 Hệ thống thông điệp tích hợp (Unified Message System) 149
5.2 Cổng thoại 3i 154
5.2.1 Điều khiển voice menu – Callflow 154
5.2.2 Xử lý đồng thời nhiều cuộc gọi 155
5.2.3 Phát tiếng nói trên điện thoại 155
5.2.4 Lập trình tích hợp card Dialogic vào ứng dụng 157
5.2.5 Một số thuật ngữ 158
5.2.6 Tích hợp điện thoại và máy tính 159
6 CƠ SỞ DỮ LIỆU NGỮ ÂM CHO NHẬN DẠNG VÀ TỔNG HỢP TIẾNG VIỆT 163 6.1 Giới thiệu 163
6.2 Ghi âm cho CSDL 164
6.3 Dữ liệu cho nhận dạng tiếng Việt 166
6.3.1 Nhận dạng lệnh 166
6.3.2 Nhận dạng chính tả 170
6.4 Dữ liệu tiếng nói cho phân tích và nhận dạng thanh điệu 182
6.4.1 Thanh điệu tiếng Việt trong câu 182
6.4.2 Xác định đường nét đặc trưng của thanh điệu 186
6.4.3 Xác định ảnh hưởng của thanh điệu do ngữ cảnh 186
6.5 Dữ liệu tiếng nói cho tổng hợp 188
6.5.1 Xác định đơn vị âm cho tổng hợp tiếng Việt 189
Trang 56.6 Kết luận 191
7 TỔNG HỢP TIẾNG VIỆT 192 7.1 Nhập môn 192
7.2 Khái quát về tổng hợp tiếng nói từ văn bản TTS (Text To Speech) 194
7.2.1 Các loại âm 195
7.2.2 Các tham số âm thanh 196
7.2.3 Nhắc lại các khái niệm ngữ âm 196
7.2.4 Tổng hợp tiếng nói từ văn bản 198
7.3 Các phương pháp tổng hợp tiếng nói 200
7.3.1 Tổng hợp theo cấu âm 200
7.3.2 Tổng hợp formant theo quy luật 202
7.3.3 Tổng hợp xích chuỗi 204
7.4 Chuẩn hoá văn bản 218
7.5 Phân tích văn bản 222
7.6 Các mô hình ngôn ngữ 226
8 PHÂN TÍCH ĐẶC TRƯNG ÂM HỌC VÀ ÂM VỊ HỌC CỦA TIẾNG NÓI 233 8.1 Đặc trưng âm học của tiếng nói 233
8.1.1 Bản chất của âm 233
8.1.2 Các thuộc tính biên độ cơ bản của sóng âm 236
8.1.3 Các thuộc tính trường thời gian của các sóng âm 241
8.1.4 Các thuộc tính trường tần số của các sóng âm 243
8.1.5 Một số thuộc tính thẩm nhận cơ bản của sóng âm 249
8.1.6 Mô hình âm học của quá trình phát âm lời nói 253
8.1.7 Bộ lọc bộ máy phát âm trong quá trình sản sinh nguyên âm 254
8.1.8 Những thuộc tính âm học của chất lượng nguyên âm 265
8.2 Các đặc trưng âm vị học của tiếng nói 275
8.2.1 Phân tích tiếng nói thành các đơn vị cơ bản 275
8.2.2 Các nét khu biệt ngôn điệu và cố hữu 291
8.2.3 Các đặc trưng khu biệt so với các đặc trưng khác của âm 292
8.2.4 Ranh giới âm vị 294
8.2.5 Đột dừng đối lập với không đột dừng 294
8.2.6 Giọng the thé đối lập với giọng dịu 295
8.2.7 Nguồn bổ sung - Hữu thanh đối lập với vô thanh 299
Trang 68.2.9 Các nét thanh tính 303
8.2.10 Dẹt đối lập với bằng phẳng 305
8.2.11 Điếc đối lập với bằng phẳng 306
9 ĐẶC ĐIỂM NGỮ ÂM CƠ BẢN TIẾNG VIỆT 242 9.1 Âm tiết tiếng Việt 242
9.1.1 Dẫn luận 242
9.1.2 Phương pháp 242
4.1.3 Kết quả 244
4.2 Hệ formant của nguyên âm tiếng Việt 248
4.3 Một số vấn đề về phụ âm tiếng Việt hiện đại 255
4.3.1 Đặt vấn đề 255
4.3.2 Phương pháp 257
4.3.3 Giới hạn 258
4.3.4 Kết quả 258
4.3.5 Kết luận 266
4.4 Các thanh điệu của tiếng Việt 269
Trang 7Hình 1-1 Các bước xử lý của phương pháp tính toán hệ số MFCC .2
Hình 1-2 Các bước xử lý của phương pháp tính toán hệ số PLP 5
Error! No bookmark name given. Hình 1-4 Mô hình phổ dẹt của tiếng nói 21
Hình 1-5 Sơ đồ phân tích tiếng nói 21
Hình 1-6 Sơ đồ bộ xử lý LPC dùng cho trích đặc trưng tiếng nói 22
Hình 2-1 Ví dụ VQ 1 chiều 28
Hình 2-2 Ví dụ VQ 2 chiều 28
Hình 2-3 Sơ đồ khối chung của quá trình huấn luyện và phân lớp tín hiệu tiếng nói sử dụng VQ 33
Hình 2-4 Đồ thị của chuỗi các vector phổ đã được mã hóa bằng VQ của phát âm từ 8 tiếng Anh .34
Hình 2-5 Sơ đồ cách tiếp cận đối sánh mẫu 35
Hình 2-6- Các frame lần lượt gối lên nhau .37
Hình 2-7- So sánh sự khác nhau về thời gian trên từ “speech” 37
Hình 2-8- Lưới minh họa quy hoạch động 39
Hình 2-9- Các ràng buộc điểm đầu cuối (Endpoint Constraints) 42
Hình 2-10- Minh họa về so khớp không đều đặn .42
Hình 2-11- Minh họa về so khớp không liên tục .43
Hình 2-12- Các ràng buộc đường đi cục bộ 44
Hình 2-13- Ràng buộc đường đi cục bộ Itakura .44
Hình 2-14- Các ràng buộc đường đi toàn cục .45
Hình 2-15- Minh họa về căn chỉnh thời gian động giữa mẫu chuẩn “SPEECH” và mẫu nhận dạng có nhiễu “SsPEEhH” 46
Hình 2-16- Các hướng đi có thể của SDTW 47
Hình 2-17- Ba cách đi có thể từ ô (i, j) đến một ô khác trong DTW phản đối xứng .49
Hình 2-18- Các hướng đi có thể của DTW phản đối xứng 50
Hình 2-19- Đường đi qua vùng hợp lệ 50
Hình 2-20- Xích Markov với 5 trạng thái S1, S2, , S5 và các xác suất chuyển trạng thái 53
Trang 8Hình 2-21-Ví dụ một mô hình Markov ẩn với sáu trạng thái 56
Hình 2-22- Miêu tả các dãy phép toán được thực hiện để tính biến αt (i) .59
Hình 2-23- Miêu tả các dãy phép toán được thực hiện để tính biến βt(i) 60
Hình 2-24- Miêu tả các phép tính cần thiết để tính ξt(i, j) .63
Hình 2-25- Mô hình nhiều tầng của mạng nơron 71
Hình 2-26- Các thành phần cơ sở mạng nơron .71
Hình 3-1- Thuật toán của Hinit 80
Hình 3-2- Các hoạt động của Hnit .81
Hình 3-3- Mô hình hoạt động của Hcompv 82
Hình 3-4- Sơ đồ buộc hai âm vị sil và sp 83
Hình 3-5- Hoạt động của Herest .83
Hình 3-6- Dùng Hhed chuyển âm đơn sang âm ba 86
Hình 3-7- Quá trình buộc các âm ba bằng Hhed 87
Hình 3-8- Buộc các trạng thái .88
Hình 3-9- Sơ đồ ngữ pháp của hệ thống nhận dạng mười chữ số liên tục 91
Hình 3-10- Sơ đồ mạng word-loop với các xác suất bigram .93
Hình 3-11- Cấu trúc ba lớp của mạng từ nhận dạng .94
Hình 3-12- Mô hình mạng lai ghép HMM/ANN 104
Hình 3-13-Huấn luyện mạng lai ghép HMM/ANN 105
Hình 3-14- Sơ đồ mạng word-loop với các xác suất bigram .107
Hình 3-15- Cấu trúc ba lớp của mạng từ nhận dạng 108
Hình 3-16- Minh họa thuật toán chuyển thẻ bài .109
Hình 7-1- Giao diện chương trình kiểm tra ETTVSNAM 150
Hình 7-2- Hệ thống thao tác dọc và duyệt thư thoại 155
Hình 7-3- Kiến trúc phân tầng TAPI 160
Hình 5-1 Phổ tiếng nói của câu 164
Hình 5-2 Ảnh phổ của âm tiết kết thúc bằng âm tắc /p/: “hấp tấp” 173
Hình 5-3 Ảnh phổ của âm tiết “bắt” 174
Hình 5-4 Ảnh phổ của hai âm tiết đọc liền nhau 177
Trang 91 PHƯƠNG PHÁP PHÂN TÍCH TIẾNG NÓI THEO
CÁC ĐẶC TRƯNG
1.1 Các phương pháp trích chọn đặc tính
Phần này sẽ giới thiệu hai phương pháp được sử dụng rộng rãi trong các
hệ thống nhận dạng hiện tại để tính toán các hệ số MFCC (Mel Scale Frequency Cepstral Coefficients) và hệ số PLP (Perceptual Linear Prediction) Hai kĩ thuật xử lý tiếng nói RASTA (RelAtive SpecTral) và CMS (Cepstral Mean Subtraction) cũng được giới thiệu Đây là hai kĩ thuật loại bỏ nhiễu hay được sử dụng đặc biệt là trong phát âm có nhiều nhiễu như các câu thu âm qua điện thoại
1.1.1 Phương pháp tính hệ số MFCC
Hình 2.1 miêu tả các bước tính toán hệ số MFCC
Nhấn mạnh tín hiệu (pre-emphasis) Trong bước xử lý đầu tiên này, tín
hiệu được đưa qua một bộ lọc số:
1
( ) 1
H z = +a z−
Trong đó aprelà hệ số nhấn mạnh, thường có giá trị là 0,9700002861 Bộ
lọc có tác dụng tăng cường tín hiệu tại tần số cao (trên 1KHz) với hai lý do chính:
• Giọng nói có sự suy giảm khoảng 20dB/decade khi lên tần số cao do đặc điểm sinh lý của hệ thống phát âm của con người Bước xử lý này
sẽ tăng cường tín hiệu lên một giá trị gần 20dB/decade để khắc phục sự suy giảm này,
• Hệ thống thính giác của con người nhạy cảm hơn với vùng tần số cao, bước xử lý này nhấn mạnh vùng tần số cao, trợ giúp cho quá trình mô hình hoá âm thanh sau này của hệ thống nhận dạng
Trang 10Hình 1-1 Các bước xử lý của phương pháp tính toán hệ số MFCC
Tạo khung tín hiệu (framing) Tín hiệu tiếng nói luôn luôn biến thiên
theo thời gian, tuy nhiên, trong khoảng thời gian khoảng 10-20ms, tín hiệu tiếng nói được coi là tương đối ổn định Do đó, tín hiệu thường được chia thành các khung kích thước 20-30 ms với vùng gối lên nhau khoảng 10-15
ms
Làm cửa sổ (frame windowing) Cửa sổ Hamming thường được áp dụng
cho mỗi khung tín hiệu để giảm sự tác động của việc chia khung tín hiệu:
Trong đó, N là số mẫu dữ liệu (sample) của cửa sổ
DFT (Discrete Fourier Transform) Tại bước này, với mỗi khung tín
hiệu, biến đổi Fourier được áp dụng để chuyển tín hiệu về miền tần số Công việc tính toán được thực hiện bằng thuật toán FFT (Fast Fourier Transform)
Lọc theo thang tần số Mel (Mel-frequency bandpass filter) Các bộ lọc
số được áp dụng để lọc các tín hiệu theo các giải tần số khác nhau
Phản ứng của tai người với các thành phần của tần số là không tuyến tính Sự khác nhau về tần số ở vùng tần số thấp (<1KHz) dễ được nhận biết bởi con người hơn là ở vùng tần số cao Lọc theo thang tần số Mel mô phỏng
Trang 11tính chất này bằng cách dùng các bộ lọc được phân bố theo một hàm phi tuyến trong khoảng không gian tần số, thông thường là hàm Mel:
10( ) 2595log (1 )
700
f
Logarit giá trị năng lượng (logarit of filter energies) Các giá trị năng
lượng thu được tại mỗi kênh lọc được lấy logarit để “nén” các giá trị này vào một miền giá trị hẹp hơn
DCT (Discrete Cosin Transform) Giọng nói của con người có phổ khá
trơn (smooth) trên miền tần số, do vậy, các giá trị năng lượng của các bộ lọc gần nhau có sự tương quan (correlated) khá gần Bước xử lý này biến đổi các giá trị năng lượng thành các hệ số ít tương quan với nhau hơn, các hệ số này được gọi là hệ số cepstral
1cos( ( 0.5))
Chỉnh các giá trị cepstral Giá trị cepstral bậc cao thường có giá trị rất
thấp, so với các giá trị cepstral bậc thấp Sự khác biệt này gây khó khăn cho việc mô hình hoá dữ liệu, ví dụ như khi sử dụng các hàm mật độ xác suất Gauss Do đó các hệ số cepstral được điều chỉnh lại (re-scaled) theo công thức:
exp( * )
c′ = n k c
Sau bước hiệu chỉnh này ta thu được các giá trị MFCC
Tính giá trị delta MFCC Các giá trị delta của các hệ số MFCC được
tính toán nhằm phản ánh sự biến thiên tiếng nói theo thời gian Các giá trị delta được tính toán dựa trên các giá trị MFCC của các khung tín hiệu lân cận:
1
2 1
2
t t t
θ
θθ
Θ + −
= Θ
Trang 12Các hệ số a(i) được chọn để làm cực tiểu hàm lỗi dự báo trung bình bình
phương Có một vài phương pháp để tính các hệ số này: phương pháp dùng
ma trận hiệp phương sai (covariance matrix), phương pháp tự tương quan (auto-correlation method), phương pháp lưới hay còn gọi là phương pháp điều hoà (lattice or harmonic) Phương pháp thường được áp dụng nhất trong nhận dạng tiếng nói là phương pháp tự tương quan dùng thuật toán đệ quy Levinson-Durbin
Thuật toán Levinson-Durbin được trình bày như sau:
Tính p+1 các hệ số tự tương quan đầu tiên (p là bậc của dự báo tuyến
tính) bằng công thức sau:
1
N i
i j j i j
r − s s +
=
=∑
Trong đó, s(n) là tín hiệu trong cửa sổ, N là số lượng mẫu trong cửa sổ
Các hệ số sau đó được tính toán đệ quy như sau:
0
(0)
E =r
1 ( 1)
( 1)
i j i j j
Trang 13Các bước trên được tính toán lặp với i=1,2, p Cuối cùng, ta thu được
các hệ số:
( )p
j j
a =a với 1 j p≤ ≤Phương pháp tính các hệ số PLP dựa vào phương pháp LPC Hình 2.2 miêu tả các bước xử lý tính toán hệ số PLP:
Hình 1-2 Các bước xử lý của phương pháp tính toán hệ số PLP
FFT Tương tự như phương pháp MFCC, tín hiệu tiếng nói được chia
thành các khung tín hiệu và được biến đổi Fourier sang miền tần số bằng thuật toán FFT
Lọc theo thang tần số Bark Tương tự như phương pháp tính MFCC, tín
hiệu tiếng nói được lọc qua các bộ lọc phân bố theo thang tần số phi tuyến, trong trường hợp này là thang tần số Bark:
} ] 1 ) 1200
[(
1200 ln{
6 ) (f = f + f 2 + 0 5
Bark
Nhấn mạnh tín hiệu dùng hàm equal-loudness Bước xử lý này tương tự
như bước nhấn mạnh pre-emphasis của phương pháp MFCC Hàm này mô phỏng đường cong cân bằng độ ồn (equal-loudness curve)
( 56,8*10 ) ( )
Trang 14Dùng luật cường độ nghe (power law of hearing) Bước xử lý này giống
như bước lấy giá trị logarit trong phương pháp MFCC Hàm căn lập phương được sử dụng để “nén” các giá trị năng lượng
0,33
( )f ( )f
Biến đổi Fourier ngược (inverse DFT) Các hệ số tự tương quan được
biến đổi Fourier ngược để sau đó dùng làm giá trị đầu vào cho phương pháp LPC
Thuật toán Durbin được sử dụng để tính toán các hệ số dự báo tuyến
tính giống như trong phương pháp LPC
Tính các giá trị delta Phương pháp tính tương tự như phương pháp tính
là thường xuyên cố định hoặc biến đổi chậm Các tham số cepstral của một phát âm được trừ đi giá trị trung bình của các tham số trong một khoảng thời gian nào đó và làm cho các giá trị này ít bị ảnh hưởng bởi môi trường:
bổ sung bất thường khác Bộ lọc dùng trong RASTA là:
1
0,2 0,1 0,2 0,1( )
Trang 15Các kĩ thuật khử nhiễu thường yêu cầu một đoạn tiếng nói đủ lớn để phân tích, thống kê Vì vậy, khi áp dụng các kĩ thuật khử nhiễu vào nhận dạng tiếng nói, cần lưu ý đến tốc độ xử lí và bảo tồn các đặc trưng âm học của phụ âm, đặc biệt là các phụ âm vô thanh Để đảm bảo thực hiện được trong thời gian thực, hiện nay, người ta thường áp dụng mô hình tham số thích nghi với nhiễu
Cụ thể như sau: Khi huấn luyện tham số, người ta lấy một mẫu sạch, không bị nhiễu, để huấn luyện, sau đó, người ta lấy các mẫu sạch này trộn với các loại nhiễu sinh bởi các mô hình toán học khác nhau và tham số mô hình sẽ được biến đổi bởi mẫu nhiễu nhờ các công cụ mô hình như mạng Nơron Do đó, trong giai đoạn nhận dạng, khi tín hiệu thực được đưa vào hệ thống, người ta sẽ tính thẳng các đặc trưng và quyết định từ chính tín hiệu chứ không cần lọc
1.2 Các đơn vị xử lý tiếng nói
1.2.1 Tần số lấy mẫu
Quá trình lấy mẫu tạo ra tín hiệu rời rạc hoặc tín hiệu số từ tín hiệu tín hiệu tương tự Tần số lấy mẫu là số lần lấy mẫu được tính trong một đơn vị thời gian, thông thường là giây Tần số lấy mẫu ký hiệu là Fs
Khoảng thời gian mà quá trình lấy mẫu được lặp lại gọi là chu kỳ lấy mẫu
Ví dụ: Fs = 11025Hz
1s thu được 11025 mẫu
1ms thu được 11025/1000 ≈ 11 mẫu
Số bit lưu một mẫu có thể là 8 hoặc 16 bit
Trang 16ra nhiễu, chẳng hạn như tiếng thở, tiếng bật lưỡi, tiếng chép miệng cả khi môi chạm vào micro… Không dễ gì có thể lọc được mọi thứ nhiễu, ta chỉ tìm cách tối thiểu hoá chúng để có thể nâng cao chất lượng của hệ thống nhận dạng Với tín hiệu tiếng nói là s n, tín hiệu nhận được sau quá trình thu sẽ được
ký hiệu là s~ n Như vậy:
s E
0
2 0 2
10
~
log
10 (Đơn vị năng lượng tính bằng dB)
Như vậy, nếu năng lượng E càng lớn thì s~ n càng gần với s n, tín hiệu nền
có giá trị gần về 0 Nếu E→∞ thì tín hiệu thu được là tín hiệu sạch, không
có nhiễu
1.2.3 Tần số cơ bản
Một âm thanh có thể là tổ hợp của nhiều tần số, tần số chính bao trùm trong âm được gọi là tần số cơ bản Trong tiếng nói, tần số cơ bản là đáp ứng của sự rung động các dây thanh âm, tần số cơ bản thường được ký hiệu là F0 Tần số cơ bản có giá trị phụ thuộc vào tần số lấy mẫu và khoảng cách a,
là khoảng cách giữa hai đỉnh của các sóng âm tuần hoàn
Đơn vị của tần số là Hertz, ký hiệu là Hz Mỗi Hz bằng 1 dao động/1s
Và 1 KHz sẽ bằng 1000 Hz (Xem biểu diễn đường F0 của một số thanh điệu
ở phần phụ lục)
1.2.4 Formant
Formant là dải tần số được tăng cường do hiện tượng cộng hưởng trong ống dẫn thanh, đặc trưng cho âm sắc của mỗi nguyên âm Trong mỗi dải tần như thế có một tần số được tăng cường hơn cả gọi là đỉnh formant
Một nguyên âm do một người phát ra có nhiều formant:
F1: ứng với cộng hưởng vùng yết hầu
F2: ứng với cộng hưởng khoang miệng
Trang 17Khi ta nói, các âm mũi sẽ có sự xuất hiện của formant F3, các formant khác F4, F5,…liên quan đến các đặc trưng giọng nói riêng của mỗi cá nhân Mỗi lần môi, lưỡi, hàm ở những vị trí khác nhau là một lần hộp cộng hưởng miệng và yết hầu thay đổi hình dáng, thể tích, lối thoát của không khí làm biến đổi âm sắc của âm thanh đi qua chúng Chính vì vậy, hai khoang miệng
và yết hầu là hai hộp cộng hưởng quan trọng nhất, chúng tạo nên hai formant chính formant F1 và F2 đặc trưng của mỗi nguyên âm
1.3 Định dạng âm thanh
Có nhiều chuẩn lưu trữ âm thanh số (AU, VOC, WAVE, AIFF, AIFF-C
và IFF/8VX), nhưng kết quả thực tế cho thấy rằng tập đoàn của Microsoft sử dụng các file wave trong hệ thống điều hành windows, chúng đã trở thành chuẩn sử dụng phổ biến nhất
Âm thanh được xử lý ở dạng PCM, tập tin được lưu lại trên bộ nhớ dưới dạng file WAVE
Thông thường, các file WAVE PCM có cấu trúc như sau:
Các khối dữ liệu riêng biệt (còn gọi là các chunk), được thể hiện bằng cấu trúc hình cây cơ bản
Mỗi chunk bao gồm hai phần cơ bản là header và data
Khối đầu tiên, cũng là phần chính của bất kỳ file RIFF nào là khối RIFF,
nó giống như gốc của một cây
File bắt đầu với phần header RIFF, sau nó là hai khối con được định nghĩa FMT và DATA RIFF bao gồm ba phần tử: RIFF_ID, RIFF_SIZE và RIFF_FORMAT
struct RIFF
Trang 18{
_TCHAR riffID[4]; // Chứa nhận dạng “RIFF”
DWORD riffSIZE; // Kích thước file trừ 8 byte
_TCHAR riffFORMAT[4]; //Chứa nhận dạng “WAVE”
WAVEFORMATEX // nhưng không bao gồm file cbSize
};
Cấu trúc của WAVEFORMAT là chìa khoá của sự hiểu biết về các WAVE Nó chứa nhiều thông tin mà chúng ta cần khi làm việc với một WAVE
struct WAVEFORM
{
WORD wFormatTag; // định dạng âm thanh số
WORD nchannels; //số kênh (1 cho mono và 2
DWORD nSamplesPerSec; //Số mẫu trong một giây
DWORD nAvgBytesPerSec; //Trung bình số byte của dữ
liệu trong một giây WORD nBlockAlign; //Kích thước tối thiểu của dữ
liệu khi phát WORD wBitsPerSample; // Số bit lưu một mẫu (8 hoặc 16)
};
Và cuối cùng là khối dữ liệu:
Trang 19struct DATA
{
_TCHAR dataID[4]; //Chứa nhận dạng dữ liệu
DWORD dataSIZE; //Kích thước dl
};
Định dạng dữ liệu và giá trị lớn nhất, nhỏ nhất của các mẫu waveform PCM ở nhiều kích thước được cho như sau:
Kích thước mẫu Định dạng dữ liệu Giá trị lớn nhất Giá trị nhỏ nhất
Từ 1 đến 8 bit Số nguyên không dấu 255 (0xFF) 0
Giá trị lớn nhất, giá trị nhỏ nhất và giá trị điểm giữa của 8 bit và 16 bit
dữ liệu waveform PCM như sau:
1.4 Thu tín hiệu âm thanh trong thời gian thực
Tín hiệu tiếng nói trước khi trở thành dữ liệu tiếng nói phải trải qua một quá trình xử lý, quá trình này được gọi là tiền xử lý tín hiệu
Hệ thống máy tính hiện tại chỉ hỗ trợ cho ta thu tĩnh Mỗi lần chỉ thu được trong một khoảng thời gian khá nhỏ (vì dãy tín hiệu số phát sinh quá lớn
sẽ nhanh chóng lấp đầy phần không gian lưu trữ) Nếu người sử dụng nói vào thời điểm hàm thu kết thúc thì dữ liệu sẽ bị mất mát, do đặc trưng của tín hiệu tiếng nói các hệ thống thiết kế tốt cũng có thể không phát hiện được, vẫn thực hiện và cho ra kết quả khi dữ liệu đầu vào đã sai
Cách giải quyết chủ yếu dựa vào một số thủ thuật lập trình, cơ chế hoạt động của hệ điều hành và cơ chế của hàm thu tín hiệu âm thanh Tư tưởng chính là làm một hàng đợi vòng, xử lý kịp thời để không bao giờ bị hết không gian lưu trữ, kết hợp với việc sử dụng cơ chế đa luồng của hệ điều hành để
Trang 20vẫn có thể thực hiện được đồng thời các ứng dụng khác Cách thực hiện cụ thể như sau:
Xin cấp phát M vùng đệm (buffer), mỗi vùng đệm có kích thước 3N và đưa vào hàng đợi (N là kích thước của một frame) Tạo một luồng (thread) làm những việc chính sau:
1 Kiểm tra cờ điều khiển (semaphore), nếu cờ tắt thì dừng (return)
2 Gọi hàm thu và chờ thu hết vùng đệm (hiện hành) (Khi này vùng đệm
bị loại ra khỏi hàng đợi)
3 Tính năng lượng của ba frame trên vùng đệm, nếu năng lượng frame đầu lớn hơn ngưỡng dữ liệu thì quay lại bước một (trạng thái đang có
âm thanh khi gọi hàm thu – không thu được trọn vẹn dữ liệu)
4 Đưa vùng đệm vào hàng đợi
5 Tăng chỉ số vùng đệm hiện hành lên một
6 Chờ thu hết vùng đệm
7 Với mỗi frame của vùng đệm tính tổng năng lượng của nó và hai frame
kế trước (có thể là của vùng đệm trước- để đảm bảo tính liên tục)
8 Nếu tổng năng lượng vừa tính lớn hơn ngưỡng im lặng thì chép frame vào vùng đệm chính, cập nhật lại kích thước vùng đệm chính và bật
cờ có dữ liệu.Ngược lại, nếu cờ có dữ liệu bật: cập nhật lại kích thước đoạn im lặng
9 Nếu kích thước đoạn im lặng nhỏ hơn thời gian ngừng tối đa giữa hai tiếng: Quay lại bước 5
Ta có thể chọn kích thước frame là 220 ms, thời gian ngừng tối đa giữa hai tiếng là 750 ms
1.5 Xác định giá trị hằng – ngưỡng theo môi trường tín hiệu
1.5.1 Thông số ngưỡng zero
Bản chất âm thanh là sự dao động, khi số hoá các mẫu dữ liệu âm thanh
về miền giá trị 0…N-1 thì mẫu âm thanh im lặng (không có âm thanh) sẽ có giá trị là N/2, giá trị này gọi là ngưỡng zero Ví dụ nếu kích thước mỗi mẫu
Trang 21tín hiệu số là 8 bit thì giá trị của ngưỡng zero là 128, các mẫu tín hiệu âm thanh số sẽ có giá trị dao động xung quanh ngưỡng này
Trên thực tế các thiết bị số hoá âm thanh của máy tính (sound card) có thể bị sai ngưỡng zero (sound card mà người viết đang dùng có ngưỡng zero
là 112-mẫu 8 bit) Nếu hệ thống chương trình sử dụng ngưỡng zero tương ứng của thiết bị thì dữ liệu nhận được vẫn là dữ liệu tốt Còn nếu vẫn dùng ngưỡng như trên thì kết quả nhận dạng có thể sai trầm trọng
Thuật toán phương pháp xác định ngưỡng zero:
- Lấy thu của sound card
- Đặt mức thu ở giá trị thấp nhất (tín hiệu thu được là nhỏ nhất)
- Thu một đoạn dữ liệu ngắn (khoảng 3 giây)
- Tính "histogram" H (H[k] là số mẫu có giá trị biên độ k)
- Tìm trong dãy H phần tử H[max] có giá trị lớn nhất Ngưỡng zero chính là max
- Phục hồi lại mức thu ban đầu
1.5.2 Thông số độ ồn nhiễu
Cách xác định: Thông báo yêu cầu người sử dụng đừng nói gì trong ba giây và thu tín hiệu trong thời gian đó để lấy tiếng ồn nhiễu của môi trường xung quanh Ngưỡng im lặng được xác định là năng lượng cao nhất của các frame Ngoài ra có thể dùng biến đổi Fourier để tính ra các tần số nhiễu phục
vụ cho việc lọc nhiễu
1.6 Lọc nhiễu
Hiện tại, việc lọc nhiễu của hệ thống được thực hiện theo phương pháp kinh điển là dùng phép biến đổi Fourier với thuật toán FFT Dùng biến đổi Fourier thuận xác định được các tần số tham gia và loại đi tất cả tần số không thuộc phạm vi tiếng nói (nếu biết được phạm vi tần số của đúng người sử dụng thì kết quả lọc sẽ càng cao hơn) bằng cách cho các hệ số tương ứng giá trị zero sau đó biến đổi ngược lại
Trang 221.7 Xác định dãy tín hiệu số có chứa dữ liệu tiếng nói và xác định các điểm đầu - cuối của tiếng nói
Dữ liệu thu được không phải lúc nào cũng là tiếng nói, nhất là khi thu động dữ liệu sẽ thường xuyên là khoảng lặng và nhiễu Vì hệ thống nhận dạng được thiết kế theo hình thức so khớp tìm ra mẫu giống nhất nên dù dữ liệu thu được không phải là tiếng nói mà được đưa vào thì hệ thống vẫn gán đó là một trong các tiếng đã học mẫu dẫn đến sai hoàn toàn
Trong mọi đoạn tín hiệu, dù có tiếng nói hoặc không có tiếng nói, thì luôn luôn có âm nền Khác biệt chủ yếu khi có tiếng nói là âm thanh tiếng nói
sẽ là âm thanh chính Ta có thể đưa ra phương pháp sau:
1 Chia đều dãy tín hiệu số thành các frame với kích thước từ 5-10 ms (có thể căn cứ vào tần số cơ bản trung bình của người đang nói để chọn giá trị phù hợp nhất)
2 Sau đó kiểm tra tính chứa tiếng nói của các frame bằng cách đếm số điểm zero hoặc tính năng lượng ngắn hạn của frame có vượt qua ngưỡng
3 Nếu tổng kích thước các frame liên tiếp được xác định có tính chứa tiếng nói lớn hơn 150 ms thì có thể xem là có chứa tiếng nói
Frame i Frame i=+1
Cöa sæ i
Cöa sæ i+1
Dl chia sÎ Dl míi
Hình 1-3 Phân chia tín hiệu thành các Frame
Nếu người nói nói rời rạc từng tiếng một và môi trường không bị ồn thì
ở bước xác định dãy tín hiệu số có chứa dữ liệu tiếng nói hay không ta cũng
đã xác định được các điểm biên của tiếng vì tại đó sẽ có các khoảng lặng Nhưng người ta có thể nói hơi chậm chứ không quen nói nhát gừng từng tiếng
Trang 23một và môi trường xung quanh cũng hoàn toàn có thể có nhiễu Khi đó giữa hai tiếng có thể không có khoảng lặng - Tức chúng bị dính nhau (thường hiện tượng này chỉ xảy ra giữa hai tiếng chứ ít có ba tiếng dính nhau) Lúc này, bước trên sẽ cho kết quả chỉ là một tiếng mà ta đưa luôn cho hệ thống nhận dạng thì trước mắt sẽ có một tiếng bị nhận sai (không có kết quả), và tiếng còn lại cũng nhiều khả năng sai Như vậy, bước này cũng là cần thiết nếu muốn hệ thống hoạt động cho chính xác
Nếu các tiếng được nói rõ ràng thì chiều dài của mỗi tiếng không dao động nhiều Do đó ta có thể yêu cầu người nói rời rạc một số tiếng rồi đo chiều dài nhỏ nhất L1 và lớn nhất LS các tiếng của người đó Khi nhận được đoạn dữ liệu có chiều dài lớn hơn LS, tức đang có hai tiếng dính nhau, ta sẽ tìm frame trong đoạn [L1 LS] có năng lượng nhỏ nhất và điểm biên giữa hai tiếng được chọn là điểm giữa của frame
1.8 Chuẩn hoá biên độ
Dữ liệu tiếng nói khi thu được có biên độ rất biến động Ngay cả khi người sử dụng nói với một âm lượng rất chuẩn không hề thay đổi thì biên độ của dữ liệu thu được cũng vẫn có thể không ổn định Điều này dễ dàng xảy ra khi người nói hơi xoay mặt đi, nhích micro đến gần miệng hơn hoặc kéo ra xa hơn chỉ vài cm Sự biến động này ảnh hưởng đến kết quả nhận dạng
Việc chuẩn hoá là cần nhưng không nhất thiết phải thật tốt, chỉ cần biên
độ đừng nhỏ quá làm mất mát đặc trưng Như vậy, ta có thể thực hiện đơn giản bằng cách nhân mỗi điểm với một hệ số k thích hợp
32767 −
=
Nhận dạng tiếng nói là mô hình phức tạp theo nhiều mức khác nhau Tín hiệu tiếng nói được phân tách ra thành từ, các cụm từ hay câu Tiếp theo chúng được phân tích dựa vào cú pháp của ngôn ngữ cần nhận dạng, được biến đổi và nén lại để đơn giản cho việc xử lý tiếp theo
Khi xử lý tín hiệu tiếng nói ta phải rời rạc hoá nó theo thời gian, sử dụng biến đổi FFT để ước lượng các thành phần tần số của tín hiệu rời rạc, tách lọc các thành phần cần thiết trước khi nhận dạng
Trang 241.8.1 Biến đổi FFT
Phép biến đổi nhanh FFT không phải là một phép biến đổi mới nó thực chất là DFT nhưng được thực hiện với một thuật toán nhanh, gọn Đây là thuật toán đóng vai trò hết sức quan trọng trong việc phân tích, thiết kế và xử
lý tín hiệu
Thuật toán biến đổi nhanh FFT cho N mẫu {x(n)} là:
Phép biến đổi thuận: ( ) ∑− ( )
N k
N kn j
e n x k
Phép biến đổi ngược: ( ) X( )k e j kn N
N n
x = 1 ∑ 2 π / Với n = 0, 1, …, N-1 Trong đó: x( ) ( ) ( )n =a n +b n − 1
Phép biến đổi FFT bảo toàn tính tuyến tính bất biến, tuần hoàn và tính trễ
Phép biến đổi tín hiệu thời gian rời rạc z được định nghĩa là:
j n x
z X
kn
j N
e k X k
kn
j N
e k X n
x π , n= 0 , 1 , 2 , ,N − 1
Phép biến đổi Fourier nhanh (FFT) đơn giản là tính hệ số của DFT
Phép biến đổi cosin rời rạc (DCT) là DFT của tín hiệu
n
N
kn n
x x
k
Trang 25Trình bày thuật toán trên ngôn ngữ C
void ScrAmble(long numPoints, struct _complex *f)
Trang 271.8.2 Làm rõ tín hiệu và cửa sổ hoá
Nhằm làm nổi bật đặc trưng phổ của tín hiệu Thông thường bộ làm rõ tín hiệu là một bộ lọc thông cao với phương trình sai phân là:
số mẫu cho mỗi khung thì kết quả cửa sổ hoá tín hiệu sẽ là:
N
n n
, 0≤n≤N −1Hàm Hamming suy rộng:
Trang 28N k
w k
F
n t g F
n x t
1.8.4 Phổ dẹt của tiếng nói
Chọn { }x( )n biểu thị một đoạn tín hiệu kéo dài trong khoảng thời gian xác định: xˆ( ) ( ) ( )n =x n w n
Đoạn này giới thiệu vùng tần số có tên gọi là hiệu ứng hàng rào
Trang 29Hình 1-4 Mô hình phổ dẹt của tiếng nói
Mỗi frame 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:
Hình 1-5 Sơ đồ phân tích tiếng nói
Trang 301.8.5 Biểu diễn tiếng núi theo mụ hỡnh LPC và cỏc hệ số dự bỏo tuyến tớnh
Mụ hỡnh LPC được sử dụng để trớch lọc cỏc thụng tin đặc trưng của tớn hiệu, kết quả của quỏ trỡnh phõn tớch tớn hiệu thu được một chuỗi cỏc khung tiếng núi, cỏc khung này cú thể được gia cụng thờm và mục đớch sử dụng cho việc phõn tớch õm học
1.8.5.1 Mụ hỡnh LPC
Cỏc tớn hiệu được trớch rỳt theo hỡnh thức xử lý tớn hiệu số bỡnh thường, toàn dóy dữ liệu được chia thành cỏc frame và dựng LPC phõn tớch thành cỏc vector với số phần tử ớt hơn hẳn
Hỡnh dưới đõy là sơ đồ chi tiết của bộ xử lý LPC dựng để trớch đặc trưng
õm tiết tiếng núi Cỏc bước cơ bản trong tiến trỡnh xử lý như sau:
Làm rõ
tín hiệu
Phân đoạn frame
Lấy cửa sổ
Phân tích tự tương quan
Lấy đạo hàm
Đặt trọng số
Chuyển sang cepstral
Phân tích LPC
số dự bỏo này chớnh là cỏc trọng số được sử dụng trong tổ hợp tuyến tớnh Chỳng ta định nghĩa dóy tớn hiệu tiếng núi bằng hàm s(n), giỏ trị dự bỏo:
s
1
Cỏc hệ số αk đặc trưng cho hệ thống
Trang 31Lỗi dự báo được tính theo công thức:
s n s n s n e
1
Muốn cực tiểu hoá các lỗi xảy ra cần phải chọn giá trì phù hợp nhất, tối
ưu nhất đối với tập giá trị { }αk Chính vì tín hiệu tiếng nói thay đổi theo thời gian nên các hệ số dự báo phải được ước lượng từ một đoạn ngắn tín hiệu Phương pháp tiếp cận cơ bản là tìm một tập các hệ số dự báo để tối thiểu hoá sai số trung bình trên một đoạn ngắn tín hiệu tiếng nói
Công thức tính lỗi dự báo trong một thời gian ngắn:
m s m
s m
1 1
P k n k m
n n i
Trang 32Thì phương trình (**) có thể được viết gọn hơn:
Giải hệ P phương trình này ta sẽ tìm được P ẩn { }α Tập các hệ số k
{ }α sẽ tối thiểu sai số trung bình bình phương dự đoán cho đoạn tín hiệu k
Sn(m) Sử dụng phương trình (*) và (**) sai số dự đoán trung bình bình phương tối thiểu sẽ là:
Trong đó, w(m) là cửa sổ có chiều dài hữu hạn (thường hay dùng cửa sổ Hamming w(m) khác không trong khoảng 0≤m≤N−1 Do đó sai số dự đoán en(m) cho bộ dự đoán bậc p sẽ khác không trong khoảng
p N
p N
p i
≤
≤
≤
≤01
=
−+
= N i k
0,
p k
p i
≤
≤
≤
≤01
Trang 33
Gọi Rn(k) là hàm tự tương quan có dạng:
p i
, ,2,1,0
, ,2,1
n n
Ở đó:
( ) ( )
( ) ( )
r
r r r
p r
p r
p r
r r
p r
r
r R
P
LL
LLLLL
LL
21
0
21
2
01
1
1
02
1
α
α
αα
Chú ý rằng R là ma trận đối xứng, tất cả các phần tử thuộc đường chéo của ma trận này đều có giá trị bằng nhau, điều đó có nghĩa là: (1) Nghịch đảo của nó luôn tồn tại; (2) các nghiệm của nó nằm ở phía trái của phương trình Tương tự như vậy sai số trung bình bình phương tối thiểu của phương trình (*****) sẽ có dạng:
Trình bày thuật toán trên ngôn ngữ C:
void ComputeCorrelation(double*sample,int nSample,
double *coeffCorrelation, int nLPC_AUTO)
{
int i,k,nk;
for (k = 0; k <= nLPC_AUTO; k++)
Trang 34coeffRC[i] -= a[j] * coeffCorrelation[i - j];
} // for coeffRC[i] /= e;
a[i] = coeffRC[i];
for (j = 1; j < i; j++) a[j] = at[j] + coeffRC[i] * at[i - j];
e *= 1.0f - coeffRC[i] * coeffRC[i];
} // for
if (e < 0)
Trang 35beta=sqrt(e);
} // Durbin_RC
// He so a[] duo xac dinh boi
// x[n] ~= e[n]+ a[1]*x[n-1] + + a[p]*x[n-p]
//***************************************************
void Durbin_LPC_RC(int nLPC,double *coeffCorrelation,double
*coeffRC, double *a, double &beta) {
coeffRC[i] -= a[j] * coeffCorrelation[i - j];
} // for coeffRC[i] /= e;
a[i] = coeffRC[i];
for (j = 1; j < i; j++) a[j] = at[j] + coeffRC[i] * at[i - j];
Trang 37Theo định nghĩa toán học, việc lượng tử hoá vector k chiều hay VQ bao gồm hai ánh xạ: quá trình mã hoá thực hiện bằng hàm y, với mỗi vector đầu vào x = {x0,x1,…,xk-1} ta có hàm mã hoá là y(x), M là ký hiệu của một tập các kênh, và một bộ giải mã β gán cho mỗi ký hiệu kênh v trong M một giá trị trong bảng chữ cái Ví dụ: M có thể là một tập 2R (hệ nhị phân) vector R chiều Bảng chữ cái phát lại có tương tự khoảng trống của các vector đầu vào, đặc biệt nó có thể có một vector thực với một chiều khác nhau
Nếu M có M phần tử, nếu số lượng R = log2M thì được gọi là tỉ lệ số bit cho mỗi vector trong bộ lượng tử hoá và r = R/k là tỉ lệ số bit cho một biểu tượng, khi đầu vào là dạng sóng đã được lấy mẫu thì đó là số bit cho một mẫu
2.1.2 Độ biến dạng
Độ biến dạng d ký hiệu d( )x,xˆ giữa vector đầu vào x và vector xˆ Cho một giá trị của độ biến dạng, chúng ta có thể xác định chất lượng thực hiện của hệ thống bằng độ biến dạng trung bình Ed( )X,Xˆ giữa vector đầu vào và vector được phát: Một hệ thống được đánh giá tốt nếu như giá trị trung bình
độ biến dạng nhỏ Trên thực tế, giá trị trung bình được quan tâm là giá trị trung bình giới hạn độ dài mẫu hoặc trung bình thời gian thực hiện, dĩ nhiên điều này được đánh giá bằng trực giác
x x x d
k: Số chiều của VQ
2.1.3 Tính chất
Tính chất 1:
Với mục đích cực tiểu hoá trung bình độ biến dạng, cho một bộ giải mã
β, không có bộ mã hoá lượng tử nào tốt hơn chọn các từ mã v trong M, nó sẽ cung cấp độ biến dạng nhỏ nhất có thể ở đầu ra, giá trị cực tiểu trên kênh v là:
Trang 38Tính chất 2:
Đối với bộ mã hoá y, không có bộ giải mã nào tốt hơn việc gán mỗi kênh
v một ceintroid chung của tất cả các vector nguồn mã hoá thành v, đó là:
Thường là: ( ) ( ) ∑( )
=
=
v x y
x i i i
x v
i v cent
|1
Ở đó: i(v) là số của chỉ số i sao cho y(xi) = v
2.1.4 Thiết kế codebook theo phương pháp LBG
Vấn đề thiết kế
Tìm hiểu về cách thiết kế VQ có thể được bắt đầu như sau Cho một vector nguồn với các thuộc tính đã biết, cho một khoảng cách (độ sai lệch), và cho số lượng codevector, tìm một codebook (tập gồm các dấu hoa thị) và cách phân chia (tập các đường kẻ) codebook phải tìm là codebook có ra khoảng cách trung bình bé nhất
Chúng ta giả thiết rằng chuỗi huấn luyện gồm có M vector nguồn:
T = {x1, x2,…,xM}
Chuỗi huấn luyện này thu được từ một cơ sở dữ liệu khá lớn Ví dụ như nếu nguồn là một tín hiệu tiếng nói, khi đó chuỗi huấn luyện có thể thu được bởi cơ sở dữ liệu là một vài cuộc hội thoại khá dài được ghi âm qua điện thoại Giả thiết M có đầy đủ các thuộc tính thống kê của nguồn thu được trong việc huấn luyện chuỗi Chúng ta cũng giả thiết rằng các vector nguồn là
k chiều, ví dụ:
xm = (xm,1, xm,2, …, xm,k), m =1, 2, …, M Cho N là số lượng codevector và biễu diễn codebook :
C = {c1, c2, …, cN}, Mỗi codebook có k chiều, ví dụ:
cn = (cn,1, cn,2, …, cn,k), n = 1, 2, …, N
Trang 39Sn là miền mã hoá với codevector cn và chỉ rõ việc phân chia các khoảng trống
Ở đó:
e 2 =e12+e22+ +e k2
Như vậy, vấn đề thiết kế thuật toán này có thể được nói ngắn gọn như sau: Cho T và N, tìm C và P sao cho Dove là nhỏ nhất
Tiêu chuẩn tối ưu hoá
Nếu C và P là một giải pháp của vấn đề cực tiểu hoá, khi đó nó phải thoả mãn hai tiêu chuẩn sau:
• Điều kiện của thuật toán người láng giềng gần nhất:
n m S x
S
n
X c
1 n = 1, 2, …, N Điều kiện này cho rằng codevector Cn là trung bình của tất cả các vector huấn luyện, các vector ở trong miền mã hoá Sn Thêm vào đó có một điều chắc chắn là có ít nhất một vector huấn luyện thuộc vào mỗi miền (mẫu số ở công thức trên phải khác 0)
Thiết kế thuật toán LBG
Thuật toán LBG là thuật toán đệ quy, việc giải quyết dựa vào sự lựa chọn hai tiêu chuẩn tối ưu trên Thuật toán yêu cầu một codebook ban đầu
Trang 40C(0) Đây là codebook khởi tạo, thu được qua quá trình phân tách Trong phương thức này, một codebook được đặt là giá trị trung bình của toàn bộ dãy huấn luyện Codevector này được phân tách thành hai Thuật toán lặp được chạy với hai vector được khởi tạo cho codebook Hai codebook sau được phân thành bốn và quá trình xử lý được lặp lại cho đến khi thu được số lượng codebook mong muốn Thuật toán này được tổng kết như sau:
Thiết kế thuật toán LBG:
1 Cho T ε>0 là số lượng nhỏ nhất có giá trị cố định
* 1
* 0
1
1
i N
i i
c c
c c
2 Lặp lại thuật toán: Đặt D ove( )0 =D ove* Đặt chỉ số lặp i = 0
i n
i n m
c
c x Q i
n
c
m
x Q
m 1
1X
iii Đặt i = i+1
iv Tính