Tải bản đầy đủ (.pdf) (44 trang)

Xây dựng hệ thống nhận dạng tiếng nói tiếng việt dựa trên mô hình markov ẩn dùng sphinx

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (2.15 MB, 44 trang )

MICA International Research Insitute

Báo cáo nhận dạng tiếng nói

Giảng viên hướng dẫn:

Đỗ Thị Ngọc Diệp

Sinh viên thực hiện:
Mã số sinh viên:
Lớp:

Nguyễn Văn Thịnh
20122512
KSCLC HTTT&TT K57

Hà Nội 29/04/2016


Contents
Chương 1: Tổng quan về nhận dạng tiếng nói ................................................................................................... 3
1.1

Cách tạo thành tiếng nói ..................................................................................................................... 3

1.2

Xử lý tiếng nói ..................................................................................................................................... 4

1.3


Nhận dạng tiếng nói ............................................................................................................................ 4

1.3.1

Lịch sử của nhận dạng tiếng nói................................................................................................ 4

1.3.2

Tình hình phát triển nhận dạng tiếng nói ................................................................................ 4

1.3.3

Nhập dạng tiếng nó tự động ASR .............................................................................................. 5

Chương 2: Xử lý tín hiệu tiếng nói ...................................................................................................................... 6
2.1

Biểu diễn tín hiệu tiếng nói ................................................................................................................. 6

2.2

Trích chọn đặc trưng MFCC ............................................................................................................. 9

2.2.1

Tổng quan về MFCC .................................................................................................................. 9

2.2.2

Pre-emphasis ............................................................................................................................... 9


2.2.3

Cửa sổ hóa ................................................................................................................................. 10

2.2.4

Biến đổi DFT ............................................................................................................................. 11

2.2.5

Mel filterbank log ..................................................................................................................... 11

2.2.6 Tính hệ số cepstral bởi IDFT (Dùng DCT), deltas, energy ......................................................... 13
Chương 3: Mô hình markov ẩn ......................................................................................................................... 13
3.1

Markov chain..................................................................................................................................... 13

3.2 Hidden Markov Model ............................................................................................................................ 14
3.3

Thuật toán Forward và Backward .................................................................................................. 15

3.4

Thuật toán Viterbi............................................................................................................................. 18

3.5


Thuật toán Baum Welch .................................................................................................................. 19

Chương 4: Áp dụng mô hình markov ẩn trong nhận dạng tiếng nói ............................................................. 20
4.1

Mô hình ngôn ngữ N-gram ............................................................................................................... 20

4.2

Quá trình nhận dạng ......................................................................................................................... 21

4.3

Áp dụng mô hình markov ẩn .......................................................................................................... 23

Chương 5: Ứng dụng nhận dạng số một người nói .......................................................................................... 24
5.1

Cài đặt pocketShinx .......................................................................................................................... 24

5.2

Xây dựng mô hình ngôn ngữ ............................................................................................................ 25

5.2.1

Xây dựng bộ từ điển ................................................................................................................. 25

5.2.2


Xây dựng mô hình ngôn ngữ ................................................................................................... 25

5.3

Xây dựng mô hình âm học ................................................................................................................ 27

5.3.1

Chuẩn bị các folder và tập tin ................................................................................................. 27

5.3.2

Xây dựng mô hình âm học ....................................................................................................... 30

5.4

Xây dựng ứng dụng demo tên Funny .............................................................................................. 34

5.4.1 Lập trình cho ứng dụng ................................................................................................................... 34
5.4.2 Cài đặt và chạy ứng dụng ................................................................................................................ 41
Danh mục hình ảnh ............................................................................................................................................ 43
Tài liệu tham khảo .............................................................................................................................................. 44

2


Chương 1: Tổng quan về nhận dạng tiếng nói
Cách tạo thành tiếng nói
Tiếng nói là là song âm la truyền trong môi trường nhất định mang thông tin
con người muốn truyền đạt.

Sơ đồ bộ máy phát âm của con người:
1.1

Hình 1: Bộ máy tạo tiếng nói
Vocal folds : Dây thanh
Mouth cavity : tuyến âm (miệng) tạo ra các tấn số formant
Nasal cavity: (mũi) như hộp cộng hưởng kết hợp với miệng tạo ra các tần số
antiformant
Không khí đi từ phổi đến thanh quản sau đó ra ngoài bằng mũi hoặc miệng trong
quá trình di chuyển dưới sự tác động của bộ máy tạo tiếng của con người nên tạo ra
các sóng âm
Âm thanh con người phát ra có hai loại
- Âm hữu thanh: âm phát ra khi khí đi qua thanh môn kết hợp với dây
thanh căng tạo dao động.
- Âm vô thanh: khi dây thanh môn không giao động hoặc giao động nhỏ
Mô hình tạo tiếng nói fant

3


+) Với : G(z): bộ phận nguồn tạo tiếng nói (Pharynx, soft plate,Larynx..)
V(z): tuyến âm (Miệng)
R(z): Tán xạ môi trường truyền
Mô hình toàn điểm cực AR: T(z)=G(z)*V(z)*R(z) = α/A(z)
2𝐾+1
A(z) = 1 + ∑𝑖=0 𝑎𝑖 ∗ 𝑧 −𝑖
Xử lý tiếng nói
Xử lý tiếng nói là nghiên cứu tiếng nói của con người dưới dạng tín hiệu và
các phương pháp xử lý những tín hiệu này
Các phần của xử lý tiếng nói:

+ Nhận dạng tiếng nói (speech recognition): mục đích phân tích và xử lý
tiếng nói dưới dạng tín hiệu chuyển nội dung thành đầu vào máy tính một
cách có ngữ nghĩa.
+ Nhận dạng người nói (speaker recognition)
+Tăng chất lượng tiếng nói.
+ Mã hóa tiếng nói: mã hóa dữ liệu tiếng nói (sau khi tiếng nói đã được lấy
mẫu và lượng tử hóa) giúp truyền tiếng nói trong quá trình truyền tin ( để nén
dữ liệu, chống nhiễu, sửa sai…)
+ Tổng hợp tiếng nói: tạo ra tiếng nói một cách nhân tạo
+ Phân tích giọng nói
+ Định vị nguồn âm
1.2

