XửLýNgônNgữNói
ĐẠIHỌCQUỐCGIATHÀNHPHỐHỒCHÍMINH
TRƯỜNGĐẠIHỌCKHOAHỌCTỰNHIÊN
——————————
XỬLÝNGÔNNGỮNÓI
BÀITẬP2:NHẬNDẠNGTIẾNGNÓIRỜIRẠC
Giáoviên:PGS.TS.VŨHẢIQUÂN
Họvàênhọcviên:NguyễnBáCông
Mãsốhọcviên:0209480107
Ngành:Khoahọcmáytính–K19
NguyễnBáCôngKHMTK19
1
XửLýNgônNgữNói
I.Tổngquan
Nhận dạng tiếng nói là một quá trình nhận dạng mẫu, với mục đích là phân lớp
(classify) thông tin đầu vào là tín hiệu tiếng nói thành một dãy tuần tự các mẫu đã
được học trước đó và lưu trữ trong bộ nhớ. Các mẫu là các đơn vị nhận dạng,
chúng có thể là các từ, hoặc các âm vị. Nếu các mẫu này là bất biến và không thay
đổi thì công việc nhận dạng tiếng nói trở nên đơn giản bằng cách so sánh dữ liệu
tiếng nói cần nhận dạng với các mẫu đã được học và lưu trữ trong bộ nhớ. Khó
khăn cơ bản của nhận dạng tiếng nói đó là tiếng nói luôn biến thiên theo thời gian
và có sự khác biệt lớn giữa tiếng nói của những người nói khác nhau, tốc độ nói,
ngữ cảnh và môi trường âm học khác nhau. Xác định những thông tin biến thiên nào
của tiếng nói là có ích và những thông tin nào là không có ích đối với nhận dạng
tiếng nói là rất quan trọng. Đây là một nhiệm vụ rất khó khăn mà ngay cả với các kỹ
thuật xác suất thống kê mạnh cũng khó khăn trong việc tổng quát hoá từ các mẫu
tiếngnóinhữngbiếnthiênquantrọngcầnthiếttrongnhậndạngtiếngnói.
Cácnghiêncứuvềnhậndạngtiếngnóidựatrênbanguyêntắccơbản:
● Tín hiệu tiếng nói được biểu diễn chính xác bởi các giá trị phổ trong một
khung thời gian ngắn (shortterm amplitude spectrum). Nhờ vậy ta có thể
trích ra các đặc điểm tiếng nói từ những khoảng thời gian ngắn và dùng các
đặcđiểmnàylàmdữliệuđểnhậndạngtiếngnói.
● Nội dung của tiếng nói được biểu diễn dưới dạng chữ viết, là một dãy các
ký hiệu ngữ âm. Do đó ý nghĩa của một phát âm được bảo toàn khi chúng ta
phiênâmphátâmthànhdãycáckýhiệungữâm.
● Nhận dạng tiếng nói là một quá trình nhận thức. Thông tin về ngữ nghĩa
(semantics) và suy đoán (pragmatics) có giá trị trong quá trình nhận dạng
tiếngnói,nhấtlàkhithôngtinvềâmhọclàkhôngrõràng.
Các cách tiếp cận nhận dạng tiếng nói bằng thống kê bao gồm: sử dụng mô hình
Markovẩn,mạngnơron,…
NguyễnBáCôngKHMTK19
2
XửLýNgônNgữNói
Phát biểu bài toán: Sử dụng công cụ/thư viện HTK (Hidden Markov Model Toolkit)
đểxâydựngcôngcụnhậndạngtiếngnói(TiếngViệt)rờirạctừngtừmột.
Hướng giải quyết: Trên thế giới đã có rất nhiều hệ thống nhận dạng tiếng nói đã
và đang được ứng dụng rất hiệu quả như LVia Voice của IBM, Spoken Toolkit cua
CSLU (Central of Spoken Language Understanding). Tuy nhiên ở bài trình bày này;
trình bày về phương pháp sử dụng công cụ HTK (Hidden Markov Model Toolkit),
bằng việc sử dụng đặc trưng MFCC (MelFrequency Ceptrums Coefficients) và mô
hìnhMarkovẩn(HMM).
NguyễnBáCôngKHMTK19
3
XửLýNgônNgữNói
II.Cơsởlýthuyết
1.Tríchchọnđăctrưng
Tríchchọnđặctrưngtrongxửlýngônngữnóilàbiếnđổitừgiọngnóithô
thànhnhữngđặctrưngcủangườinói.Đặctrưngđượcsửdụngtrongbài
nàylàđặctrưngMFCC(MelFrequencyCepstralCoefficients),đặctrưng
MFCCthểhiệnhìnhtháicủacuốnghọng,…khitanói.
CácbướctríchchọnđặctrưngMFCC:gồm5bướccơbản
● Phânkhung(frameblocking):Chiatínhiệuđầuvàothànhcác
đoạnnhỏkhoảng20ms30ms.Phânkhungtínhiệumỗikhung
Nmẫu,haikhungkềnhaulệchMmẫu.
● Lấycửasổ(Windowing):Lấycửasổnhằmgiảmsựgiánđoạn
củatínhiệuởđầuvàcuốimỗikhungvừađượcchia(vídụ
dùngcủasởHamming,…).
● BiếnđổiFFT(FastFourierTransform):Chuyểnđổimỗikhung
vớiNmẫutừmiềnthớigiansangmiềntầnsố.
● BiếnđổisangthangđoMel(MelfrequencyWrapping)
● HệsốCepstrum(CepstrumCoefficients)
2.MôhìnhMarkovẩn(HMM)
a.MôhìnhMarkov
i.Cáckháiniệmcơbản
Mô hình Markov là mô hình dựa trên thống kê để mô hình hóa các tín
hiệu dạng chuỗi (theo thời gian) được sử dụng rất tốt trong các lĩnh
vựcnhậndạng.
Cáctínhiệudạngchuỗi:
○ Chữviếttay
○ Tínhiệuâmthanh,ánhsáng
○ ChuỗiDNA
○ …
Phânloạimôhìnhchuỗitrạngthái
● Môhìnhchuỗiđơnđịnh
NguyễnBáCôngKHMTK19
4
XửLýNgônNgữNói
Làmôhìnhcáctrạngtháitrongđóliênkếtchuyểntừtrạngthái
nàysangtrạitháikháclàhoàntoànxácđịnh.Vídụ:môhình
chuyểntrạngtháicủađèngiaothông(đỏxanhvàng)
● Môhìnhchuỗixácsuất
Là mô hình các trạng thái trong đó liên kết chuyển từ trạng thái
này sang trại thái là 1 giá trị xác suất, sao cho tổng xác suất
đầu ra từ 1 trạng thái tới tất cả các trạng thái khác bao gồm
chínhnóluônlà100%.
Như vậy theo nguyên lý xác suất Bayes, xác suất mô hình ở
trạng thái phụ thuộc vào xác suất tồn tại của tất cả trạng thái q
i
trướcnó.q
j,j<i
ii.GiảthuyếtMarkov
● Xácsuấttại1trạngtháitrongmôhìnhMarkovchỉphụthuộc
vàotrạngtháitrướcnó
(q |q , q , , q ) P (q |q )P
t t−1
t−2
.
1
=
t t−1
● Dựatrênlýthuyếtxácsuấttrạngtháiđồngthời
(A, ) P(A|B)P (B)P B =
● Xácsuấtchuỗitrạngtháiđượctính
(q , q , , q , q )P
1
2
t−1
t
P (q |q , q , , q )P(q , q , , q )=
t t−1
t−2
.
1 t−1
t−2
.
1
=
P (q |q )P(q |q ) P (q |q )P (q )=
t t−1 t−1 t−2 2 1 1
iii.MôhìnhMarkov
MôhìnhMarkovđượcđịnhnghĩalà1môhìnhbaogồmcácthành
phần:
● Cáctrạngtháitrongmôhình
, 2, …, N1
● Chuỗitrạngtháiquansátđược
, q , , q , , qq
1
2
t
T
● MatrậnchuyểnvịtrạngtháiAthểhiệnxácsuấtchuyểnvịtừ
trạngtháinàysangtrạngtháikhác
NguyễnBáCôngKHMTK19
5
XửLýNgônNgữNói
trongđó
P (q |q )1 ,a
ij
=
j i
< i j < N
0∀i,a
ij
> j
1∀i∑
N
j=1
a
ij
=
● Xácsuấtbanđầuπ
, π , , ππ
1
2
N
trongđó
(q )1π
i
= P
i
< i < N
1∀i∑
N
i=1
π
i
=
TómgọnlạimôhìnhMarkovcóthểđượcgọilà1bộ (A, π)λ
iv.VídụmôhìnhMarkov
Môhìnhnghiêncứuthờitiết
● Cáctrạngtháithờitiết:
Sun, Cloudy, Rain), N 3( =
● Xácsuấtbanđầu :π
π , π , π ) (1.0, 0.0, 0.0)(
Sun
Cloudy
Rain
=
● MatrậnchuyểnvịtrạngtháiA:
b.MôhìnhMarkovẩn
■ Cáctrạngtháiẩn
MôhìnhMarkovđượctrìnhbàyởphầntrướctồntại1sốkhuyếtđiểm
NguyễnBáCôngKHMTK19
6
XửLýNgônNgữNói
trongtrườnghợptổngquát,khicáctrạngtháiquansátđượckhông
đồngthờilàcáctrạngtháimàmôhìnhđangthểhiện.Vớivídụmô
hìnhnghiêncứuthờitiếtđãnêu.Giảsửtrongtrườnghợpcáctrạng
tháichúngtaquansátđượckhôngphảilàcáctrạngtháithờitiếttrực
tiếpmàlàcáctrạngtháicủatảobiểnbaogồm[Soggy,Damp,
Dryish,Dry](vớicácthựcnghiệmchothấycáctrạngtháicủatảobiến
cóthểhiện1phầntrạngtháithờitiếttheo1xácsuấtnghiêncứubiết
trước),chúngtaphảinângcấpmôhìnhMarkovđểcóthểchứathêm
thôngtinnày.
Nhưvậy,môhìnhMarkovẩncóthểđượchìnhdungthôngquasơđồ
sau
Bêncạnhcácgiátrịxácsuấtkhởitạovàxácsuấtchuyểnvịtrạngthái
thờitiết,môhìnhcầnphảilưuthêmcácxácsuấttươngứngcủatrạng
tháitảobiểnquansátđượctươngứngvớitrạngtháithờitiếtcần
nghiêncứu.
■ MôhìnhMarkovẩnđượcđịnhnghĩabaogồm
● Cáctrạngtháinghiêncứutrongmôhình
, 2, …, N1
NguyễnBáCôngKHMTK19
7
XửLýNgônNgữNói
● Cáctrạngtháiquansátđược
, 2, …, M1
● Chuỗitrạngtháiquansátđược
, o, , o , , oo
1
t
T
● MatrậnchuyểnvịtrạngtháiAthểhiệnxácsuấtchuyểnvịtừ
trạngtháinàysangtrạngtháikhác
trongđó
P (q |q )1 ,a
ij
=
j i
< i j < N
0∀i,a
ij
> j
1∀i∑
N
j=1
a
ij
=
● Xácsuấtbanđầuπ
, π , , ππ
1
2
N
trongđó
(q )1π
i
= P
i
< i < N
1∀i∑
N
i=1
π
i
=
● MatrậnchuyểnvịtrạngtháiBthểhiệnxácsuấtchuyểnvịtừ
trạngtháiquansátđượcsangtrạngtháinghiêncứu
trongđó
P (o |q )1 , 1b
ij
=
j i
< i < N < j < M
0∀i,b
ij
> j
1∀i∑
N
j=1
b
ij
=
TómgọnlạimôhìnhMarkovẩncóthểđượcgọilà1bộ
.(A, B, π)λ
NguyễnBáCôngKHMTK19
8
XửLýNgônNgữNói
c.3BàitoánMôhìnhMarkovẩn
VớimôhìnhMarkovẩnđượcnêu,ápdụngvàocácvấnđềthựctếlàmnảy
sinhra3bàitoánchínhsau:
Bàitoán1:Tínhđiểm(Evaluation)
Chotrướcchuỗiquansát tươngứngvớimôhìnho , , , }O = {
1
o
2
. o
T
,xácđịnhxácsuấttươngứngcóđiềukiện .(A, B, π)λ (O|λ)P
Vídụkhônghìnhthức:
○ Chotrước2môhìnhthờitiết và cùngvới1chuỗiλ
Summer
λ
Winter
quansáttrạngtháitảobiển trongthờigian1tuần.ChúngtaO
cầnxácđịnhxemtuầnđượcquansátthuộcvềmôhìnhnào
tươngứngvớimùanàotrongnămbằngcáchtínhđiểmchuỗi
Ochocả2môhìnhvàchọnmôhìnhcóđiểmcaonhất.
Bàitoán2:Sokhớp(Matching)
Chotrướcchuỗiquansát tươngứngvớimôhìnho , , , }O = {
1
o
2
. o
T
,xácđịnhchuỗitrạngtháinghiêncứutươngứng(A, B, π)λ
saochoxácsuấttương đạtcựcđại.q, , , }Q = { q
2
. q
T
(O|λ)P
Vídụkhônghìnhthức:
○ Chotrước2môhìnhthờitiết cùngvới1chuỗiquansáttrạngλ
tháitảobiển trongthờigian1tuần.ChúngtacầnxácđịnhO
xemtuầnđượcquansátthuộccóthờitiếtcụthểnhưthếnào.
Bàitoán3:Huấnluyện(Training)
Chotrướctậpchuỗiquansát xácđịnhcácthamsốO , , O }{
1
O
2
.
k
phùhợpchomôhình saochoxácsuấttươngứngcóđiều(A, B, π)λ
kiện làcựcđại.(O |λ)P
i,i∈[1 k]
Vídụkhônghìnhthức:
○ Chotrướctập1chuỗiquansáttrạngtháitảobiển mỗituầnO
trongvòngnhiềutháng.Chúngtacầnxácđịnh1môhìnhthời
tiếttươngứngtạikhuvựcđósaochophùhợpnhấtvớichuỗi
quansátnày.
III.Thựcnghiệm
NguyễnBáCôngKHMTK19
9
XửLýNgônNgữNói
1.CácchứcnăngđượcsửdụngtrongcôngcụHTK
HTKcungcấpcáccôngcụchoviệcxâydựngmộtmôhìnhMarkovẩn(HMMs).
HMMscóthểdùngchocácbàitoánvớidữliệulàmộtchuỗitheothờigian,vàHTK
cũngcóthểsửdụngchocácbàitoándạngnày.Tuynhiên,HTKđượcthiếtkếchính
làphụcvụchocácbàitoánvềtiếngnói.Dướiđâylàmộtvàicôngcụcơbản
thườngđượcdùng:
○ HCopy
Copyvàthứchiệnviệcrúttríchđặctrưngtùythuộcvàofilecấuhình.
○ HCompV
Côngcụkhởitạothamsốchocáchàmphânbốxácsuấtcótrongtừngtrạng
tháicủamôhìnhMarkovẩntươngứngvớidữliệuhuấnluyện.
○ HRest
Côngcụhuấnluyệnmôhìnhbằngviệctínhtoán,ướclượnglạicácthamsố
củamôhình.
○ HParse
Côngcụchuyểnđổi(parse)từdữliệuđầuvàothànhdữliệutheoformat
HTK.
○ HVite
Côngcụsokhớp/nhậndạngvớiđầuvàolàdữliệucầnnhậndạng,vàtrảvề
môhìnhtốtnhất/khớpnhấtmànóthuộcvào.
○ HResults
Côngcụthốngkê,đánhgiákếtquảnhậndạng.
2.Chuẩnbịdữliệu
Dữliệuthựcnghiệmđượclấytừdữliệuthuâmtrênlab:
■ K22_SV34(250filestươngứng250câu)
a.Tậpdữliệuhuấnluyện(train)
200files
b.Tậpdữliệutest
Gồm327files,làcáctừđượctáchratừ50câu.
Chúngtacũngcầnchuẩnbịcácfilesauchoviệccàiđặtmôhinh:
NguyễnBáCôngKHMTK19
10
XửLýNgônNgữNói
Cácfilepromptstươngứngvớicácfileâmthanh(wav),
Filetừđiểnbaogồmtấtcảcáctừtrongbộdữliệuthựcnghiệm,
ChuẩnbịcácfilechoviệchuấnluyệnmôhìnhdùngcôngcụHTK:
■ proto(prototypemodel)
■ config
■ HCompV.cfg
■ HCopy.cfg
■ HERest.cfg
■ HVite.cfg
■ mktri.led
■ sil.hed
■ monophones0
■ monophones1
■ Cácfileperlscripts
3.Càiđặt
ChươngtrìnhđượcxâydựngdựavàocôngcụHTKvàcác“ActivePerl”
scripts.Dướiđâylàmôtảvềcáchchươngtrìnhđượccàiđặtcụthể.
Cấutrúcchươngtrình
Môhình
SửdụngHTKtoolkitđểxâydựngmôhìnhgồm:
● ModuleHuấnluyện
● ModuleNhậndạng
Đặctrưng:39đặctrưngMFCC_0_D_A,trongđó
● 0:12MFCCfeatures+(1)totalenergyintheframe,
● D:13“Deltacoefficients”(đạohàmbậc1củaMFCC),
NguyễnBáCôngKHMTK19
11
XửLýNgônNgữNói
● A:13“Accelerationcoefficients”(đạohàmbậc2củaMFCC)
MỗimộtâmtiếtlàmộtmôhìnhMarkovẩn
Sốtrạngthái:5
a.Huấnluyện
■ Tạofile"words.mlf"từfileprompts.txt
Perlpl\prompts2mlf.plwords.mlfprompts.txt
■ Tạo2file"phones0.mlf"và"phones1.mlf":phones0chỉcó"sil"nhưng
phones1cóthêm"sp"
HLEdl*ddict.txtiphones0.mlfmkphones0.ledwords.mlf
HLEdl*ddict.txtiphones1.mlfmkphones1.ledwords.mlf
■ RúttríchđặctrưngMFCC_0_D_A
perlpl\listwavmfc.pltrain\wavtrain\mfc.scp
HcopyCconfigStrain\mfc.scp
■ Tạofileliệtkêdữliệuhuấnluyện
perlpl\mkTrainFile.pltrain\mfctrain\train.scp
■ Bước2.Khởitạomôhình
HCompVADT1CHCompV.cfgf0.01mStrain\train.scpMhmm\hmm0proto
■ Bước3.Tạomôhìnhchuẩn
perlpl\mkMacrosFile.plhmm\hmm0\vFloorshmm\hmm0\macros
perlpl\mkHmmdefsFile.plhmm\hmm0\protomonophones0hmm\hmm0\hmmdefs
■ Bước4.Huấnluyện3vòng>hmm3
HERestADT1CHERest.cfgIphones0.mlft250.0150.01000.0Strain\train.scp
Hhmm\hmm0\macrosHhmm\hmm0\hmmdefsMhmm\hmm1monophones0
HERestADT1CHERest.cfgIphones0.mlft250.0150.01000.0Strain\train.scp
Hhmm\hmm1\macrosHhmm\hmm1\hmmdefsMhmm\hmm2monophones0
HERestADT1CHERest.cfgIphones0.mlft250.0150.01000.0Strain\train.scp
Hhmm\hmm2\macrosHhmm\hmm2\hmmdefsMhmm\hmm3monophones0
■ Bước5.Thêm“sp”vàodanhsáchmôhình
NguyễnBáCôngKHMTK19
12
XửLýNgônNgữNói
perlpl\makesp.plhmm\hmm3\hmmdefshmm\hmm4\hmmdefshmm\hmm3\macros
hmm\hmm4\macros
■ Bước6.Liênkếtsilsp
HHEdHhmm\hmm4\macrosHhmm\hmm4\hmmdefsMhmm\hmm5sil.hed
monophones1
■ Bước7.Huấnluyện2vònghmm5>hmm7
HERestADT1CHERest.cfgIphones1.mlft250.0150.01000.0Strain\train.scp
Hhmm\hmm5\macrosHhmm\hmm5\hmmdefsMhmm\hmm6monophones1
HERestADT1CHERest.cfgIphones1.mlft250.0150.01000.0Strain\train.scp
Hhmm\hmm6\macrosHhmm\hmm6\hmmdefsMhmm\hmm7monophones1
■ Bước8.Clone/copyphones1.mlf>aligned.mlf(xácđịnhcáchđọc
chínhchotừngtừ)
copyphones1.mlfaligned.mlf
■ Bước9.Huấnluyện2vòng>hmm9
HERestADT1CHERest.cfgIaligned.mlft250.0150.01000.0Strain\train.scpH
hmm\hmm7\macrosHhmm\hmm7\hmmdefsMhmm\hmm8monophones1
HERestADT1CHERest.cfgIaligned.mlft250.0150.01000.0Strain\train.scpH
hmm\hmm8\macrosHhmm\hmm8\hmmdefsMhmm\hmm9monophones1
■ Bước10.Tạotriphones
HLEdnph\triphones1l*iwintri.mlfmktri.ledaligned.mlf
perlpl\mkTriHed.plmonophones1ph\triphones1mktri.hed
HHEdBHhmm\hmm9\macrosHhmm\hmm9\hmmdefsMhmm\hmm10mktri.hed
monophones1
Huấnluyện2vòng>hmm12
HERestBCHERest.cfgIwintri.mlfsstatsStrain\train.scpHhmm\hmm10\macros
Hhmm\hmm10\hmmdefsMhmm\hmm11ph\triphones1
HERestBCHERest.cfgIwintri.mlfsstatsStrain\train.scpHhmm\hmm11\macros
Hhmm\hmm11\hmmdefsMhmm\hmm12ph\triphones1
■ Bước11.Liênphầnshare/chung
perlpl\mkFullList.plmonophones0fulllist
perlpl\mkTree.pl350monophones0tree.hed
HHEdBHhmm\hmm12\macrosHhmm\hmm12\hmmdefsMhmm\hmm13tree.hed
ph\triphones1>log
NguyễnBáCôngKHMTK19
13
XửLýNgônNgữNói
■ Bước12.Huấnluyện2vòng>hmm15(môhìnhcuốicùng)
HERestBCHERest.cfgIwintri.mlfsstatsStrain\train.scpHhmm\hmm13\macros
Hhmm\hmm13\hmmdefsMhmm\hmm14tiedlist
HERestBCHERest.cfgIwintri.mlfsstatsStrain\train.scpHhmm\hmm14\macros
Hhmm\hmm14\hmmdefsMhmm\hmm15tiedlist
b.Nhậndạng
■ Chuẩnbịdữliệukiểmthửđúng/truthfile
Perlpl\prompts2mlf.pltest\truth.mlftest\prompts.txt
■ Chuẩnbịdữliệunhậndạng
perlpl\listwavmfc.pltest\wavtest\mfc.scp
HCopyT1CconfigStest\mfc.scp
perlpl\mkTrainFile.pltest\mfctest\test.scp
■ Parsegramthànhwdnet
HParsegram.txtwdnet
■ Thựchiệnnhậndạng
HViteT1CHVite.cfgHhmm\hmm15\macrosHhmm\hmm15\hmmdefsS
test\test.scpitest\recout.mlfwwdnetp0.0s5.0gram_dict.txttiedlist
■ Thựchiệnthốngkêkếtquảnhậndạng
HResultsItest\truth.mlftiedlisttest\recout.mlf>test\result.txt
4.Kếtquả
Kếtquảđượcthốngkêdựatrêntậpdữliệutest:
■ K22_SV34(327mẫulàcáctừđượctáchratừ50câu)
======================HTKResultsAnalysis=======================
Date:SatJun0113:23:122013
Ref:test\truth.mlf
Rec:test\recout.mlf
OverallResults
SENT:%Correct=35.38[H=115,S=210,N=325]
WORD:%Corr=35.38,Acc=31.38[H=115,D=0,S=210,I=13,N=325]
==============================================================
IV.Kếtluận
Việc xây dựng một mô hình để nhận dạng tiếng nói (Tiếng Việt) rời rạc sử dụng công cụ
NguyễnBáCôngKHMTK19
14
XửLýNgônNgữNói
HTK được thực hiện khá suôn sẻ. Tuy nhiên kết quả thực nghiệm lại tương đối thấp
(Corr=35.38,Acc=31.38).Nguyênnhâncóthểdo:
● Dữliệuhuấnluyệnít,khôngtổngquátđượcdữliệukiểmthử;
● Dữliệukiểmthử(test)đượctáchratừmộtcâuchochấtlượngkhôngtốt;
● Dữ liệu dùng để huấn luyện cũng như kiểm thử do tác giả đọc nghe không rõ, có
cáctừđượcphátâmgầnnhưnhau;
● Môhìnhchưađủmạnh.
Hướngtiếpcậntrongthờigiantới:
● Thuthậpthêmnhiềudữliệu;
● Nângcấpmôhình(AdaptiveModel).
NguyễnBáCôngKHMTK19
15