VietASI.comVietASI
Tổng hợp giọng nói và nhân bản giọng

Các thế hệ tổng hợp giọng nói tiếng Việt: ghép âm, tham số thống kê và mạng nơ-ron

Máy đọc tiếng Việt đã đi từ ghép các mẩu âm ghi sẵn, qua mô hình thống kê, tới mạng nơ-ron. Mỗi thế hệ giải bài toán âm tiết và thanh điệu ra sao, còn dùng ở đâu.

Wide shot of a small recording booth in a Vietnamese university lab, foam panels on walls, a microphone on a stand, an empty chair, cool blue evening light through a glass door

Tổng hợp giọng nói tiếng Việt đã qua ba thế hệ chính: ghép các mẩu âm thanh ghi sẵn (ghép âm), sinh âm thanh từ mô hình thống kê các tham số giọng (thường dựa trên mô hình Markov ẩn), và sinh trực tiếp bằng mạng nơ-ron sâu. Thế hệ thứ ba làm nên những giọng đọc gần như người thật hiện nay, nhưng hai thế hệ trước vẫn còn chạy trong nhiều thiết bị và để lại những ý tưởng mà hệ thống mới vẫn dùng.

Hiểu ba thế hệ giúp bạn đoán được vì sao một giọng đọc nghe "rè máy" còn giọng khác lại trơn tru nhưng thỉnh thoảng nuốt chữ, và vì sao chuyện thanh điệu tiếng Việt lại được giải theo cách khác nhau ở mỗi thời kỳ. Bài này không đi vào toán chi tiết; phần nguyên lý chung về cách AI tạo giọng đã có ở các trang phổ thông như AI Hiểu, ở đây chỉ bàn chỗ đặc thù khi áp vào tiếng Việt.

Thế hệ ghép âm: cắt và dán những mẩu giọng thật

Ý tưởng ghép âm rất trực quan: thuê một người đọc ghi âm nhiều giờ, cắt bản ghi thành các đơn vị nhỏ, rồi khi cần đọc câu mới thì chọn các mẩu phù hợp và nối lại. Biến thể phổ biến nhất là chọn đơn vị (unit selection), được mô tả trong công trình của Hunt và Black năm 1996: hệ thống tìm trong kho rất nhiều ứng viên cho mỗi đơn vị, rồi chọn chuỗi sao cho vừa khớp yêu cầu ngữ âm vừa nối với nhau êm nhất.

Với tiếng Việt, ghép âm có một lợi thế tự nhiên: tiếng Việt là ngôn ngữ đơn lập, mỗi chữ viết là một âm tiết, ranh giới âm tiết rõ hơn nhiều ngôn ngữ châu Âu. Số âm tiết thực sự được dùng chỉ ở mức vài nghìn. Vì thế một số hệ thống thử nghiệm đời đầu chọn chính âm tiết làm đơn vị ghép: ghi đủ mọi âm tiết, khi đọc chỉ việc xếp nối. Kết quả hiểu được nhưng nghe giật cục, vì âm tiết đứng một mình khác âm tiết nằm giữa câu, nhất là ở cao độ và độ dài.

Các hệ thống ghép âm tốt hơn dùng đơn vị nhỏ hơn âm tiết, như nửa âm tiết hoặc cặp âm vị chuyển tiếp, kèm kho dữ liệu lớn có cùng âm tiết ở nhiều vị trí, nhiều thanh, nhiều ngữ điệu. Khi kho đủ lớn và câu cần đọc gần với câu đã ghi, giọng ghép âm có thể rất thật. Nhược điểm là kho dữ liệu nặng, khó đổi giọng hay cảm xúc, và khi gặp câu lạ thì chỗ nối lộ ra thành những tiếng "vấp" khó chịu.

Thế hệ tham số thống kê: học quy luật thay vì lưu âm thanh

Thay vì lưu âm thanh, thế hệ thứ hai lưu một mô hình thống kê mô tả giọng nói qua các tham số: đường cao độ (F0), đường bao phổ, độ dài từng âm. Khung làm việc phổ biến dựa trên mô hình Markov ẩn (HMM), với bộ công cụ mã nguồn mở HTS được nhiều phòng nghiên cứu dùng từ khoảng giữa thập niên 2000. Khi đọc, hệ thống sinh chuỗi tham số rồi đưa qua một bộ tạo sóng (vocoder) để ra âm thanh.