1.3
Nhận dạng tiếng nói
1.3.1 Lịch sử của nhận dạng tiếng nói
Lịch sử của nhận dạng tiếng nói đã trải qua năm thế hệ:
Thế hệ 1: Bắt đầu từ năm 30-50 thế kỷ trước sử dụng phương thức ad hoc (trong
mạng máy tính????) nhận dạng âm, bộ từ với số lượng nhỏ.
Thế hệ 2: năm 50-60 sử dụng phương thức acoustic-phonetic để nhận dạng âm vị
(phonemes) , âm tiết, từ vựng, số.
Thế hệ 3: từ năm 60-80 sử dụng phương pháp nhận dạng mẫu để nhận dạng ,
lượng tử hóa các vecter (thương theo 8bit, 16bit) để giảm dung lượng. nhận dạng
các bộ từ vựng vừa và nhỏ.
Thế hệ 4: từ những năm 80- 2000: sử dụng phương pháp thống kê với mô hình
markov ẩn (hidden markov model) mô phỏng tính chất thống kê của tín hiệu tiếng
nói, và một số phương pháp khác …
Thế hệ 5: hiện nay đang phát triển sử dụng các giải pháp xử lý song song để tang
độ tin cậy, kết hợp các phương pháp acousticphonetic và HMM để phát hiện, sửa
chữa ngoại lệ ngôn ngữ.

1.3.2 Tình hình phát triển nhận dạng tiếng nói
Các phương thức được sử dụng phổ biến:
Hidden markov model:
Dynamic time warping
Neural network
Deep neural network
Ứng dụng
Trong các hệ thống thông minh sử dụng điều khiển giọng nói
4


Trong quân sự
Trong y tê: kiểm tra tổn thương thanh quản…
Trong công nghệ thông tin: trợ lý ảo ….
Trong giáo dục: giúp xây dựng phần mềm học ngôn ngữ
1.3.3 Nhập dạng tiếng nó tự động ASR
Giao tiếp ngôn ngữ nói giữa người và máy:

Hình 2: Mô hình giao tiếp tiếng nói người và máy
Tiếng nói của con người được đưa vào máy thông qua quá trình nhận
dạng(recognition) và chuyển thành các đoạn văn bản, từ những đoạn văn bản máy
học cách hiểu nghĩa và tạo thành tiếng nói từ văn bản đó thông qua quá trình tổng
hợp tiếng nói (synthesis)
Kiến trúc của nhận dạng tiếng nói tự động automatic speech recognition

Hình 3: Kiến trúc ASR
ARS chuyển đổi từ tín hiệu tiếng nói thành từ hoặc câu có nghĩa.
- Hệ thống nhận dạng tiếng nói liên tục chia tiếng nói liên tục thành các
lớp nhận dạng với mục đích ghi chép
5



-

-

 Lớp ghi chép có mục tiêu nhận dạng từ
 Lớp hiểu có mục tiêu hiểu nghĩa các câu
Quá trình hoạt động của ARS
 Quá trình nhận dạng : các vector đặc trưng được đem ra so
sánh với các mẫu tham khảo sau đó hệ thống tính toán độ
tương đồng (dùng likelihood) của các vector đặc trưng với mẫu
tham khảo.(thuật toán Viterbi) vector nào có độ tương đồng cao
nhất chính là vector kết quả nhận dạng (vector này thường là
đặc trưng của một phone)
 Quá trình huấn luyện: xây dựng các vector đặc trưng sau đó sử
dụng các vector đó là tham số đầu vào để thực hiện nhận dạng.
các vector đặc trưng được đưa vào hệ thống để ước lượng
tham số của mẫu tham khảo, mẫu tham khảo mô phỏng một từ
đơn âm hoặc 1 đơn vị tiếng nói (phonetic)
Phương pháp để trích trọn đặc trưng phổ biến là mạch lọc mel kết hợp
với biến đổi phổ mel sang miền cepstral (MFFC)

Chương 2: Xử lý tín hiệu tiếng nói
2.1

Biểu diễn tín hiệu tiếng nói

Tín hiệu tiếng nói trong miền thời gian liên tục rất khó để máy tính và các thiết
bị điện tử có thể sử dụng vậy nên ta phải rời rạc hóa nó bằng cách lấy mẫu và

lượng tử hóa nó lúc đó máy tính mới có thể xử lý được. Nhưng để khảo sát trong
miền thời gian việc kháo sát và xử lý là rất khó khan do đó phải sử dụng them khách
miền khác. Ta sẽ xem sé việc chuyển đổi sang hai miền là miền tần số và miến
cepstral.
Biến đổi sang miền tần số:
Discrete time fourier transform
Tín hiệu vào x[n]

Mặc dù x[n] rời rạc nhưng X(e^jw) là liên tục và tuần hoàn trên miền phổ
Phép nhân chập:

Nhân chập với hàm cửa sổ w[n]:
6


Với x[n] tín hiệu vào, y[n] tín hiệu ra, w[n] hàm cửa số, h[n] thường là đáp ứng xung
của hệ thống ( nếu xét các biến trên trong một hệ thống cụ thể)
Biến đổi fourier trong khoảng thời gian hữu hạn:

Nếu ta có n cố định thì:

Hai biểu thức trên có ý nghĩa chỉ khi Xn(e^jw) là biến đổi fourier của tín hiệu liên tục
bên ngoài cửa sổ w[n] hoặc = 0.
Có các loại cửa số là: chữ nhật,hanning, hamming, tam giác…
Discrete of fourier transform
Do biến đổi discrete time fourier transform là biến đổi từ tín hiệu vô hạn nhưng trong
thực tế tín hiệu là hữu hạn nên ta phải dùng đến phép biến đổi DFT
Tín hiệu vào x[n] rời rạc hữu hạn

7



Với M>=N và những điểm lớn hơn N đều là không ta được tín hiệu trong miền tần số
X[k]
Biến đổi sang miền cepstral
Mục đích nghiên cứu phép nhân chập. ( giúp tìm formant ) tìm các đặc tính của tín
hiệu tiếng nói tạo ra.
Ta có x1*x2= X1.X2=X(z) trong miền Z
Lấy logarithm của X(z) ta được
Ký hiệu các X1,X2,x1,x2 tương tự X(z) mũ phía trên.
Nếu X ˆ (z) là giá trị duy nhất hợp lệ của biến đổi z thì
ta có:
Chuyển trang biến đổi fourier z=e^-jw
Suy ra

Biến đổi fourier ngược ta được:

C[n] chính là biến đổi cepstrum.
Với trường hợp biến đổi fourier là DFT ta thấy:

Ứng dụng vào trong tín hiệu tiếng nói
Mô hình tín hiệu tiếng nói:
Âm hữu thanh:

Âm vô thanh:

8


Từ mô hình ta phân tích phép nhân chập bằng cách nhân cepstrum với một cửa sổ

phù hợp:
Với e D∗ là đặc trưng của hệ thống chuyển đổi sang phép nhân chập.

Hệ thống nhận dạng tiếng nói sử dụng cách biểu diễn tín hiệu như một tập các hệ số
cepstral

