Nhiệm vụ: Phát triển pipeline phát âm tiếng Việt riêng và từ điển âm thanh
Phát triển pipeline phát âm tiếng Việt riêng và từ điển âm thanh
Loại bỏ sự phụ thuộc vào speechSynthesis của trình duyệt đối với tiếng Việt và triển khai việc tạo, kiểm tra, lưu trữ bản ghi âm được quản lý thông qua OpenRouter + Google Gemini.
Bối cảnh
Nghiên cứu ban đầu cho thấy không thể dựa vào speechSynthesis của trình duyệt cho tiếng Việt.
Tại sao speechSynthesis của trình duyệt không phù hợp
- Không thể cài đặt giọng đọc tiếng Việt một cách đáng tin cậy trong trình duyệt.
- Đường dẫn cài đặt có sẵn thông qua Chế độ đọc (Reading Mode) bất tiện cho người dùng thông thường: mở chế độ đọc → cài đặt → ngôn ngữ → thêm tiếng Việt → đợi tải giọng nói.
- Trên thực tế, sau khi bật tiếng Việt, thông báo
Downloading voices ...xuất hiện, sau đó quá trình tải có thể bị treo vô thời hạn. - Tài liệu chính thức không đảm bảo minh bạch về việc hỗ trợ một giọng đọc tiếng Việt cụ thể.
- Trong mã nguồn Chromium, ngôn ngữ có thể được khai báo, nhưng bản thân Chromium không chứa từ điển giọng nói cuối cùng: sự có sẵn và chất lượng của giọng nói phụ thuộc vào nhà cung cấp trình duyệt/dịch vụ cụ thể, trong trường hợp của chúng tôi là Google.
- Ngay cả khi nhà phát triển có sẵn giọng đọc, không thể yêu cầu người dùng cài đặt thêm từ điển hệ thống hoặc trình duyệt chỉ để học khóa học.
Vấn đề thứ hai: Chất lượng
Nhà phát triển không phải là người bản xứ tiếng Việt và không thể tự mình đảm bảo tính chính xác về mặt ngữ âm, độ tự nhiên của các thanh điệu và chất lượng tổng hợp. Do đó, cần có một pipeline tạo có kiểm soát và sau đó được kiểm tra bởi người bản xứ.
Giải pháp
Triển khai pipeline tạo giọng nói riêng thông qua OpenRouter + Google Gemini.
Không tạo âm thanh cho mỗi yêu cầu của người dùng. Thay vào đó, hãy tạo một từ điển âm thanh cố định.
Mô hình cơ bản
- Một thực thể/từ điển các đơn vị phát âm xuất hiện trong hệ thống: chữ cái, âm tiết, từ, cụm từ hoặc yếu tố học tập khác.
- Đối với âm thanh còn thiếu, quá trình tạo được kích hoạt thông qua OpenRouter + Google Gemini.
- Tệp âm thanh kết quả được lưu vào kho lưu trữ tệp.
- Siêu dữ liệu và liên kết với đơn vị học tập được lưu trong cơ sở dữ liệu.
- Các yêu cầu tiếp theo sẽ sử dụng tệp đã được lưu.
- Phải có khả năng tạo lại một bản ghi âm cụ thể mà không làm thay đổi bản thân đơn vị học tập.
- Người bản xứ sau đó sẽ kiểm tra chất lượng và đánh dấu các tùy chọn phù hợp/không phù hợp.
Những điều cần cân nhắc
- cấu trúc của thực thể âm thanh trong cơ sở dữ liệu;
- các loại đối tượng được phát âm: chữ cái, âm thanh, âm tiết, từ, cụm từ;
- lưu trữ văn bản nguồn và tham số tạo;
- nhà cung cấp/mô hình và phiên bản mô hình;
- định dạng và vị trí lưu trữ các tệp âm thanh;
- bộ nhớ đệm và tái sử dụng;
- trạng thái: đã tạo / cần kiểm tra / người bản xứ đã xác nhận / bị từ chối;
- tạo lại và quản lý phiên bản;
- sự khác biệt giữa phát âm miền Bắc và miền Nam, nếu cần nhiều tùy chọn giọng nói;
- tạo hàng loạt cho sách vỡ lòng và từ điển;
- khả năng tải lên thủ công bản ghi âm chuẩn của người bản xứ;
- giao diện kiểm tra chất lượng.
Giai đoạn thực tế đầu tiên
Trước tiên, cung cấp âm thanh chất lượng cho sách vỡ lòng:
- nguyên âm cơ bản;
- phụ âm và tổ hợp phụ âm;
- sáu thanh điệu trên cùng một âm tiết hoặc âm tiết tương đương;
- các nguyên âm đôi và nguyên âm ba chính;
- các từ ví dụ.
Sau khi xác nhận chất lượng, mở rộng cơ chế đó cho toàn bộ từ điển của khóa học.
Tiêu chí kết quả
Người dùng nhận được âm thanh mà không cần cài đặt bất kỳ giọng nói hoặc từ điển hệ thống nào. Cùng một yếu tố học tập được phát lại từ âm thanh đã được tạo và lưu trước, và chất lượng có thể được người bản xứ kiểm tra và xác nhận độc lập.
Ворклоги
Vấn đề với tính năng phát âm chữ cái đơn thông qua OpenRouter
Cơ chế TTS cơ bản thông qua OpenRouter nhìn chung đã được triển khai và hoạt động tốt đối với các đơn vị văn bản thông thường. Tuy nhiên, một sự cố kỹ thuật đã được phát hiện với đầu vào tối thiểu: nếu chỉ gửi một chữ cái duy nhất để phát âm, OpenRouter sẽ trả về lỗi HTTP 400.
Đối với vietnamguru.ru, đây là vấn đề rất quan trọng vì sách vỡ lòng cần tính năng phát âm riêng cho từng chữ cái, âm thanh và các đơn vị ngữ âm rất ngắn khác.
Giải pháp hiện tại
Không chặn toàn bộ luồng xử lý TTS vì giới hạn này, mà thay vào đó sẽ nghiên cứu riêng tính năng tạo âm thanh cục bộ thông через máy chủ cục bộ và mô hình TTS cục bộ. Mục tiêu là có được một cơ chế chấp nhận ổn định các chữ cái/âm tiết đơn và lưu kết quả vào từ điển âm thanh đã được thiết lập sẵn.
Nhiệm vụ liên quan
Một nhiệm vụ con đã được tạo: "Nghiên cứu và triển khai phát âm TTS cục bộ thông qua máy chủ cục bộ", taskId cmu90kv7v0wm0qw0qnov80p68.
Nhiệm vụ này bao gồm việc lựa chọn và kiểm tra một mô hình cục bộ dành cho tiếng Việt, chất lượng thanh điệu và các đơn vị ngắn, API của máy chủ cục bộ, yêu cầu phần cứng và tích hợp với hệ thống lưu trữ âm thanh hiện có.
Tổng kết trung gian về TTS và lồng tiếng địa phương tiếng Việt
Công việc liên quan đến nhiệm vụ «Phát triển đường ống lồng tiếng tiếng Việt và từ điển âm thanh của riêng mình».
Vấn đề ban đầu
Ban đầu, chúng tôi xem xét speechSynthesis trên trình duyệt và sau đó là tạo âm thanh qua OpenRouter + Google Gemini.
speechSynthesis trên trình duyệt tỏ ra không phù hợp làm cơ chế cơ bản cho khóa học tiếng Việt: việc cài đặt giọng đọc không rõ ràng, phụ thuộc vào trình duyệt/ nhà cung cấp cụ thể, có thể bị treo ở trạng thái Downloading voices ..., và không thể yêu cầu người dùng tự cài đặt giọng ngôn ngữ thủ công.
Tiếp theo, một đường ống TTS đã được triển khai thông qua OpenRouter. Nhìn chung, nó hoạt động tốt với văn bản thông thường, nhưng gặp phải một hạn chế nghiêm trọng đối với đầu vào tối thiểu: khi cố gắng phát âm một chữ cái đơn lẻ, OpenRouter/Gemini trả về lỗi HTTP 400 hoặc không đưa ra kết quả sử dụng được. Đối với TTS thông thường, điều này có thể được chấp nhận, nhưng đối với sách vỡ lòng (bảng chữ cái), đây là một vấn đề mang tính chặn (blocking), bởi vì chúng ta cần các chữ cái riêng lẻ, các chữ tượng hình/grapheme, các âm tiết ngắn và các đơn vị ngữ âm tối thiểu.
Do đó, một nhánh kỹ thuật riêng biệt đã được tách ra: «Nghiên cứu và triển khai lồng tiếng TTS cục bộ thông qua máy chủ nội bộ».
Chuyển sang tạo âm thanh cục bộ
Dự án VieNeu-TTS đã được thiết lập cục bộ trong Docker.
Hiện tại, chúng tôi đang sử dụng phiên bản 2, phiên bản đã từng được thử nghiệm trước đó; ngoài ra còn có phiên bản 3 mới hơn.
Kết quả thực tế quan trọng: VieNeu-TTS có khả năng phát âm các chữ cái/grapheme tiếng Việt đơn lẻ một cách ổn định và rõ ràng. Đây là điểm khác biệt cơ bản so với đường ống Gemini hiện tại.
Tại sao điều này lại quan trọng đối với sách vỡ lòng
Đối với tiếng Việt, chúng ta không chỉ cần một "trình đọc văn bản" vạn năng, mà cần một trình tạo các đơn vị học tập tối thiểu:
- các nguyên âm đơn;
- các grapheme riêng lẻ đi kèm dấu thanh;
- các âm tiết ngắn;
- nguyên âm đôi / nguyên âm ba;
- các đối lập tối thiểu;
- các từ đơn lẻ;
- sau đó mới đến các cụm từ ngắn.
Nghĩa là, TTS phải hỗ trợ các truy vấn có mục tiêu dạng: "hãy phát âm đúng grapheme/âm tiết này", thay vì yêu cầu ngữ cảnh của cả câu.
Ở tiêu chí này, VieNeu-TTS đã cho thấy những ưu thế đáng kể.
Cơ sở lý thuyết về các đơn vị cụ thể cần phải phát âm được ghi nhận trong các khái niệm:
- Bảng chữ cái và chính tả tiếng Việt;
- Ngữ âm và hệ thống âm thanh tiếng Việt;
- Các thanh điệu trong tiếng Việt;
- Cấu trúc âm tiết tiếng Việt, nguyên âm đôi và nguyên âm ba.
Ví dụ: 18 dạng của nhóm A
Đối với dạng Latin cơ bản a trong tiếng Việt, có ba nguyên âm khác nhau:
a;ă;â.
Mỗi nguyên âm này có thể mang một trong sáu thanh điệu, tạo ra 18 hình thái chữ viết:
a á à ả ã ạ;ă ắ ằ ẳ ẵ ặ;â ấ ầ ẩ ẫ ậ.
VieNeu-TTS có khả năng phát âm riêng biệt từng đơn vị tối thiểu như vậy.
Đối với khóa học, điều này mang lại một cấu trúc tự nhiên:
grapheme → tệp âm thanh đã lưu.
Sau khi tạo, mỗi biến thể có thể được lưu vào kho lưu trữ tệp và tái sử dụng mà không cần gọi lại TTS ở mỗi lần phát lại.
Giá trị âm học của tập dữ liệu tổng hợp
Biểu đồ phổ (spectrogram) của tập dữ liệu đã tạo cho thấy các phát âm đơn lẻ được phân tách rõ ràng và có cấu trúc nội tại dễ nhận biết.
Để phân tích sâu hơn, việc xem xét 18 biến thể không phải như 18 lớp hoàn toàn độc lập, mà là sự kết hợp của hai yếu tố sẽ rất hữu ích:
- chất lượng nguyên âm:
a / ă / â; - thanh điệu:
ngang / sắc / huyền / hỏi / ngã / nặng.
Về mặt lý thuyết, điều này cho phép phân tích các đặc điểm một cách riêng biệt:
- F1/F2 và độ dài → nguyên âm nào;
- Đường bao F0, độ dài, năng lượng, voicing và các đặc điểm cấu âm (phonation) → thanh điệu nào;
- sau đó kết hợp kết quả thành một grapheme cụ thể.
Điều này có thể hữu ích không chỉ cho việc tạo âm thanh, mà còn làm cơ sở cho ground truth tổng hợp phục vụ các thí nghiệm trong tương lai về chủ đề "âm thanh → đặc điểm ngữ âm/grapheme".
Tại sao VieNeu-TTS có vẻ đầy hứa hẹn
Dự án được chuyên môn hóa dành riêng cho tiếng Việt, được phát triển tại Việt Nam và được huấn luyện trên một khối lượng lớn dữ liệu tiếng Việt. Theo thông tin có sẵn, phiên bản 2 đã sử dụng hơn 10.000 giờ ghi âm tiếng Việt.
Điều này không loại bỏ việc kiểm định (validation), nhưng làm cho mô hình trở nên phù hợp hơn rất nhiều với nhiệm vụ của chúng ta so với một TTS đa ngôn ngữ tổng quát.
Kiểm định chất lượng
Chất lượng cuối cùng của các âm thanh và thanh điệu đơn lẻ sẽ được kiểm tra với người bản xứ.
Những yếu tố cần kiểm tra trước tiên:
- tính dễ phân biệt của các thanh điệu;
- sự chính xác của cặp
hỏi/ngã; - độ ngắn của
ă/â; - tính tự nhiên của các chữ cái/âm tiết đơn lẻ ngoài ngữ cảnh;
- giọng địa phương (accent);
- sự vắng mặt của các hiện tượng nhiễu/tạp âm (artifacts) ở các đầu vào rất ngắn.
Do đó, kiến trúc tin cậy hiện được hình dung như sau:
VieNeu-TTS = trình tạo ứng viên cục bộ chính
người bản xứ = người kiểm định chất lượng
** cơ sở dữ liệu của chúng ta = lưu trữ các bản ghi âm đã được xác nhận/chấp nhận**
Các yêu cầu đối với phần này của hệ thống cũng được tổng hợp trong khái niệm «Lồng tiếng và lớp âm thanh của khóa học tiếng Việt».
Kiến trúc lưu trữ
Không cần phải tạo lại âm thanh mỗi lần.
Đối với mỗi đơn vị học tập, cần lưu trữ:
- văn bản/grapheme/âm tiết;
- loại đơn vị;
- tệp âm thanh;
- công cụ và phiên bản mô hình;
- tham số tạo âm thanh;
- biến thể phát âm / phương ngữ nếu cần;
- trạng thái kiểm tra;
- khả năng tạo lại (regenerate);
- khả năng thay thế bản ghi tổng hợp bằng bản ghi thực tế của người bản xứ.
Các trạng thái được thiết kế hợp lý theo hướng:
generated(đã tạo);needs_review(cần xem xét lại);approved(đã phê duyệt);rejected(đã từ chối).
Kết luận thực tế hiện tại
Đối với Vietnamguru, VieNeu-TTS cục bộ hiện trông phù hợp hơn rất nhiều làm cơ chế cơ bản cho sách vỡ lòng so với Google Gemini qua OpenRouter, bởi vì nó hoạt động ổn định trên các đầu vào tối thiểu và biết cách phát âm các chữ cái/grapheme đơn lẻ.
Ngay cả khi sau này một công cụ khác tỏ ra chất lượng hơn đối với các đoạn văn bản dài, khả năng tổng hợp đáng tin cậy các đơn vị tối thiểu vẫn là một tiêu chí quan trọng hàng đầu cho dự án của chúng ta.
Toàn bộ khung phương pháp luận của dự án được tập hợp trong khái niệm «Tiếng Việt: hệ thống và phương pháp học tập», trong khi việc phát triển khóa học thực tế đang được tiến hành trong nhiệm vụ «Phát triển hệ thống học tiếng Việt cho đối tượng người lớn».