Thế hệ này hợp với tiếng Việt ở một điểm: thanh điệu, về mặt âm học, phần lớn là chuyện đường cao độ theo thời gian, cộng với chất giọng ở một số thanh như ngã và nặng. Mô hình tham số cho phép điều khiển trực tiếp đường cao độ, nên các nhóm nghiên cứu có thể đưa thông tin thanh điệu vào làm đặc trưng ngữ cảnh và kiểm tra xem máy có sinh đúng dáng thanh không. Mô hình cũng nhỏ gọn, chạy được trên thiết bị yếu, và đổi giọng bằng kỹ thuật thích nghi chỉ với ít dữ liệu.

Cái giá là chất âm: do lấy trung bình thống kê, giọng tham số thường nghe "ù", phẳng, có tiếng rè đặc trưng của vocoder, mà người nghe hay gọi là giọng robot. Nhiều trình đọc màn hình và thiết bị nhúng vẫn dùng loại giọng tham số hoặc tổng hợp theo luật vì ưu điểm ổn định, nhẹ và đọc nhanh vẫn rõ chữ, điều mà bài về giọng đọc cho người khiếm thị trên trang này sẽ bàn kỹ hơn.

Thế hệ nơ-ron: hai tầng mô hình và một bước nhảy về độ tự nhiên

Khoảng từ 2016 trở đi, mạng nơ-ron sâu thay dần cả hai khâu. Có thể hình dung một hệ thống nơ-ron điển hình gồm hai tầng, và mỗi tầng đã có vài dòng kiến trúc nổi tiếng được công bố công khai.

TầngViệc làmKiến trúc tiêu biểu (đã công bố)Điểm cần biết với tiếng Việt
Mô hình âm họcTừ chuỗi chữ hoặc âm vị sinh ra phổ âm (mel-spectrogram)Tacotron 2 (Google, 2017), FastSpeech và FastSpeech 2 (2019–2020)Đầu vào nên là âm vị có ghi thanh; đầu vào chữ thô dễ nhầm thanh khi dữ liệu ít
Bộ tạo sóng (vocoder)Từ phổ âm sinh ra sóng âm nghe đượcWaveNet (DeepMind, 2016), WaveGlow, HiFi-GAN (2020)Ảnh hưởng chất giọng, tiếng rè, hơi thở; ít đặc thù ngôn ngữ
Mô hình gộp đầu-cuốiLàm cả hai việc trong một mạngVITS (2021) và các biến thểHuấn luyện gọn hơn; vẫn cần chuẩn hoá văn bản phía trước
Mô hình dựa trên mô hình ngôn ngữ lớnCoi âm thanh là chuỗi mã rời rạc, sinh như sinh chữNhiều hệ thống công bố từ 2023Rất tự nhiên, nhân bản giọng từ vài giây mẫu; đôi khi đọc sót hoặc lặp chữ

Ở thế hệ nơ-ron, độ tự nhiên tăng rõ vì mô hình học được cả ngữ điệu, hơi thở, độ dài âm từ dữ liệu thay vì từ luật. Với tiếng Việt, điều này đặc biệt có lợi cho các hiện tượng khó mô tả bằng luật như thanh điệu biến đổi khi nói nhanh hay âm tiết nhẹ đi ở cuối cụm. Đổi lại, mô hình nơ-ron đòi nhiều dữ liệu sạch hơn, và lỗi của nó khó đoán hơn: thay vì đọc rè đều đều, nó có thể đọc rất hay rồi bỗng bỏ một chữ hay nói lắp ở câu dài.

Đơn vị đầu vào: chữ, âm vị hay âm tiết có thanh

Đưa thẳng chữ viết. Chữ Quốc ngữ khá gần với cách đọc, nên nhiều mô hình nơ-ron nhận thẳng chữ có dấu làm đầu vào và vẫn đọc ổn. Nhưng chữ viết có những chỗ không khớp âm: "gi", "d", "r" đọc khác nhau tuỳ vùng; "c", "k", "q" cùng một âm; dấu thanh có thể ở dạng dựng sẵn hoặc tổ hợp trong Unicode. Mô hình học từ chữ phải tự học các quy tắc này, cần nhiều dữ liệu hơn.