2.2

Trích chọn đặc trưng MFCC

2.2.1 Tổng quan về MFCC

Hình 4: Tính 39 MFCC từ tín hiệu vào
Tín hiệu tiếng nói dạng sóng âm được xử lý chuyển thành tín hiệu điện tương
tự, tín hiệu này được chuyển sang dạng tín hiệu số qua hai bước lấy mẫu và lượng
tử hóa (quá trình lấy mẫu phải thỏa mãn tiêu chuẩn Nyquist) rồi sau đó được đưa
vào hệ thống nhận dạng tiếng nói.
Trong hệ thống nhận dạng tín hiệu tiếng nói sẽ được phân tích thông qua
quá trình trích chọn đặc trưng để lấy ra các đặc trưng của tiếng nói đưa vào hệ
thống nhận dạng. Ở đây chúng ta sử dụng phương pháp trích chọn đặc trưng MFCC
gồm có các công đoạn được biểu diễn trên hình.
Đầu ra của MFCC là 39 đặc trưng, 12 hệ số ceptral (hệ số MFCC),12 deltas ceptral,
12 deltas deltas cepstral, 1 energy, 1 delta energy, 1 delta delta energy
2.2.2 Pre-emphasis
Do cấu trúc đặc biệt của môi trường thanh quản nên mức năng lượng (cường
độ sóng) ở tần số cao suy giảm hơn so với tần số thấp mà ở tần số cao thông tin về
Formant có nhiều giá trị cho acoustic model làm tăng độ chính xác của nhận dạng
phone do đó ta cần làm tăng energy của tín hiệu ở tần số cao, quá trình này được
gọi là preemphasis
Pre-emphasis sử dụng một bộ lọc nhận tín hiệu ở đầu vào và đầu ra là tín

hiệu mong muốn :
Đầu vào: x[n]
Đầu ra: y[n] = x[n] + αx[n-1] với 0,9≤α≤1
H(z) = 1 – αz^-1
9


2.2.3 Cửa sổ hóa
Tín hiệu tiếng nói là non-stationary signal do đó các thuộc tính thống kê
không phải là hằng số thay vào đó với giả thuyết tín hiệu là stationary trong một
khoảng thời gian đủ ngắn ta có sẽ có được những đại lượng đặc trưng thống kê coi
như không đổi Do đó ta có thể lấy được những đặc trưng riêng biệt của một
subphone trong một thời gian ngắn.
Để trích được tín hiệu trong khoảng thời gian ngắn ta sử dụng một cửa sổ
nhỏ và tín hiệu được tríc ra bởi cửa sổ này gọi là frame. Trên toàn bộ đoạn tín hiệu
chúng ta sẽ trích thành T frame. Đặc trưc của quá trình trích rút này là bộ 3 tham số:
độ rộng frame, hình dạng cửa sổ, frameshift.
Ta sẽ lấy T frame từ tín hiệu, mỗi frame này sẽ có độ ông trong khoảng 20-40
ms trung bình là 30ms, lấy liên tiếp các frame sao cho frameshift cách nhau chừng
10ms. Ta lấy ra mỗi frame từ tín hiệu bằng cách nhân với các hàm cửa sổ
y[n]=w[n]s[n]
Thông thường sử dụng cửa sổ hamming
2𝜋𝑛
0,54

