3.1 Bài toán
Trợ lý ảo tư van tuyển sinh yêu cầu đơn giản, chủ yếu là các câu hỏi rời rac, không mang tính chất trò chuyện và các câu trả lời chỉ cần lặp đi lặp lại, không yêu cầu sinh ngữ nên chatbot mô hình Retrieval based models — mô hình truy vấn là đáp ứng đủ nhu cầu.
Khi hoạt động thi trợ lý ảo có khả năng trả lời các câu hỏi đã có trong dữ liệu về
các hệ, các ngành học, điểm chuẩn, phương thức xét tuyên, tư vấn hướng nghiệp,...
Ở đây nhóm sử dụng ngôn ngữ là Python và trình soạn thao VS Code trên hệ điều hành Ubuntu.
3.2 Xây dựng hệ thống nhận dạng giọng nói End-to-End
3.2.1 Chuẩn bị dữ liệu
Dữ liệu cho nhận dạng giọng nói là trở ngại rất lớn cho những ai muốn xây dựng
hệ thông nhận dạng giọng nói. Với tiếng Anh hoặc các quốc gia khác thì dữ liệu về giọng nói được cô bố rất nhiều, khá thuận lợi trong việc nghiên cứu. Còn ở Việt Nam dé liệu giọng nói tiếng Việt rat ít, các công ty hoặc tổ chức ít công bố rộng rãi
nên việc nghiên cứu khá khó khăn do thiêu dữ liệu.
37
Nhóm đã xin được bộ dữ liệu 500 giờ nói của tô chức VLSP nhưng bộ dữ liệu này được tạo ra từ mô hình máy học, giọng nói ngắt quảng khó nghe và không thé
áp dụng với giọng nói của người. Ngoài ra nhóm còn thu thập được bộ dữ liệu 54
giờ nói gồm 15 giờ nói từ bộ Vivos do đội ngũ trường Đại hoc Khoa Học Tự Nghiên làm và 39 giờ nói tổng hợp từ bộ dữ liệu hỗn hợp của VinBigData.
Dữ liệu âm thanh với label là tiếng Việt nhưng với Unicode thì sẽ khó khăn trong việc xử lý và tiếng Việt có quá nhiều nguyên âm nên nhóm chuyên label sang cách
gõ Telex, nhằm đưa số lượng class phải xác định xuống còn 26, bằng với số chữ cái trong tiếng Anh. Ví dụ:
TRUONG HỌC : TRUWOWENG HOJC
Phân loại dữ liệu
Dữ liệu thích hợp cho việc nhận dạng giọng nói và nhất là mô hình End-To-End phải khá sạch nên nhóm chỉ lấy giọng của người đọc trong phòng kín, thu âm bằng thiết bi thu va ít tiếng ồn.
3.2.2 Xây dựng mô hình
Mô hình của nhóm sử dụng sẽ tương tự như kiến trúc Deep Speech 2. Mô hình
này sẽ có hai mô-đun mạng nơ-ron chính: N lớp Residual Convolutional Neural
Networks (ResCNN) dé tìm hiểu các đặc trưng âm thanh có liên quan va một tập hop Bidirectional Recurrent Neural Networks (BiRNN) dé tan dụng các đặc trưng
âm thanh ResCNN đã học. Mô hình được đặt trên cùng với một lớp fully-connected
được sử dụng đề phân loại các ký tự trên mỗi bước thời gian.
Convolutional Neural Networks (CNN) rat tốt trong việc trích xuất các đặc trưng trừu tượng và nhóm sẽ áp dụng sức mạnh trích xuất đặc trưng tương tự cho các bản
ghi âm giọng nói. Thay vì chỉ sử dụng các lớp CNN, nhóm chọn sử dụng các lớp
Residual CNN. Residual connections (bỏ qua kết nối AKA) lần đầu tiên được giới
thiệu trong bài báo “Deep Residual Learning for Image Recogmition”[], nơi tác gia
38
nhận thấy rằng ta có thể xây dựng các mạng thực sự sâu với độ chính xác tốt nếu ta thêm các kết nối này vào CNN của mình. Việc thêm các Residual connections này cũng giúp mô hình học nhanh hơn và tông quát hóa tốt hơn. Bai bao “Visualizing the Loss Landscape of Neural Nets”[] cho thấy rằng các mạng có kết nối dư có bề mặt mat mát "phăng hơn", giúp các mô hình dé dàng điều hướng ham mat mát và tìm ra cực tiêu tổng quát hơn và thấp hơn.
Recurrent Neural Networks (RNN) đương nhiên là rất tốt trong các vẫn đề mô
hình hóa trình tự. RNN xử lý các tính năng âm thanh từng bước, đưa ra dự đoán cho
từng khung hình trong khi sử dụng ngữ cảnh từ các khung hình trước đó. Nhóm sử
dụng BiRNN's vì nhóm muốn bối cảnh không chi của khung trước mỗi bước mà cả các khung sau đó. Điều này có thể giúp mô hình đưa ra dự đoán tốt hơn, vì mỗi
khung hình trong âm thanh sẽ có thêm thông tin trước khi đưa ra dự đoán. Nhóm sử
dụng biến thể Gated Recurrent Unit (GRU's) của RNN vì nó cần ít tài nguyên tính toán hơn LSTM và hoạt động tốt trong một sỐ trường họp.
Optimizer và Scheduler - AdamW
Optimizer va Scheduler đóng một vai trò rất quan trong trong việc đưa mô hình hội tụ đến điểm tốt nhất. Chọn đúng trình tối ưu hóa và lập lịch cũng có thé giúp tiết kiệm thời gian tính toán và giúp mô hình khái quát tốt hơn cho các trường hợp sử dụng trong thế giới thực. Đối với mô hình của nhóm sẽ sử dụng AdamW với Bộ lập lịch tốc độ học trong một chu kỳ (One Cycle Learning Rate Scheduler). Adam là một trình tối ưu hóa được sử dụng rộng rãi giúp mô hình hội tụ nhanh hơn, do đó, tiết kiệm thời gian tính toán, nhưng là không khái quát hóa tốt như Stochastic
Gradient Descent AKA SGD.
Ham mắt mat CTC Loss
Mô hình của nhóm sẽ được đào tao dé dự đoán phân phối xác suất của tat cả các
ký tự trong bảng chữ cái tiếng Anh cho mỗi khung (tức là cửa số trượt) trong biểu
đô quang phô mà nhóm đưa vào mô hình.
39
Các mô hình nhận dạng giọng nói truyên thông sẽ yêu câu ta căn chỉnh văn bản chuyên biên với âm thanh trước khi dao tạo và mô hình sẽ được đào tao đê dự đoán
các nhãn cụ thê tại các khung cụ thê.
Sự đổi mới của chức năng mat CTC là nó cho phép chúng ta bỏ qua bước này.
Mô hình sẽ học cách căn chỉnh dữ liệu trong quá trình dao tao. Chia khóa của điều nảy là nhãn “blank” trong CTC, cho phép mô hình chỉ ra một khung âm thanh nhất
định không tạo ra ký tự. Từ đó tự căn chỉnh dữ liệu.
Trích xuất đặc trưng Mel-Spectrogram
Mel-Spectrogram là tiền thân của MFCC trong quá trình trích xuuất MECC.
Thực hiện Discrete Cosine Transform (DCT) lên Mel-Spectrogram ta thu được
MECC. MFCC mang tính nén thông tin nhiều hơn khi thông thường chi sử dung 13 hoặc 20 hệ số thay vì 32 đến 64 hệ số như Mel-Spectrogram. Khi huấn luyện mô hình thi MFCC cần giải mã nhiều hơn, điều này phù hợp với các mô hình tuyến tính như Gaussian Mixture Models. Còn với lượng lớn dữ liệu và khả năng phân lớp tốt
của CNN thì Mel-Spectrogram thích hợp hơn.
Phương pháp đánh giá mô hình
Khi Đánh giá mô hình nhận dạng giọng nói, tiêu chuẩn ngành đang sử dụng là tỉ lệ lỗi từ - WER làm thước đo. Tỉ lệ lỗi từ thực hiện chính xác những gì mà cái tên thê hiện - nó lay kết mà mô hình của mô hình xuắt ra, và nhãn dán thực sự, đo lường lỗi giữa chúng. Một số liệu hữu ích khác được gọi là tỉ lệ lỗi ký tự (CER). CER đo lường sai số của các ký tự giữa đầu ra của mô hình và các nhãn thực. Các chỉ số này rất hữu ích đề đo lường độ chính xác của mô hình nhận dạng giọng nói.
3.3 Xây Dựng chatbot tư vấn tuyén sinh.
Cấu trúc chỉ tiết của chatbot tư vấn tuyên sinh được thiết kế như sau:
40
[| Dae [Ue
ơm
Hình 3.1: Cấu trúc một Chatbot
Trong mô hình trên, chatbot được chia làm 2 giai đoạn là giai đoạn huấn luyện
mô hình và giai đoạn hoạt động với User.
Ở giai đoạn huấn luyện mô hình, ta cần chuẩn bị dữ liệu, xử ly dit liệu bằng NLP,
dữ liệu sau bước NLP có thể đưa vào training và cuối cùng cho ra model hoàn chỉnh. Chi tiết các bước như sau:
Data: Dữ liệu là hơn 100 câu hội thoại bao gồm chào hỏi và các hội thoại chính liên quan đến tư vấn tuyển sinh được chuẩn bị sẵn. Dữ liệu được định
dạng dưới dạng Json như sau:
a
Hinh 3.2: Mau data chatbot tu van tuyén sinh Hình trên thé hiện ví du về mẫu dữ liệu nhóm sử dụng trong trợ lý ảo.
41
Trong đó:
e tag: là nhãn của một bộ câu hoi — câu trả lời. Có thể có nhiều câu hỏi và
nhiều câu trả lời trong một tag nhưng các câu hỏi phải chung một nghĩa hoặc ý định. Tương tự vậy với nhiều câu trả lời.
e keyword: Chủ dé của cuộc hội thoại.
e patterns: Câu hỏi mẫu.
e responses: Câu trả lời tương ứng.
NLP: Chủ yếu là tiền xử lý text. Chi tiết các bước gồm có:
e Làm sạch text: Sử dụng công cu Regex (Regular Expression) dé loại bỏ noise
trong text, chỉ giữ lại chữ cái là khoảng trắng.
Start of the Line
3 to 15 characters long
|
^[a-z0-9_-]43,15}$
|
End of the line Letters, numbers, underscores, hypens
Hình 3.3: Làm sạch text bằng Regex
e_ Tach từ: Sử dụng thuật toán so khớp dài nhất (Longest Matching). Thuật toán
này nhóm các từ trong câu thành các cụm với số lượng 3 chữ, 2 chữ rồi so sánh với bộ từ điển tiếng Việt, nêu khớp thì tách ra đó là 1 từ.
42
{'đen lay láy', ‘pho văn phòng', 'phó tiến si', ‘dai đuồn đuỗn', 'lãnh sự
quán', 'kí túc xá', 'keo tai tượng', 'bom từ trường', 'cực chẳng đã', 'giày
bát kết', 'ngắn tun hủn', 'quốc tế ca', ‘hoa mép dé', 'tẻo tèo teo', 'óc bã
đậu', 'Tết Nguyên Đán', 'góc kề bù', ‘kim loại đen', 'tiểu đoàn trưởng",
'chữ thập đỏ', 'từ đồng nghĩa', 'báo vụ viên', 'sóng vô tuyến', 'luật dân
sự', 'thượng nghị viện', ‘da lá sách', 'phép biện chứng', ‘li tưởng hoá",
'điều kiện cần', ‘gon thon lỏn', 'sách công cụ', ‘bam ra sữa', ‘bat thinh
lình', 'cá thia thia', 'cân đồng hồ', 'thợ thủ công', 'điện khí hoá', 'kim
anh tử', 'tuyên bố chung', 'Hệ Mặt Trời', 'cổ tự học', 'gì thì gì', 'bom
bươm bướm', ‘doi địa ly', ‘quan trọng hoá', 'phản giáo dục', ‘dai nguyên
soái', 'đa phương tiện', 'điện tử học', 'vô thần luận', 'kĩ thuật số',
"tran trùi trụi', 'hiện tượng luận', ‘ban bình nguyén', ‘ho mái day', 'xốp
xồm xộp', 'tiền định luận', 'khoáng vat học', ‘cau thang máy', ‘may hút
bui', ‘cau thăng bang', 'cười sang sặc', ‘mat rười rượi', ‘dia vật ly',
'hình hoc Euclid', 'khách qua đường', 'nổi tam banh', ‘tap thé hod", ‘ca
Hình 3.4: Bộ từ điển tri-grams — từ ghép bởi 3 chữ cái
e Loại bỏ stopwords: Sử dụng từ điên các Stopword tiêng Việt. Sau quá trình
tách từ thì ta được các từ riêng lẻ trong câu, so khớp với từ điên stopwords,
nêu khớp từ nào thì bỏ từ đó.
{ 'ạ','b1', 'bởi"', a, ‘Cac "cần', ‘cang', ‘chi’, 'chiếc', 'cho', ‘chir',
"chưa", "chuyện", ‘co 'có thé’, 'cứ', ‘cla’, ‘cing’, 'cũng', 'đã', ‘dang’,
‘day’, ‘dé’, 'đến_n ‘déu', "điều', 'do', 'đó', 'được', ‘gi’, ‘khi',
'là', 'lại', 'lén', 'lúc', 'mà', 'mỗi', 'một cách', "mấy", 'này', 'nên', 'nếu', 'ngay",
"nhiều", "như', "nhưng", 'những', ‘noi’, 'nữa', "phai ‘qua’, 'ra', ‘rang’, ‘rat’, ‘roi’,
"sau', "sé", Ư", ‘tai’, ‘theo', ‘thi’, "từng",
"vol",
Hinh 3.5: Tir dién stopwords tiéng Viét
e Vector hóa từ: Sử dung túi từ - Bag of Word. Phuong pháp BoW thường được sử
dụng trong những bài toán phân loại văn bản. Trong đó: tần suất của mỗi từ/ n- gram sẽ được coi là một feature trong văn bản phân loại. Ta tạo một bộ từ điển chứa tất cả các từ (sau khi đã tach từ) của các câu hỏi trong bộ dữ liệu, sau đó ta tạo một vector có chiều đài bang bộ từ điển câu hỏi vừa tạo. Duyệt các câu hỏi, mỗi từ trong câu hỏi có xuất hiện trong từ dién thì vị trí của từ đó vector câu hỏi được bằng 1, còn lại bằng 0. Từ đó tạo được vector riêng biệt của từng câu hỏi.
43
Tuy nhiên, nhược điểm của phương pháp này là ta không thé xác định được
nghĩa thực của mỗi từ và các từ tương quan với chúng.
Trong phương pháp BoW, từ giống nhau sẽ được đánh trọng số như nhau. Phương pháp này không xét đến tần suất xuất hiện của từ hay nhữ cảnh từ. Và trong thực tế, dé cần hiểu được nghĩa của mỗi từ, ta cần xác định từ đó trong văn
cảnh hơn là xét nghĩa độc lập từ.
Raw Text Bag-of-words
vector
0 ey Tw Talo) emo
‘WHE
Hinh 3.6: M6 hinh Bag of Words
itis a puppy and it
is extremely cute
Training: Sử dụng mang Neural Network 2 lớp được built sẵn trong module
TFlearn với 2 tham số. Tham số thứ nhất là một mảng 2 chiều với số hàng ứng với tông các câu hỏi trong data, mỗi hàng chứa một vector ứng với mỗi câu hỏi
mà ta đã tạo ở bước Bag of Words. Tham số thứ hai là một mảng hai chiều có
số hàng bằng số câu hỏi trong data, mỗi hàng là một vector có độ dài băng các câu hỏi, đánh dấu tag của câu hỏi tương ứng. Có thé hiểu đơn giản là 2 tham số truyền vào cho biết ứng với câu hỏi nào là tag nào, dé máy có thé học được và
dự đoán dit liệu đầu vào. Sau khi training hoàn tat thì ta có kết quả là một model.
Tiếp theo, là quá trình tương tác với người dùng. Quá trình này đơn giản hơn. Sau
khi người dùng nhập đoạn text vào, text sẽ được đi qua khối NLP và cho ra một
vector tương ứng với đoạn text đó. Tiếp đến ta sử dụng hàm predict của model dự
đoán xem vector của đoạn text dau vào kia có tag tương ứng là gì, từ đó đôi chiêu
44
với data thì sẽ chọn được câu trả lời phù hợp. Nếu tìm ra được hai kết quả giống
nhau thì hàm predict sẽ chọn ngẫu nhiên.
3.4 Xây dựng hệ thống chuyển văn bản sang giọng nói Transformer và
MelGAN vocoder
3.4.1 Chuẩn bị dữ liệu
Dữ liệu nhóm sử dụng là bộ dữ liệu của Zalo_vlsp2019 gồm 18 giờ nói của một
người phụ nữ. Vì yêu cầu giọng đọc ra của mô hình phải cố định nên nhóm chỉ sử
dụng một giọng đọc của một người duy nhất.
3.4.2 Xây dựng mô hình
Chuyén đổi văn bản thành âm vị (phiên âm)
Tacotron2 sử dụng chuỗi ký tự làm đầu vao, trong khi mô hình được Transformer
sử dụng phiên âm đã chuẩn hóa trước. Các ranh giới từ và âm tiết, dấu câu cũng được bao gồm như các ký hiệu đặc biệt. Quy trình xử lý đề có được các chuỗi âm vị huấn luyện chứa tách câu, văn bản chuẩn hóa, phân đoạn từ và cuối cùng là thu được cách phát âm. Bằng cách chuyền đổi văn bản thành âm vị, các van đề về phát
âm sai được giảm thiểu đáng kể, đặc biệt là đối với những cách phát âm hiếm khi
xảy ra trong bộ dữ liệu.
Thiết lập WaveNet
Nhóm huấn luyện một WaveNet có điều kiện dựa trên quang phổ mel với cùng một tập dữ liệu tiếng Việt giọng nữ và sử dụng nó như bộ mã hóa cho tất cả các mô hình. Tỉ lệ lay mẫu của âm thanh là 16000Hz và tốc độ khung hình (khung hình / giây) của quang phổ là 80. Autoregressive WaveNet chứa 2 lớp QRNN và 20 lớp tích chập giãn nỡ (Dilated convolution), kích thước của tất cả các kênh dư và kênh giãn nở tất cả đều là 256. Mỗi khung của đầu ra cuối cùng của QRNN đều được sao chép 200 lần dé có cùng độ phân giải như các mẫu âm thanh va là điều kiện của 20
lớp giãn ra.
45
MelGAN
Giống như các mô hình GAN khác, MelGAN cũng có cấu trúc gồm hai mạng là Generator và Discriminator. Generator cố gắng tạo ra âm thanh giả gần giống với thật nhất, trong khi Discriminator cô gang tìm ra điểm khác biệt giữa chúng.
Phương pháp đánh giá
Hiện chưa có phương pháp nào đảm bảo đánh giá mô hình văn bản sang giọng
nói bởi vì đầu ra của mô hình là âm thanh, muốn kiểm chứng âm thanh hay hay không thì phải qua tai người nghe và đánh giá. Nhóm quyết định đánh giá theo phương pháp Mean Option Score (MOS). Nhóm sẽ tạo ra những câu nói kết quả của
mô hình và cho người khác nghe, sau đó đánh giá trong thang điểm từ 0 đến 5.
46