Chuyển sang âm vị trước. Cách phổ biến trong nghiên cứu là chuyển chữ sang chuỗi âm vị (theo hệ ký hiệu IPA hoặc một bộ ký hiệu riêng) bằng luật, vì tiếng Việt có quan hệ chữ–âm khá đều. Thanh điệu được biểu diễn như một ký hiệu riêng gắn với âm tiết hoặc vần. Cách này giúp mô hình tập trung vào phần âm học, và cho phép đổi giọng vùng bằng cách đổi bộ luật chuyển âm.

Thanh điệu như một luồng thông tin riêng. Một số kiến trúc tách thanh điệu thành một luồng nhúng (embedding) riêng chạy song song với âm vị, thay vì trộn vào ký hiệu. Lý do là cùng một vần với sáu thanh khác nhau chủ yếu khác ở cao độ và chất giọng, nên tách ra giúp mô hình học đường nét thanh rõ hơn. Không có cách nào được chứng minh là tốt nhất cho mọi trường hợp; kết quả phụ thuộc nhiều vào lượng và độ sạch của dữ liệu.

Mỗi thế hệ còn dùng ở đâu hôm nay

Chuyện các thế hệ không thay nhau hoàn toàn. Giọng nơ-ron chiếm ưu thế trong các dịch vụ đám mây, trợ lý ảo, sách nói, lồng tiếng video, nơi máy chủ mạnh và người nghe cần độ tự nhiên. Giọng tham số hay giọng tổng hợp theo luật vẫn có mặt trong thiết bị nhúng, đồ chơi, hệ thống thông báo đơn giản, và đặc biệt trong trình đọc màn hình, nơi người dùng đặt tốc độ rất cao và cần mỗi chữ rõ ràng, đều đặn hơn là cần hay.

Ghép âm thì gần như rút khỏi sản phẩm mới, nhưng ý tưởng của nó sống lại ở một dạng khác: nhiều hệ thống thông báo cố định (nhà ga, sân bay, tổng đài) vẫn ghép những câu ghi âm sẵn với phần thay đổi như số hiệu chuyến, giờ, số quầy. Nếu từng nghe một thông báo mà con số chen vào nghe "lệch tông" với phần còn lại, đó chính là ghép âm.

Một chi tiết ít người để ý: nhiều sản phẩm thật dùng lẫn các thế hệ trong cùng một hệ thống. Một tổng đài có thể dùng giọng nơ-ron cho phần câu trả lời sinh động, nhưng dùng câu ghi âm sẵn của người thật cho lời chào và lời cảnh báo pháp lý, vì những câu ấy cố định và cần chính xác tuyệt đối. Một ứng dụng đọc sách có thể dùng giọng nơ-ron lớn khi có mạng và tự chuyển về giọng nhỏ hơn khi mất mạng. Người nghe chỉ thấy chất giọng thay đổi đôi chút mà không biết vì sao. Khi phân tích một sản phẩm, đừng mặc định cả hệ thống dùng một công nghệ duy nhất.

Hiện nay, giọng nơ-ron cũng có bản thu gọn chạy trên điện thoại hay máy tính cá nhân không cần mạng. Với người làm sản phẩm Việt, lựa chọn thực tế không phải là thế hệ nào mới nhất mà là ràng buộc nào quan trọng: độ trễ, chạy ngoại tuyến, chi phí máy chủ, quyền riêng tư của văn bản đầu vào, và mức chấp nhận lỗi đọc sót.

Những điều còn khó với mọi thế hệ

Dù kiến trúc thay đổi, một số bài toán của tiếng Việt vẫn nằm nguyên. Thứ nhất là chuẩn hoá văn bản: số, ngày, viết tắt vẫn phải được chuyển thành chữ trước, và lỗi ở khâu này xuyên qua mọi thế hệ. Thứ hai là từ nước ngoài và tên riêng chêm trong câu, vì quy tắc chữ–âm tiếng Việt không áp được cho "Facebook" hay "Nguyễn Smith". Thứ ba là ngữ điệu ở mức đoạn văn: máy đọc từng câu khá tự nhiên nhưng cả đoạn dài vẫn đều đều, vì hầu hết mô hình nhìn mỗi lần một câu.