0,46
cos
(
);0 ≤ 𝑛 ≤ 𝑁 − 1
w[n] = {

𝑁
Với N là số mẫu trong frame

0

Mỗi frame được đặc trưng bởi một bộ thông số và bộ thông số này chính là một
quan sát đầu vào ot của HMM

Hình 5: quá trình nhân với hàm cửa sổ
10


2.2.4 Biến đổi DFT
Công thức tính DFT

−𝑗2𝜋𝑘𝑛/𝑁
X[k] = ∑𝑁−1
𝑛=0 𝑥[𝑛]𝑒

X[k] mang thông tin về độ lớp độ lớn và pha của thành phần tần số. Phương pháp
hiệu quả để tính DFT là FFT
Quy đổi giữa miền tần số và miền DFT
Để có đáp ứng tần số miền rời rạc ta có 2 cách là rời rạc hóa miến tần số và tính
DFT. Nhưng hai cách này phải đảm bảo các điểm có giá trị bằng đáp ứng tần số tại
điểm đó thìa trùng nhau giữa hai phương pháp.Minh họa

Hình 6: Biến đổi DFT
Như hình ta thầy mặc dù số điểm N khác nhau nhưng độ lớn khung trên dải tần số
là như nhau vậy nên sau khi biến đổi DFT N điểm thì với mọi N khoảng cách giữa 2
điểm gần nhau nhất là Fs/N.

2.2.5 Mel filterbank log
Phương pháp áp dụng trên mỗi frame
Tai nghe của con người cảm nhận sự thay đổi của âm thanh không tuyến tính (kém
ở tần số cao đặc biệt trên 1000hz)
Do đó để quan sát ta không sử dụng tần số thông thường mà dùng thang đo mel với
tần số

-

Fmel = 2595log(1+Fhz/700)
ở các tần số <1000hz quan hệ giữa Fmel và Fhz là tuyến tính
ở tần số >1000hz quan hệ giứa Fmel và Fhz là logarithm

Tai nghe con người thu nhận âm thanh như những bộ lọc và chỉ tập trung vào
những tần số nhất định. Dựa vào đặc điểm này hệ mạch lọc mel scale filter banks
11


được sử dụng (which collect energy from each frequency band) để thu thập năng
lượng trên mỗi frame. Trong miền tần số các tần số trung tâm của bộ lọc phân bố
không tuyến tính, các thành phần <1000hz tập trung nhiều bộ lọc hơn vì nó chứa
nhiều thông tin hơn.
Ta sử dụng bộ lọc filter bank là bộ lọc tam giác, ta thường dùng dãy các mạch lọc
trong khoảng từ 20  40 mạch lọc
Phương pháp tìm các bộ lọc filter banks

Hình 7: Dải các bộ lọc mel
Ta thường chọn Fs/2 là uper frequency và 0 là lower frequency. Trên dải tần từ 0>Fs/2 ta tính:
Fmel(0) = 2595log(1+0/700)
Fmel(uper) = 2595log(1+Fs/2/700)

Trong thang mel khoảng từ [Fmel(0);Fmel(uper)] ta lấy các điểm cách đều nhau.
Ví dụ cầ 26 bộ lọc filter bank:
Thì trên thang mel ta lấy 26 điểm cách đều nằm trong khoảng trên và tính cả hai
điểm đầu mút của khoảng thì sẽ là 28 điểm.
Ta được bộ các tần số Fmel(i) = (Fmel(1),…,Fmel(28))
Tính ngược lại bằng công thức Fhz = 700exp(Fmel/1125-1)
Ta được bộ các điểm tần số Fhz(i) = (f(1),…,f(28))
Từ đây ta tìm được bộ các filterbank tam giác như sau:
“ filterbank đầu tiên bắt đầu từ điểm đầu tiên , đạt đỉnh tại điểm 2 và trở về zero tại
điểm 3. Filterbank thứ 2 bắt đầu tại điểm thứ 2, đạt đỉnh tại điểm thứ 3 và về zero tại
điểm 4… tương tự với các bộ lọc tiếp theo”.
Sau khi tìm được các filterbank việc tiếp theo là tính năng lượng trên mỗi
frame dựa vào các filterbank này
Lẫy mỗi filterbank của bộ các filterbank này đem đi lọc frame. Tức là lấy DFT của
frame * each filter bank (chú ý sau hi tính DFT kết qur được rời rạc N điểm ta phải
đổi N điểm này ra các điểm trên miến tần số với N, N  Fs)
12


Lấy tổng các điểm còn lại sau khi lọc, đưa tổng đó vào giá trị 𝑚𝑖
Làm lần lượt với tất cả các bộ lọc ta được dãy giá trị M = (m1,m2,…mk) với k là số
bộ lọc filter banks (thường k-26)
Tiếp theo lấy log( |𝑚𝑖 |2 )
2.2.6 Tính hệ số cepstral bởi IDFT (Dùng DCT), deltas, energy
Ta tính các hệ số cepstral dựa vào công thức sau:
𝐾

1 𝜋
𝐶(𝑖) = ∑ log(|𝑚𝑖| 2 )cos(𝑖(𝑗 − )
2 𝐾

𝑗=1

Ta lấy 1≤i≤12 ta được 12 hệ số MFCC
Tính ΔC: để nâng cao chất lượng nhận dạng ta đưa them giá trị đạo hàm
∑𝑁
𝑛=1 𝑛(𝐶𝑡+𝑛 − 𝐶𝑡−𝑛 )
∆𝐶(𝑡) =
2 ∑𝑁
𝑛=1 𝑛^2
Thường chọn N=2, và
Chú ý:
Ct = Ct+1-Ct với t<0
Ct=Ct-Ct+1 với t>T-N với T=12
Ta lấy 1≤t≤12 ta lại được 12 hệ số nữa.
(Có một công thức chuẩn hóa để tính hệ số đó là:
𝐶𝑡+1 − 𝐶𝑡−𝑛
∆𝐶(𝑡) =
; 𝑡ℎườ𝑛𝑔 𝑐ℎọ𝑛 𝑛 = 1,2 (𝑡𝑟𝑜𝑛𝑔 𝑐𝑢ố𝑛 𝑑𝑎𝑛𝑖𝑒𝑙 𝑐ℎọ𝑛 𝑛 = 1)
2𝑛
Tiếp tục tính ΔΔC : bằng cách thay Ct bởi ΔCt và t=1,…,12 ta lại được 12 hệ số
Tính energy:
𝑡2

𝐸 = ∑ 𝑥[𝑡]2
𝑡=𝑡1

Với t1 là mẫu bắt đầu frame và t2 là mẫu kết thúc frame.
Được 1 hệ số
Tiếp theo tính ΔE và ΔΔE ta được them 2 hệ số
Tổng lại ta đã được 12 hệ số cần tìm


Chương 3: Mô hình markov ẩn
3.1

Markov chain

Markov chain hay còn gọi là xích markov là một quá trình ngẫu nhiên rời rạc với
tính chất markov.
- Một quá trình ngẫu nhiên có tính chất markov thì điều kiện là trạng thái tương lai
chỉ phụ thuộc vào trạng thái hiện tại và không phụ thuộc vào trạng thái quá khứ.
- Markov chain là một dãy X1,X2,…,Xn các biến ngẫn nhiên
Gọi S: tập các giá trị có thể có của Xn thì S chính là không gian trạng thái của hệ
- Xét chuỗi các biến ngẫu nhiên nói trên: Xn+1 chỉ phụ thuộc Xn do đó
P(Xn+1=x|X0,X1,…,Xn) = P(Xn+1=x|Xn)
 Dựa trên tính chất markov
13


Ta biểu diễn markov chain biểu diễn bởi ma trận xác suất: P(Xn+1=x|Xn=y)
Tính chất của markov chain:

Mô tả markov chain dựa trên finite automata
Markov chain là một trường hợp đặc biệt của weighted finite state automata
Ta có:
Trong không gian trạng thái hữu hạn S = {Si, i= 1,2,…,N}
Xác suất chuyển trạng thái:
P(Xn+1=Sj|Xn=Si) = aij(n) với i,j=1,2…N
aij được gọi là xác suất chuyển trạn thái và aij độc lập với thời gian
Một markov chain được biểu diễn bởi một finite automata có các thành phần sau:
Q = q1,q2,…,qN :Tập của N trạng thái

A = a01,a02,…an1,…,anm : ma trận chuyển trạng thái với aij là xác suất chuyển từ
trạng thái I sang trạn thái j. có ∑𝑁
𝑗=1 𝑎𝑖𝑗 =1 ∀𝑖
q0,qf : trạng thái khởi đầu và kết thúc
Trong nhiều trường hợp sẽ sử dụng đến khái niệm phân bố xác xuất khởi tạo π =
{πi} thay cho q0. Với πi là xác suất mà markov chain bắt đầu ở trạng thái Si. Nếu πi
= 0 không thể bắt đầu ở Si và ∑𝑁
𝑖=1 𝜋𝑖 = 1
QA = {…Sx,Sy…} tập chấp nhận đc là con của Q

3.2 Hidden Markov Model
Biểu diễn HMM thông qua finite automata gồm các thành phần:
Q = q1,q2,…,qN :Tập của N trạng thái
A = a01,a02,…an1,…,anm : ma trận chuyển trạng thái với aij là xác suất chuyển từ
trạng thái I sang trạn thái j. có ∑𝑁
𝑗=1 𝑎𝑖𝑗 =1 ∀𝑖
O = o1,o2,…,oT: là một chuỗi T các quan sát được tại các thời điểm t khác nhau.
Mỗi oi thuộc tập V = {v1,v2,…vm} là tập tất cả các quan sát có thể được trong mỗi
trạng thái.
B ={ bj(k) } : phân bố xác xuất các quan sát được trong trạng thái Sj. bj(k) =
P(vk=ot,qt=Sj) có bj(k) là xác xuất quan sát được sự kiện vk trong trại thái Sj.
Π = {πi} :phân bố xác suất khởi tạo.
QA = {qx,qy…} ; QA (con của Q) là tập chấp nhận được
Giả thiết markov P(qi|q1,…,qi-1) = P(qi|qi-1)
Và P(oi|q1...qi,...,qT,o1,...,oi,...,oT)= P(oi|qi)
Một mô hình HMM được đại diện bởi bộ tham số: Λ = (A,B,π)
Ví dụ:

14



Hình 8: Ví dụ mô hình markov ba trạng thái
Ở mỗi trạn thái sự kiện có thể quan sát được thuộc V = (v1,v2,v3,v4)
B = (b11,b12,…,b34) phân bố xác xuất quan sát được sự kiện và bj(k) là xác xuất
quan sát được sự kiện Vk trong trạng thái Sj.
Các trạng thái Sj được coi là ẩn so với việc quan sát. Đó là lý do tại sao ta gọi là mô
hình markov ẩn.
Ba vấn đề chính của hidden markov model:
HMM is characterized by three fundamental problems
- Problem 1 (Computing likelihood): cho mô hình λ(A,B,π) và chuỗi quan sát
được O xác định độ tương đồng (likelihood) P(O|λ)
- Problem 2 (decoding): Cho một cuỗi quan sát O và mô hình HMM λ(A,B,π), tìm
ra chuỗi Q tối ưu nhất đã phát sinh ra O
- Problem 3 (learning): cho một chuỗi quan sát O và tập các trạng thái của HMM,
điều chỉnh các tham số λ = {A, B, π} của HMM để P(O| λ) lớn nhất. (Đây chính là
bài toán huấn luyện mô hình. Bài toán này đem lại khả năng rất quan trọng của
HMM đó là mô hình hóa đối tượng cụ thể trong thực tế với dữ liệu liên tục)
Solution for three problems.
Problem 1: the forward or backward algorithm
Problem 2: the Viterbi algorithm
Problem 3: the baum – welch algorithm

3.3

Thuật toán Forward và Backward
Ví dụ:

Hình 9: Ví dụ mô hình markov thời tiết
Ví dụ này chúng ta sẽ giải quyết sau khi xem xét chút lý thuyết.
Cho một chuỗi quan sát được O = {o1,o2,…,oN) và tham số mô hình HMM λ = {A,B,

π}
15


Ta có:
P(O| λ) = ∑𝑎𝑙𝑙 𝑄 𝑃(𝑂, 𝑄| λ ) là tổng xác suất của các chuỗi Q có thể sinh ra O trong
mô hình λ.
Suy ra: P(O,Q| λ) = P(O|Q, λ)*P(Q| λ)
Trong đó: P(O|Q, λ) = Bq1(O1)*bq2(O2)*…*bqT(OT) : là xác suất quan sát được
chuỗi O sinh ra từ một chuỗi Q=(q1,q2,…,qT)
Và: P(Q| λ) = 𝜋𝑞1 𝑎𝑞1𝑞2 𝑎𝑞2𝑞3 … . 𝑎𝑞𝑇−1𝑞𝑇 là xác suất sinh ra một chuỗi Q=q1,…,qT
từ mô hình λ.
Vậy nên: P(O|λ) = q1,q2,...,qT πq1 bq1 (o1)aq1q2 bq2 (o2)...aqT−1qT bqT (oT )
Số phép toán phải thực hiện 2T*N^T rất lớn.
Xem Ví dụ trên đầu: O = { 3 1 3}
Với một chuỗi Q cụ thể P(3 1 3, hot cold hot) =
P(hot|start)*P(hot|hot)*P(cold|hot)*P(3|hot)*P(1|hot)*P(3|cold)
Với tất cả các chuỗi sinh ra O: P(3 1 3) = P( 3 1 3|cold cold cold)+P(3 1 3|cold
cold hot) +…
VỚI CÁCH RẤT DÀI NÀY KHÔNG KHẢ THI VẬY TA SẼ XEM XÉT HAI GIẢI
THUẬT SAU GIÚP SỐ LƯỢNG PHÉP TÍNH ÍT HƠN.
GIẢI THUẬT FORWARD:
Đặt 𝛼𝑡 (𝑗) là xác suất ở trạng thái Sj sau khi quan sát được t quan sát O=o1…ot
αt(j) =P(o1…ot,qt=Sj|λ)
Ví dụ:

Hình 10: Quá trình thực hiện giải thuật Forward

16



Trong đó: 𝛼2 (2) = 𝛼1 (2) ∗ 0,14 + 𝛼1 (1) ∗ 0,08
αt(j) chính là tổng xác xuất trên tất cả các đường dẫn tới ô trạng thái Sj khi đã quan
sát được t quan sát O.
Ta có:
αt(j) = ∑𝑁
𝑖=1 𝛼𝑡−1 (𝑖) ∗ 𝑎𝑖𝑗 ∗ 𝑏𝑗(𝑜𝑡 )
với:
𝛼𝑡−1 (𝑖) is previous forward path probability
aij là xác xuất chuyển trạn thái từ Si sang Sj
bj(ot) là xác suất quan sát được ot tại trạng thái Sj
Thủ tục forward:
B1: khởi tạo
α1(j) = πjbj(o1), 1 ≤ j ≤ N
B2: quy nạp
αt (j) = ∑𝑁
𝑖=1 𝛼𝑡−1 (i) aij]bj (ot) với 1<=j<=N và 1B3: kết thúc
P(O|λ) = 𝛼 𝑇 (𝑞𝐹)=∑𝑁
𝑖=1 αT (i)

GIẢI THUẬT BACKWARD
Gọi βt(i) là xác suất mà tại trạng thái Si thời điểm t quan sát được chuỗi trạng thái
O(ot+1,…,oT)
Ta có: βt(i) = P(ot+1ot+2 ...oT |qt = si, λ)
Thủ tục Backward:
Khởi tạo: βT (i)=1, 1 ≤ i ≤ N
Quy nạp: βt (i) = ∑𝑁
𝑗=1 β𝑡+1 (j) aij]bj (𝑜𝑡+1 ) với t=T-1,T-2,…,1 và 1<=i<=N
Minh họa:


Hình 11: Quá trình thực hiện giải thuật Backward

17


3.4

Thuật toán Viterbi

Yêu cầu: Tìm ra chuỗi trạng thái tối ưu nhất Q={q1,…,qT} đã phát sinh ra
O
Việc tìm ra Q này được gọi là quá trình decoding.
Để tìm ra Q tối ưu nhất ta cần có một tiêu chí nào đó và sau đây sẽ xem xét hai tiêu
chí để xem ta nên chọn tiêu chí nào trong hai tiêu chí này:
- Tiêu chí 1: tại thời điểm t chọn ra qt có độ khả thi cao nhất thông qua xác suất:
P(qt=Si|O,λ).
Đặt (𝑖) = P(𝑞𝑡 = 𝑆𝑖 |𝑂, 𝜆) => ∑𝑁
𝑖=1 γt(i) = 1 với mọi t
𝛼(𝑖)𝛽(𝑖)
Suy ra: (𝑖) = 𝑃(𝑂|𝜆) trạng thái tối ưu nhất tại thời điểm t là
Tức là qt =i với 1<=i<=N sao cho (𝑖) đạt cực đại. Từ đó tìm ra qt và Q.
Tuy nhiên: đôi khi Q không tồn tại vì có thể có xác xuất chuyển trạn thái bằng 0
do đó ta sẽ xem sét tiêu chí tiếp theo (Được sử dụng chủ yếu)
- Tiêu chí 2: tìm ra chuỗi Q sao cho P(Q,O|λ) đạt cực đại.
Giải pháp là thuật toán viterbi sau đây.
Thuật toán Viterbi
Xem ví dụ:

Hình 12: Quá trình hoạt động thuật toán Viterbi

Ví dụ trên ta thấy cách tính của biến vt(j) biến này sẽ được ký hiệu lại là 𝜎t(j).
Biến 𝜎t(j) là xác suất cao nhất của chuỗi trạng thái trên đường dẫn đến trạng thái Sj
ở thời điểm t và đã quan sát được o1,…,ot với mô hình λ cho trước.
Ta có:
18


𝛿𝑡 (𝑖) =
Hay :

max 𝑃(𝑞1 , 𝑞2 , … , 𝑞𝑡 = 𝑆𝑖 , 𝑂1 𝑂2 … 𝑂𝑡 |𝜆)

𝑞1 ,𝑞2 ,…,𝑞𝑡

𝛿𝑡 (𝑖) = max 𝛿𝑡−1 (𝑖) ∗ 𝑎𝑖𝑗 ∗ 𝑏𝑗(𝑜𝑡)
1≤𝑖≤𝑁

Để lưu lại chuỗi trạng thái ta dữ lại vết của đường dẫn tốt nhất tại thời điểm t trạng
thái Si thông qua mảng 𝜓𝑡 (𝑖) là mảng 2 chiều T quan sát và chiều còn lại là N trạng
thái. Mảng 𝜓𝑡 (𝑗) chưa các biến 1<=i<=N là vết cần lưu.
Thủ Tục viterbi
Khởi tạo:
𝛿𝑡 (𝑖) = 𝜋𝑖 𝑏𝑖 (𝑂1 ), 1 ≤ 𝑖 ≤ 𝑁
𝜓1 (𝑖) = 0
Lặp:
𝛿𝑡 (𝑗) = max [𝛿𝑡−1 (𝑖)𝑎𝑖𝑗 ]𝑏𝑗 (𝑂𝑡 ), 2 ≤ 𝑡 ≤ 𝑇, 1 ≤ 𝑗 ≤ 𝑁
1≤𝑖≤𝑁

𝜓𝑡 (𝑗) = 𝑎𝑟𝑔 max [𝛿𝑡−1 (𝑖)𝑎𝑖𝑗 ], 2 ≤ 𝑡 ≤ 𝑇, 1 ≤ 𝑗 ≤ 𝑁
1≤𝑖≤𝑁


Tức là với 𝜓𝑡 (𝑗) = i với 1<=i<=N sao cho 𝛿𝑡−1 (𝑖)𝑎𝑖𝑗 max
Kết thúc:

𝑝∗ = max [𝛿𝑇 (𝑖)]
1≤𝑖≤𝑁

𝑞𝑡∗ = 𝑎𝑟𝑔 max [𝛿𝑇 (𝑖)]
1≤𝑖≤𝑁

Tức là 𝑞𝑡∗ =i sao cho 𝛿𝑇 (𝑖) max.
Tìm chuỗi Q bằng cách quay lui:
∗ ),
𝑞𝑡∗ = 𝜓𝑡+1 (𝑞𝑡+1
𝑡 = 𝑇 − 1, 𝑇 − 2, … , 1
∗ )
Với 𝜓… (… ) là mảng 2 chiều T quan sát N trạng thái và 𝜓𝑡+1 (𝑞𝑡+1
là giá
trị một ô trong mảng.
Sau khi quay lui ta được chuỗi 𝑄 = 𝑞1∗ 𝑞2∗ … 𝑞𝑇∗ là chuỗi cần tìm.

3.5

Thuật toán Baum Welch

Bài toán cho một chuỗi quan sát O tìm hoặc cật nhật lại tham số của mô
hình λ(A,B,π) sao cho P (O|λ) cực đại ta được bộ tham số mới 𝜆̅ = (𝐴̅, 𝐵̅ , 𝜋̅).
Ta có: P (O|𝝀̅) > P (O|λ) trong mọi trường hợp trừ khi λ đã đạt đến tối ưu cục
bộ.
Để giải quyết bài toán trên ta dùng thuật toán Baum Welch.

Tính toán:
Ta có 𝑎̅𝑖𝑗 =

kỳ vọng việc chuyển trạng thái từ Si sang Sj
kỳ vọng việc chuyển trạng thái từ Si

Để tính được tử số ta định nghĩa biến: 𝜉𝑡 (𝑖, 𝑗) là xác suất mà hệ ở trạng thái Si thời
điểm t và ở thời điểm t+1 hệ phải ở trạng thái Sj.
𝜉𝑡 (𝑖, 𝑗) = 𝑃(𝑞𝑡 = 𝑆𝑖 , 𝑞𝑡+1 = 𝑆𝑗 |𝑂, 𝜆)
Để tính được 𝜉𝑡 (𝑖, 𝑗) ta xem xét một biến khác đó là
Not-quite𝜉𝑡 (𝑖, 𝑗) = 𝑃(𝑞𝑡 = 𝑆𝑖 , 𝑞𝑡+1 = 𝑆𝑗 , 𝑂|𝜆)
Biến này khác 𝜉𝑡 (𝑖, 𝑗) ở đ𝑖ề𝑢 𝑘𝑖ệ𝑛 𝑂
Ta có: Not-quite𝜉𝑡 (𝑖, 𝑗) = αt(i)ai jb j(ot+1)βt+1( j)
𝑃(𝑋,𝑌|𝑍)
Mà P(X|Y, Z) = 𝑃(𝑌|𝑍)
Suy ra: 𝜉𝑡 (𝑖, 𝑗) =

Not−quite𝜉𝑡 (𝑖,𝑗)
𝑃(𝑂|𝜆)

Và 𝑃(𝑂|𝜆) = α𝑇(𝑁) = β𝑇(1) = ∑𝑁
𝑗=1 𝛼(𝑗)
19


𝛼𝑡 (𝑖)𝑎𝑖𝑗 𝑏𝑗 (𝑂𝑡+1 )𝛽𝑡+1 (𝑗)
𝛼𝑡 (𝑖)𝑎𝑖𝑗 𝑏𝑗 (𝑂𝑡+1 )𝛽𝑡+1 (𝑗)
=
∑𝑁
𝑝(𝑂|𝜆)

𝑘=1 αT(k)

𝜉𝑡 (𝑖, 𝑗) =

Ta có: ∑𝑇−1
𝑡=1 𝜉𝑡 (𝑖, 𝑗) là kỳ vọng của việc chuyển trạng thái từ Si sang Sj từ đây đã có
thể tính được 𝑎̅𝑖𝑗 .
Đặt: 𝛾𝑡 (𝑖) =

𝑃(𝑞𝑡 = 𝑗,𝑂|λ)
𝑃(𝑂|λ)

suy ra 𝛾𝑡 (𝑖) =

α𝑡( 𝑗)β𝑡( 𝑗)
𝑃(𝑂|λ)

Mà theo thuật toán Backward ta có:
βt (i) = ∑𝑁
𝑗=1 β𝑡+1 (j) aij]bj (𝑜𝑡+1 )
suy ra : 𝛾𝑡 (𝑖) = ∑𝑁
𝑗=1
hay 𝛾𝑡 (𝑖) =

