Với bộ dữ liệu đã chuẩn bị, tác giả thực hiện các bước tiền xử lý, cố gắng thu được bộ dữ liệu tốt nhất có thể trong điều kiện không có âm thanh tự nhiên chất lượng cao, số lượng nghiên cứu về tổng hợp tiếng Việt có cảm xúc chưa được nhiều. Tác giả đã loại bỏ các khoảng lặng ở đầu câu giúp mô hình tập trung vào phần quan trọng trong câu cũng như giảm kích thước bộ nhớ. Đối với từng file âm thanh, độ sâu bit sử dụng là 16 bit, tần số lấy mẫu 22050 Hz – tỷ lệ lấy mẫu chuẩn trong các nghiên cứu về âm thanh hiện nay. Với cấu hình này, tín hiệu có tỉ lệ trên nhiễu tốt và cung cấp khả năng suy luận âm thanh chất lượng do nó bao phủ dải tần giọng nói của con người vì như chúng ta biết giọng đàn ông trưởng thành sẽ có tần số cơ bản từ 85-155 Hz còn phụ nữ trưởng thành là 165 – 255 Hz. Thêm vào đó âm thanh có tỷ lệ lấy mẫu cao có thể dễ dàng sửa đổi để phù hợp với thiết lập âm thanh.
23
2.4. Huấn luyện mô hình tổng hợp tiếng nói
2.4.1. Quy trình huấn luyện
Hình 2. 4: Quy trình huấn luyện mô hình tổng hợp tiếng Việt trần thuật được đề xuất
2.4.2. Biến thể của Tacotron 2
Thành phần đầu tiên tác giả sử dụng là Tacotron2, đây chính là SoTA mô hình cách đây gần 3 năm tuy nhiên vẫn giữ được chất lượng và sức hút khi đến cuối tháng 4 năm 2020 có nghiên cứu đầu tiên áp dụng kiến trúc này vào tổng hợp Tiếng Việt với bộ dữ liệu FPT. Nghiên cứu được đăng trên IEEE vào tháng 2 năm nay [29] áp dụng kiến trúc nguyên thủy của Tacotron2.
24 Hình 2. 5: Kiến trúc mô hình Tacotron2 chỉnh sửa
Tacotron2 là kiến trúc mạng sản sinh tiếng nói tổng hợp từ văn bản đầu vào. Hệ thống bao gồm 02 phần chính: phần đầu là dự đoán các mel spectrogram từ văn bản và phần tiếp theo sử dụng mel spectrogram đó tái tạo lại âm thanh. Trong phần đầu, văn bản đầu vào được mã hóa theo mức ký tự và lớp chú ý giúp học các điểm từng phần trong âm thanh. Mạng Sequence-to-sequence hồi quy dự đoán mel spectrogram để truyền vào mô hình WaveNet hoạt động như bộ Vocoder, tạo ra tín hiệu dạng sóng trên miền thời gian. Mạng dự đoán mel-spectrogram gồm 3 thành phần chính: bộ Mã hóa, bộ Giải mã và bộ Chú ý.
Bộ mã hóa chuyển đổi văn bản đầu vào thành biểu diễn các đặc trưng ẩn. Văn bản đầu vào được biểu diễn qua Character Embedding với 512 chiều, truyền qua 3 lớp Convolution kích thước 5*1 và mỗi lớp chứa 512 bộ lọc. Thay đổi so với Tacotron thông thường, tác giả sử dụng instacne-norm và hàm kích hoạt ReLU. Đầu ra của bộ mã hóa được truyền vào bộ chú ý với tổng hợp toàn bộ chuỗi được mã hóa như một vector đầy đủ ngữ cảnh với độ dài cố định. Ở đây, mô hình sẽ học được sự chú ý trong nội dung văn bản cũng như mỗi liên hệ giữa các frame âm thanh.
Bộ giải mã là mạng nerual, dự đoán mel spectrogram từ chuỗi đầu vào đã được mã hóa trong mỗi khung tại từng thời điểm. Dự đoán từ timestep phía trước
25 đầu tiên được truyền qua Pre-Net chứa 2 lớp Fully Connected với 256 đơn vị ReLU. Đầu ra của mạng này và vector chú ý có ngữ cảnh được ghép nối và truyền qua 2 lớp LSTM với 1024 đơn vị. Kết hợp đầu ra của LSTM và vector chú ý có ngữ cảnh được chiếu thông qua 1 phép biến đổi tuyến tính để dự đoán khung phổ đích. Cuối cùng, phổ trên thang đo mel dự đoán được truyền vào Post-Net với 5 lớp Convolution, nơi dự đoán khối residual cải thiện chất lượng độ phân giải của phổ. Cuối cùng, tác giả sử dụng WaveNet để khởi tạo âm thanh chất lượng tốt. Ở đây nhiệm vụ chính của thành phần này là tạo mô hình được huấn luyện trước, tạo điểm khởi đầu tốt cho mô hình Flowtron, nhanh chóng tìm được điểm hội tụ.
2.4.3. Flowtron
Hình 2. 6: Sơ đồ kiến trúc Flowtron
Thành phần cuối cùng trong kiến trúc đề xuất là Flowtron. Kiến trúc này được công bố vào giữa năm 2020 với ngôn ngữ tiếng anh và chưa có nghiên cứu nào được công bố sử dụng trong tiếng Việt. Flowtron là một mạng khởi tạo theo luồng tự đồng hồi quy cho tổng hợp tiếng nói, tăng cường khả năng kiếm soát các đặc trưng của giọng nói cũng như khả năng biến đổi giữa các giọng nói nhờ đặc trưng âm thanh. Đó chính là ưu điểm so với kiến trúc Tacotron-2 đã từng là SoTA mô hình.
26 Để đạt được âm thanh giống với con người thì cao độ, trường độ, sự nhấn nhá, nhịp điệu cũng như phong cách, cảm xúc của người nói là những yếu tố cực kỳ quan trọng. Đa phần những yếu tố kia, Tacotron2 chưa kiểm soát được và Flowtron ra đời để giải quyết những vấn đề đó. Biến đổi phong cách, cảm xúc của người nói huấn luyện thành cảm xúc phong cách trong trò chuyện của người nói đích đến hay tự nội suy giọng nói huấn luyện mang cảm xúc, phong cách của người nói đích. Điều này giúp tiết kiệm rất nhiều chi phí và nguồn lực cũng như tăng cường khả năng mở rộng của hệ thống.
Flowtron khởi tạo chuỗi các khung mel spectrogram bằng cách sản xuất ra từng mel spectrogram. Flowtron bắt đầu với 3 phần chính: phần mã hóa, phần chú ý và phần giải mã.
Phần mã hóa được dùng để biểu diễn nội dung văn bản kết hợp với biểu diễn mã hóa của mã người nói, phần này cũng chính là để chuẩn hóa đầu vào cho phần tiếp theo.
Tương tự như ở Tacotron2, instance-norm được sử dụng thay thế cho batch- norm. Batch normalization và Instance Normalization là hai phương pháp chuẩn hóa các đặc trưng hiệu quả khi huấn luyện mô hình mạng neural, cả hai tương tự nhau về công thức nhưng khác nhau về số lượng, phạm vi ảnh hưởng. Với batch- norm, công thức sẽ chuẩn hóa hàng loạt, tất cả các vị trí trong câu và tạo ra phân phối của toàn bộ còn với instance-norm, công thức sẽ chuẩn hóa các phần tử của từng batch một cách độc lập, tức là chỉ trên từng vị trí hay còn hiểu là instance- norm làm cho mỗi phân phối riêng lẻ gần giống nhau. Trong bài toán tổng hợp tiếng Việt có cảm xúc, tác giả sử dụng instance-norm thay thế cho batch-norm để loại bỏ nhiễu trong quá trình huấn luyện cũng như tăng cường khả năng học được các từ quan trọng mang cảm xúc, nhịp điệu trong câu.
Cuối cùng, bộ giãi mã được triển khai. Theo như nghiên cứu có nhắc đến khả năng tổng quát hóa và khởi tạo các phổ mel bằng Maximum Likelihood với dữ liệu, do đó kiến trúc sẽ xóa đi hai lớp Pre-net và Post-net. Nối tiếp là biến đổi Afin giúp mô hình có khả năng đảo ngược nhờ các biến scale, bias. Hệ thống áp dụng cơ chế gate để giảm thiểu chi phí tính toán, biến đổi thời gian của câu khởi tạo linh hoạt không bị cố định theo như giá trị đã khởi tạo trước. Thay vì sử dụng giá trị nhị
27 phân (0/1) cho cơ chế gate sẽ làm cho mạng gặp vấn đề đạo hàm khi lan truyền ngược, hệ thống sử dụng hàm sigmoid khi kết quả đến gần nhất với giá trị z. Lớp ghép nối Afin bao gồm ba phần Attention, Decoder và biến đổi Afin. Tác giả thực hiện lặp lại một số lần với lớp ghép nối Afin. Với những giá trị lẻ (K =1, 3, 5 ..), mạng sẽ thực hiện lan truyền tiến từ đầu đến cuối câu và ngược lại, với những giá trị chẵn (K = 2, 4, 6,..), mạng sẽ thực hiện lan truyền ngược và học từ cuối câu về đầu. Mục đích của cách làm này để kiểm soát khả năng học của mô hình, đảm bảo tại từng vị trí câu học được những thành phần phía trước và phía sau. Mô hình có thể học được sự chú ý của lan truyền tiến và lan truyền ngược trong cùng một thời điểm. Do đó, khi triển khai thí nghiệm, tác giả thực hiện lần lượt từng bước, bắt đầu với K=1 để mô hình có thể hội tụ nhanh hơn, tiếp theo đó là K=2 để cải thiện nâng cao chất lượng, cải thiện độ chính xác. Và nếu chất lượng vẫn chưa thực sự tốt có thể tăng K dần lên cho đến khi âm thanh thu được đạt đến sự kỳ vọng. Nhờ phép biến đổi Afin, mô hình có thể học được khả năng đảo ngược của hàm ánh xạ phân phối đặc trưng của giọng nói (mel spectrogram, văn bản) tới không gian tiềm ẩn z tham số bởi phân phối Gaussian. Trong không gian tiềm ẩn z, ta có thể tìm và lựa chọn các vùng khác nhau, từ đó có thể khởi tạo các mẫu đặc trưng của giọng nói tương ứng (mel spetrogram) với vùng lựa chọn đó.
2.5. Biến đổi phong cách, cảm xúc của tiếng nói 2.5.1. Sơ đồ quá trình tạo tiếng nói bình thường 2.5.1. Sơ đồ quá trình tạo tiếng nói bình thường
28
2.5.2. Sơ đồ quá trình tạo tiếng nói cảm xúc
Hình 2. 8: Quá trình chuyển đổi cảm xúc trong tiếng Việt
2.5.3. Quá trình hoạt động
Khả năng chỉnh sửa, tạo ra các biến thể của giọng nói mà không bỏ qua chất lượng tiếng nói là phần quan trọng nhất, là ưu điểm của Flowtron so với các mô hình tổng hợp tiếng nói khác. Việc lấy mẫu từ tất cả các phong cách giọng nói tương đương với việc lấy mẫu giá trị z từ toàn bộ không gian z của Flowtron. Coi như không gian ban đầu với giọng nói bình thường là phân phối Gaussian với trung bình bằng 0 và giọng nói sẽ lấy mẫu là các giá trị z trong không gian đó. Điều chỉnh phương sai để giúp kiểm soát sự lan truyền của phân phối Gaussian. Khả năng lấy mẫu ở gần trung tâm cao hơn ở xa trung tâm phân phối hình cầu. Đặt phương sai bằng 0 tương ứng sử dụng luôn điểm trung tâm ban đầu dẫn đến việc không có sự thay đổi trong lời nói được tạo ra. Tăng phương sai sẽ giúp tặng độ lan tỏa xung quanh trong tâm không gian z được lấy mẫu, đồng thời duy trì các mẫu gần trung tâm hơn so với mẫu xa trung tâm. Lấy mẫu từ một phong cách, cảm xúc cụ thể tương đương với việc lấy mẫu từ một vùng cụ thể trong không gian z
29 của Flowtron. Đưa những âm thanh của cùng 1 cảm xúc, phong cách, lấy giá trị z từ chúng tính toán trọng tâm của chúng. Sử dụng trọng tâm này làm giá trị trung bình của phân phối Gaussian mới và điều chỉnh phưởng sai tức là điều chỉnh khoảng cách của vùng không gian mới đang được lấy mẫu. Cách tiếp cận này sẽ giúp tiết kiệm được rất nhiều thời gian huấn luyện và nguồn lực dữ liệu.
2.6. Huấn luyện mô hình
Gắn liền với sự phát triển của học máy, các mô hình ngày càng có cấu trúc phức tạp, dung lượng lưu trữ và số lượng tính toán ngày càng cao. Việc xây dựng môi trường thử nghiệm cũng là một yếu tố quan trọng. Sử dụng các siêu máy tính sẽ giúp tiết kiệm rất nhiều thời gian cho nghiên cứu.
Bảng dưới đây tác giả trình bày một số thông tin cơ bản về các môi trường được sử dụng.
Máy tính vật lí Google Cloud Model NVIDIA A100 NVIDIA Tesla P4
Loại Máy tính vật lí Máy ảo
Số lượng 02 01
SSD 1 TB 7.5 GB
GPU 40 GB 8 GB
Mục đích
- Huấn luyện với nhiều dữ liệu - Thử nghiệm, điều chỉnh tham số - Tổng hợp, suy luận và đánh giá - Xây dựng chương trình đánh giá Hệ điều hành Ubuntu 20.04 LTS Driver 450.142.00
Bảng 2-2. So sánh thông tin cơ bản giữa các môi trường sử dụng Ngoài ra, tác giả sử dụng một số bộ thư viện, phần mềm như sau: Ngoài ra, tác giả sử dụng một số bộ thư viện, phần mềm như sau:
•Ngôn ngữ chính Python, Jupyter Notebook, các thư viện đặc trưng như: torch 1.9.0, tensorboard, scikit-learn, matplotlib, librosa, pandas, numpy, six.
•Shell Script: thực hiện xử lý file âm thanh, nội dung văn bản, chạy thử nghiệm chương trình.
•Flask API, HTML, Java Script, MySQL: Xây dựng chương trình “Khảo sát chất lượng tiếng Việt tổng hợp có cảm xúc”.
30 Trước khi bắt đầu chương trình, tác giả lựa chọn 100 câu ngẫu nhiên từ bộ dữ liệu AnSpeech cho tập kiểm thử cho bài toán tổng hợp tiếng Việt thông thường, các câu này đều có độ dài từ 10 đến 30 từ, số lượng còn lại được sử dụng trong tập huấn luyện. Trong quá trình huấn luyện, tác giả thực hiện in giá trị lỗi của mô hình lên màn hình và quan sát. Chương trình tiếp tục đến khi giá trị lỗi này giảm đến giá trị nhỏ và ổn định. Các trường hợp khác như giá trị lỗi không ổn định (tăng, giảm liên tục và biên độ lớn) hay giá trị lỗi tăng, tác giả thực hiện dừng chương trình và kiểm tra lại. Khi giá trị lỗi đã hội tụ ( khoảng chênh lệch giữa mỗi lần in kết quả không quá 0,001), mô hình khởi tạo mel-spectrogram thời điểm đó được lựa chọn để đánh giá. Giai đoạn này được thực hiện với 1 số câu ngẫu nhiên, thông thường các câu này được lựa chọn từ các câu nói hằng ngày, bài báo trực tuyến. Sau đó, với mel-spetrogram này, mô hình WaveGlow đưa ra âm thanh. Tác giả thực hiện đánh giá bằng cách nghe trực tiếp.
2.7. Thiết kế thử nghiệm
2.7.1. Tổng quan
Tác giả xây dựng kịch bản thử nghiệm phân thành 03 nhóm:
•Nhóm 1: Thử nghiệm hệ thống tổng hợp tiếng Việt thông thường.
•Nhóm 2: Thử nghiệm chuyển đổi cảm xúc cho tiếng Việt.
•Nhóm 3: Thử nghiệm so sánh thời gian huấn luyện trên các phần cứng khác nhau.
Nhóm 1 bao gồm các thí nghiệm …. mục tiêu phát triển thành công mô hình tổng hợp tiếng Việt giọng trần thuật, có độ tư nhiên cao, dễ hiểu, phát âm rành mạch, rõ chữ. Trong nhóm này, các thử nghiệm giữa Tacotron 2, Flowtron trong hai bộ dữ liệu AnSpeech và các câu bình thường của tất cả các nghệ sĩ trong bộ BKEmo.
Thử nghiệm trong nhóm 2 có nhiệm vụ xây dựng hệ thống chuyển đổi cảm xúc cho tiếng Việt. Với chất lượng âm thanh được đảm bảo từ Nhóm 1, tác giả sử dụng 30 câu mỗi cảm xúc. Bộ dữ liệu được sử dụng là BKEmo.
Sau khi đã hoàn thành được hệ thống tiếng nói, tác giả thực hiện thí nghiệm so sánh trên 02 môi trường khác nhau về phần cứng và được hoàn toàn giống nhau
31 về phần mềm. Trong thực tế, thời gian huấn luyện bị ảnh hưởng rất nhiều về tốc độ đọc ghi, xử lý, tính toán của thiết bị phần cứng.
Hình 2. 9: Các thí nghiệm nhóm 1 và luồng lưu trữ
2.7.2. Thí nghiệm 01 – Mô hình M1
Bộ dữ liệu sử dụng: AnSpeech. Trong đó có 9696 câu dành cho huấn luyện và 100 câu dành cho kiểm thử. Tác giả sử dụng kiến trúc mô hình: Tacotron 2 với sự thay thế hàm batch-norm bằng instance-norm ở bộ Decoder, giữ nguyên các lớp PreNet và PostNet ở bộ Decoder (khác với việc loại bỏ 2 lớp này khi áp dụng trong kiến trúc Flowtron ở các thí nghiệm sau). Thí nghiệm được thực hiện trên siêu máy tính NVIDIA A100. Mô được thực hiện trong điều kiện không sử dụng pretrained- model và một số tham số cơ bản như learning rate = 1e-3, weight decay = 1e-6 với kích thước cho mỗi batch là 12. Sử dụng kích thước này để đảm bảo có thể tối đa dung lượng bộ nhớ 40GB GPU của máy tính nhưng vẫn đảm bảo được thời gian huấn luyện sau từng iteration là hợp lý. Thử nghiệm quá trình khởi tạo âm thanh sau 1 số bước nhất định nên cần đảm bảo thời gian huấn luyện phù hợp. Hệ thống tự động thực hiện lưu trữ mô hình sau mỗi 1,000 iteration tương ứng 24 phút. Mô hình được dừng lại quá trình huấn luyện sau 302,000 iteration. Mô hình hình được gọi là M1.