Thứ tư là dữ liệu vùng miền. Phần lớn giọng đọc thương mại và dữ liệu mở tập trung vào giọng Hà Nội và giọng Sài Gòn; giọng Huế, Nghệ Tĩnh, Quảng Nam hay giọng các vùng có đồng bào dân tộc thiểu số nói tiếng Việt rất ít dữ liệu. Đây không phải giới hạn của kiến trúc mà là giới hạn của việc ai đã bỏ công ghi âm.

Khi đánh giá một công cụ mới tự nhận là thế hệ mới nhất, bạn có thể dùng chính những điểm này làm câu hỏi kiểm tra, thay vì nghe đoạn mẫu do nhà cung cấp chọn sẵn.

Câu hỏi thường gặp

Giọng đọc "robot" mà nhiều người nhớ là thế hệ nào?

Thường là giọng tổng hợp theo luật hoặc giọng tham số thống kê dùng vocoder đời cũ. Tiếng rè và độ phẳng đến từ việc mô hình lấy trung bình các tham số giọng và bộ tạo sóng đơn giản. Ghép âm kém thì lại có kiểu lỗi khác: giọng thật nhưng vấp, lệch tông ở chỗ nối.

Tiếng Việt có lợi thế gì cho tổng hợp giọng nói so với tiếng Anh?

Chữ Quốc ngữ ghi âm khá đều, mỗi chữ là một âm tiết, ranh giới âm tiết rõ, nên khâu chuyển chữ sang âm đơn giản hơn tiếng Anh nhiều. Bù lại, thanh điệu làm cao độ mang nghĩa từ vựng, nên sai cao độ là sai nghĩa, khắt khe hơn tiếng Anh vốn chỉ dùng cao độ cho ngữ điệu.

Mô hình nơ-ron có cần nhiều dữ liệu hơn mô hình cũ không?

Nói chung là có, đặc biệt nếu muốn một giọng hoàn toàn mới chất lượng cao. Tuy nhiên kỹ thuật học chuyển giao cho phép bắt đầu từ mô hình đã huấn luyện trên nhiều giọng, rồi tinh chỉnh với ít dữ liệu của giọng đích. Lượng cần thiết cụ thể tuỳ kiến trúc và mức chất lượng mong muốn.

Vocoder là gì và vì sao quan trọng?

Vocoder là khâu biến biểu diễn trung gian như phổ âm thành sóng âm thực. Nó quyết định nhiều về chất giọng: tiếng rè, tiếng ù, độ trong của phụ âm xát, hơi thở. Vocoder nơ-ron như HiFi-GAN là một lý do chính khiến giọng đọc hiện nay nghe trong hơn hẳn thế hệ trước.

Giọng nơ-ron hay đọc sót chữ, có cách nào phát hiện tự động không?

Một cách thực tế là cho một hệ nhận dạng giọng nói nghe lại bản đọc, chuyển thành chữ, rồi so với văn bản gốc để tìm chữ sót, chữ lặp. Cách này không hoàn hảo vì hệ nhận dạng cũng có lỗi, nhưng đủ để khoanh vùng những câu cần người nghe lại.

Có nên chọn công cụ theo tên kiến trúc nó dùng không?

Không nên lấy kiến trúc làm tiêu chí chính. Cùng một kiến trúc có thể cho kết quả rất khác tuỳ dữ liệu và khâu xử lý văn bản. Hãy thử bằng chính văn bản của bạn, chú ý số, tên riêng, câu dài, và các ràng buộc như chạy ngoại tuyến, độ trễ, điều khoản dữ liệu.

Cần tư vấn cụ thể cho trường hợp của bạn?

Chúng tôi sẽ liên hệ trong vòng 24 giờ.

Đăng ký tư vấn ngay

Bài viết liên quan

Bạn cần hỗ trợ thêm?

Để lại thông tin, chúng tôi sẽ liên hệ trong 24 giờ.

hoặc
Gọi ngay 0926 138 138