α𝑡( 𝑗)β𝑡+1 (j) aij]bj (𝑜𝑡+1 )

∑𝑁
𝑗=1 𝜉𝑡 (𝑖, 𝑗)

𝑃(𝑂|λ)


Vậy ta có:
∑𝑇−1
𝑡=1 𝜉𝑡 (𝑖, 𝑗) : là kỳ vọng của việc chuyển trạng thái từ Si sang Sj từ đây đã có thể
tính được 𝑎̅𝑖𝑗 .
∑𝑇−1
𝑡=1 𝛾𝑡 (𝑖) : là kỳ vọng của việc chuyển trạng thái từ Si.
Suy ra được:
∑𝑇−1
∑𝑇−1
𝑡=1 𝜉𝑡 (𝑖, 𝑗)
𝑡=1 𝜉𝑡 (𝑖, 𝑗)
𝑎̅𝑖𝑗 = 𝑇−1 𝑁
=
∑𝑡=1 ∑𝑗=1 𝜉𝑡 (𝑖, 𝑗)
∑𝑇−1
𝑡=1 𝛾𝑡 (𝑖)
Mặt khác có 𝑣𝑘 𝑡ℎ𝑢ộ𝑐 𝑉 với V = (v1,v2,…,vk) là tập tất cả các sự kiện có thể quan
sát được có thể . và vk là một sự kiện có thể quan sát được.
Kỳ vọng số lần trong trạng thái Sj quan sát được vk
𝑏̅𝑗 (𝑘) =
Kỳ vọng số lần trong trạng thái Sj
Suy ra:
𝑏̅𝑗 (𝑘) =

∑𝑇 𝑡=1 𝛾𝑡 (𝑗)
.𝑂𝑡 = 𝑣𝑘

∑𝑇
𝑡=1 𝛾𝑡 (𝑗)


(Chú ý ở tử số thì tính với tất cả t sao cho tại thời điểm t quan sát được vk).
Từ các công thức trên ta đã đính được bộ tham số mới của mô hình 𝜆̅

Chương 4: Áp dụng mô hình markov ẩn trong nhận
dạng tiếng nói
4.1

Mô hình ngôn ngữ N-gram

Mô hình N-gram là một mô hình xác xuất
Cách cơ bản để tính xác xuất là đếm. Ta xem xét trong một ngôn ngữ tự nhiên cơ
bản được biểu thị bằng corpus
Xác xuất 1 từ trong corpus được tính bằng cách đếm số từ đó/ tống số từ trong
corpus.
Ta xem xét một lý thuyết tính xác xuất cơ bản
20


Mục đích là tính xác xuất của một từ w dựa trên các từ đã xuất hiện trước đó h. ví dụ
h=”water is so transparent that” tính xác xuất từ tiếp theo là “the” :
P(the/h) = C(is water so transparent that the)/ C(is water so transparent that)

Xét N từ là w1...wn hay wn và xác xuất P(w1,w2,...,wn)
Và với 𝑤1𝑛 là chuỗi n từ xuất phát từ w1
Ta có:

Áp dụng cho từ:

Nhưng ở công thức trên chúng ta không biết cách tính:

Ta sẽ xem xét một cách tính gần đúng
Mô hình bigram tính xác xuất của từ dựa trên từ phía trước nó:
Suy ra với mô hình N gram ta tính xác xuất dựa trên N từ phía trước nó:

Hay

Công thức tính của N gram

Từ mô hình N-gram ta có thể tính được xác xuất xuất hiện từ n theo N từ xuất hiện
trước đó, do đó ta có thể dùng mô hình N-gram để tìm ra một chuỗi từ các tự vựng
nhận dạng được.

4.2

Quá trình nhận dạng

Với mỗi acoustic đầu vào O ta có thể biểu diễn chúng như một chuỗi các
quan sát tại các thời điểm khác nhau (mỗi 10 giây và được biểu diễn bởi các giá trị
của energy, frequency…). Mỗi chỉ số của chuỗi biểu diễn một thời điểm.
Đầu vào
O=o1,o2,…,ot
Đầu ra
21


W=w1,w2,…,wn
W là chuỗi string của các từ
Để tìm được W ta sử dụng công thức sau:
Áp dung công thức bayes suy ra:


Chúng ta có thể bỏ qua P(O).
Suy ra
Trong đó: P(W) là the prior probability được tính bởi language model
Và P(O|W) là the opservation likelihood được tính bởi acoustic model.
The Language model sử dụng mô hình N-gram để tính P(w) (dưới là công thức 1gram ta xem chi tiết ở phần trên): P(W) = P(𝑤1𝑛 )

The Acoustic model được dùng để tính P(O|W)
Đôi chút về chuỗi O: là một chuỗi quan sát được lấy ra từ quá trình lấy acoustic
waveform mỗi thời điểm lấy mẫu cách nhau 10,15, 20…ms cho ta một quan sát
(mỗi quan sát là một vector đặc tính)
Minh họa Architecture for speech reconition:

Hình 13: Kiến trúc mô hình nhận dạng
Quá trình nhận dạng tiếng nói được chia thành ba giai tầng chính.

22


-

-

-

Feature exaction: acoustic waveform được lấy mẫu và trong một frame với chu
kỳ 10ms, 15 or 20ms. Tại mỗi khung trong thời điểm lấy mẫu ta biểu diễn một
vector với 39 đặc tính biểu diễn thông tin phổ ví dụ như energy, spectral change.
Acoustic modeling *: tính likelihood từ chuỗi quan sát các vector đặc tính phổ.
đầu ra của tầng này là một chuỗi các vector xác xuất mà tại mỗi time frame,
vector tại time frame đó chưa độ tương đồng(likelihood) mà mỗi phone hoặc

subphone được tạo ra bở vector đặc trưng phổ.
Decoding: lấy đầu ra của acoustic modeling đưa vào HMM dictionary rổi tổng
hợp với mô hình ngôn ngữ đầu ra là chuỗi string.

4.3

Áp dụng mô hình markov ẩn

Các vector đầu vào chuyển thành một dải cố định y = y y 1,..., T nhờ một quá trình
chọn hệ thống sẽ cố gắng giải bài toán

Khi đó độ tương đồng p(y/w) được xác định bằng mô hình âm học
Và p(w) được xác định bằng mô hình ngôn ngữ ( dùng N gram)
Các thành phần của mô hình markov:
Q = q1q2...qN Tập các trạng thái
A = a11a12...an1...ann : xác xuất chuyển đổi từ trạng thái I sang j
O = o1o2...oT: chuỗi quan sát có thể được
B = bi(ot) : tập các xác xuất của mỗi quan sát ot
q0,qF: tráng thái input và output
π = π1,π2,...,πN

Xác xuất input ở trạng thái i

Ví dụ về hai mô hình HMM từ “six” khác nhau (thường dùng mô hình 2)

Hình 14: Ví dụ mô hình HMM từ “six” theo phone
Hình trên minh họa một HMM cho từ six
Các thành phần của HMM khi áp dụng cho speech recognition:
Q=q1,q2,…,qn : tập các trạng thái mà mỗi trạng thái tương ứng với một subphone
A= a0,a1,…an : xác suất chuyển trạng thái (sefl loop: tự lặp) hoặc tiến tới trạng thái tiếp theo.

B=bi(ot) : xác xuất quan sát được quan sát ot trạng thái (ot nó chính một cepstral feature
vector ) khi ở trạng thái i

23


ở hình minh họa ban đầu mỗi trạng thái tương ứng với 1 phone nhưng thực tế để chính xác thì
mỗi trạng thái tương ứng một subphone và thường là 3 đến 5 subphone sẽ mô hình một phone
các mô hình này sẽ móc nối với nhau để mô hình một từ.
Mô hình từ six:

Hình 15: Ví dụ mô hình HMM từ “six” theo subphone

Chương 5: Ứng dụng nhận dạng số một người nói
5.1

Cài đặt pocketShinx

Để cài đặt được pocketsphinx ta cần tải các khói sau:
- Pocketsphinx - một thư viện nhận dạng viết bằng ngôn ngữ C
- Sphinxbase - gói thư viện nền, hỗ trợ các thư viện cần thiết cho các
gói khác.
- CMUclmtk - bộ công cụ xây dựng mô hình ngôn ngữ.
- Sphinxtrain - bộ công cụ huấn luyện mô hình ngữ âm.
Download các gói ở đây: />Rồi sau đó giải nén tất cả trong cùng một thư mục:
Cài các gói dependency: gcc, automake, autoconf, libtool, bison, swig at least
version 2.0, python development package, pulseaudio development package
Gõ : sudo apt-get install tên_các_gói
Cài sphinxbase:
Vào thư mục sphinxbase chuột phải chọn open terminal

Sau đó gõ lần lượt các lệnh
./autogen.sh
./configure
make
sudo make install
Cài sphinxtrain:
Vào thư mục sphinxtrain chuột phải open terminal
Sau đó gõ các lệnh
./configure
make
sudo make install
Cài pocketshinx
Vào thư mục pocketshinx chuột phải open terminal
Sau đó gõ các lệnh
./configure
make
sudo make install
Enjoy!

24


5.2

Xây dựng mô hình ngôn ngữ

5.2.1 Xây dựng bộ từ điển
Cho hầu hết các ngôn ngữ ta có thể sử dụng các toolkit grapheme to phone như là
Phonetisaurus
Cách thứ 2 dùng texteditor tạo file.dict là phonetic dictionary

Nội dung trong file này được viết theo cách như sau:
- Do sphinx chưa hỗ trợ unicode nên ta sẽ viết theo kiểu ascii các ký thự không
thuộc ascii sẽ viết theo cách gõ telex ví dụ ê = ee.

-

-

Xây dựng bảng phiên âm mức âm vị dưới dạng ascii truy vấn bảng âm vị việt
nam nên sử dụng cách ký tự gõ được trên bàm phím cho tiện lợi, các dấu thanh
điệu được ký hiệu bằng các chữ s,f,r,x,j và space
Cách tốt nhất và chính xác nhất là tra cứu bảng phiên âm tiếng việt và thay các
từ Unicode bằng cách như trên.

Bộ từ điển được tổ chức như sau:
khoong kh oo ngz
moojt m ooj tc
hai h a iz
ba b a
boosn b oos nz
nawm n aw mz
sasu s as uz
baary b aar iz
tasm t as mz
chisn ch is nz
muwowfi m uw owf iz
muwowi m uw ow iz
moost m oos tc
tuw t uw
trawm tr aw mz

linh l i ngz
nghifn ng if nz

Lưu vào file digit.dic để dùng trong mô hình ngôn ngữ và file digit.dict
Với digit là tên mô hình muốn tạo
5.2.2 Xây dựng mô hình ngôn ngữ
Chuẩn bị tập tin văn bản:
Đây là tập tin dạng text ví dụ digit.txt
Do CMUCLMTK chưa hỗ trợ unicode nên ta phải gõ theo kiểu mã ascii và những ký
tự không thuộc ascii ta sẽ dùng kiểu gõ telex như sau:
<s> moojt trawm muwowfi moojt </s>
<s> moojt trawm muwowfi hai </s>
<s> moojt trawm muwowfi ba </s>
<s> moojt trawm muwowfi boosn </s>
<s> moojt trawm muwowfi nawm </s>
<s> moojt trawm muwowfi sasu </s>
<s> moojt trawm muwowfi baary </s>
<s> moojt trawm muwowfi tasm </s>
<s> moojt trawm muwowfi chisn </s>
Trong bài của em thì em xây dựng một tập văn bản corpus.txt nội dung là các số từ
0 đến 9999
<s> khoong </s>
<s> moojt </s>

25


×