Vì sao tổng hợp giọng nói tiếng Việt khó hơn phần lớn ngôn ngữ

Text-to-Speech (TTS) là mắt xích cuối trong pipeline Voice AI: chuyển câu trả lời dạng văn bản của mô hình ngôn ngữ thành giọng nói mà khách hàng nghe được. Với tiếng Anh, một hệ thống TTS hiện đại đã có thể nghe gần như người thật. Với tiếng Việt, rào cản lớn nhất là thanh điệu: sáu thanh (ngang, huyền, sắc, hỏi, ngã, nặng) được phân biệt chủ yếu qua đường nét cao độ (F0 contour), tức sự lên xuống của tần số cơ bản giọng nói theo thời gian trong một âm tiết, đôi khi kèm hiện tượng thanh quản hóa (creaky voice) ở cuối âm với thanh nặng.

Một mô hình TTS huấn luyện không đủ dữ liệu hoặc không mô hình hóa đúng đặc trưng này sẽ đọc đúng mặt chữ nhưng sai thanh điệu, hoặc đọc đúng thanh điệu từng âm tiết riêng lẻ nhưng ngữ điệu toàn câu đều đều như máy đọc tin, thiếu sự lên giọng ở câu hỏi hay xuống giọng xác nhận ở cuối câu khẳng định. Cả hai lỗi đều khiến người nghe cảm nhận ngay “đây là máy”, dù không chỉ ra được chính xác lỗi ở đâu. Bài viết này phân rã kiến trúc TTS tiếng Việt thời gian thực của BEEDONI qua bốn lớp: xử lý văn bản đầu vào, acoustic model, neural vocoder và tối ưu độ trễ cho hội thoại trực tuyến.

Lớp 1. Text Frontend: chuẩn hóa văn bản trước khi đọc

Trước khi bất kỳ mô hình âm học nào chạy, văn bản đầu vào phải được chuẩn hóa. Đây là bước dễ bị xem nhẹ nhưng gây lỗi nhiều nhất trong thực tế vận hành. Số “4.300.000” phải đọc thành “bốn triệu ba trăm nghìn” theo cách người Việt nói trong văn cảnh giá tiền, chứ không đọc từng chữ số. Viết tắt như “T2” trong “làm việc T2-T6” phải hiểu là “thứ Hai”. Ngày tháng “07/11” cần đọc đúng thứ tự ngày trước tháng theo quy ước Việt Nam, khác với tiếng Anh Mỹ.

Dạng văn bản gốcCách đọc sai thường gặpCách đọc chuẩn hóa
4.300.000đ“bốn chấm ba trăm nghìn đồng”“bốn triệu ba trăm nghìn đồng”
07/11/2026“không bảy, mười một”“ngày bảy tháng mười một”
Dr. Thư“đờ rờ Thư”“bác sĩ Thư”
Invisalignphiên âm sai quy tắc tiếng Việtgiữ nguyên âm gốc tiếng Anh, chêm tự nhiên trong câu

Sau chuẩn hóa, văn bản được chuyển thành chuỗi âm vị (phoneme) tiếng Việt qua một bộ grapheme-to-phoneme (G2P) riêng cho tiếng Việt, xử lý cả các trường hợp chêm tiếng Anh bằng một bộ G2P tiếng Anh song song, ghép nối tự nhiên trong cùng một câu, đúng với hiện tượng code-switching phổ biến trong giao tiếp CSKH tại Việt Nam.

Lớp 2. Acoustic Model: dự đoán cao độ, trường độ và năng lượng cho từng âm tiết

Acoustic model chuyển chuỗi âm vị thành mel-spectrogram, biểu diễn phổ tần số theo thời gian mô phỏng cách tai người cảm nhận âm thanh. BEEDONI dùng kiến trúc dòng FastSpeech2: một bộ mã hóa transformer chuyển âm vị thành biểu diễn ẩn, qua một thành phần then chốt gọi là variance adaptor, rồi một bộ giải mã transformer tạo ra mel-spectrogram.

Variance Adaptor: nơi thanh điệu tiếng Việt được mô hình hóa

Variance adaptor dự đoán riêng biệt ba đại lượng cho mỗi âm tiết: trường độ (duration, âm tiết kéo dài bao lâu), cao độ (pitch / F0, quyết định thanh điệu) và năng lượng (energy, độ to nhỏ). Việc tách riêng ba đại lượng này, thay vì để mô hình tự suy ra ẩn trong quá trình sinh mel-spectrogram, mang lại hai lợi ích quan trọng với tiếng Việt.

Thứ nhất, độ chính xác thanh điệu: vì cao độ được dự đoán tường minh theo từng âm tiết, đội kỹ thuật có thể huấn luyện riêng, đánh giá riêng và hiệu chỉnh riêng mô-đun này, thay vì phải đoán lỗi thanh điệu nằm ở đâu trong một mô hình end-to-end mờ đục. Thứ hai, khả năng kiểm soát ngữ điệu: bằng cách điều chỉnh đường nét cao độ dự đoán theo loại câu, giọng đọc câu hỏi được tạo độ dốc lên ở cuối câu, câu xác nhận được tạo độ dốc xuống, câu cảm ơn được làm mềm hơn, giúp tránh hiện tượng đọc đều đều như tin tức.

text
Phoneme sequence ──▶ Encoder (Transformer) ──▶ h
                                                │
                          ┌─────────────────────┼─────────────────────┐
                          ▼                     ▼                     ▼
                  Duration Predictor     Pitch Predictor      Energy Predictor
                          │                     │                     │
                          └─────────► Length Regulator ◄──────────────┘
                                            │
                                            ▼
                              Decoder (Transformer) ──▶ Mel-spectrogram

Lớp 3. Neural Vocoder: từ mel-spectrogram thành dạng sóng âm thanh

Mel-spectrogram chỉ là biểu diễn trung gian, chưa phải âm thanh nghe được. Neural vocoder đảm nhận bước cuối: tổng hợp dạng sóng (waveform) thực tế từ mel-spectrogram. BEEDONI dùng HiFi-GAN, một mạng đối sinh (Generative Adversarial Network) gồm một generator tích chập chuyển đổi mel-spectrogram thành waveform, và nhiều discriminator đánh giá tính tự nhiên của âm thanh sinh ra ở nhiều độ phân giải tần số khác nhau trong quá trình huấn luyện.

Lợi thế quyết định của HiFi-GAN so với các vocoder dựa trên mô hình tự hồi quy (autoregressive, như WaveNet gốc) là tốc độ suy luận: generator sinh toàn bộ waveform song song thay vì từng mẫu một, đạt tốc độ nhanh hơn thời gian thực hàng chục lần trên GPU. Đây là điều kiện bắt buộc để TTS chạy trong một pipeline hội thoại thời gian thực, nơi tổng ngân sách độ trễ cho toàn bộ chuỗi VAD, ASR, LLM, TTS chỉ gói gọn trong vài trăm mili-giây.

Loại vocoderChất lượng âm thanhTốc độ suy luậnPhù hợp cho
Griffin-Lim (thuật toán cổ điển)Thấp, có tiếng rè kim loạiRất nhanh, không cần GPUDemo nhanh, không dùng cho sản phẩm
WaveNet tự hồi quyRất caoRất chậm, không khả thi real-timeNghiên cứu, tổng hợp offline
HiFi-GAN (song song)Cao, gần người thậtNhanh hơn thời gian thực nhiều lầnVoice AI thời gian thực

Lớp 4. Tối ưu độ trễ: cắt câu theo cụm ngữ điệu, không chờ hết câu

Như đã phân tích trong bài viết về pipeline Voice AI tiếng Việt thời gian thực, tổng độ trễ cảm nhận cần được nén xuống dưới 700ms, trong đó tầng tổng hợp giọng nói chỉ được chiếm một phần nhỏ, mục tiêu khoảng 80 đến 150ms cho gói âm thanh đầu tiên. Nếu TTS đợi mô hình ngôn ngữ sinh xong toàn bộ câu trả lời rồi mới bắt đầu tổng hợp, độ trễ cộng dồn sẽ vượt xa ngưỡng này.

Giải pháp là streaming TTS theo cụm ngữ điệu: văn bản từ LLM được cắt tại các ranh giới tự nhiên (dấu phẩy, dấu chấm, liên từ) ngay khi đủ một cụm vài từ có nghĩa hoàn chỉnh, thay vì chờ toàn câu. Mỗi cụm được đưa qua acoustic model và vocoder độc lập, cho phép phát gói âm thanh đầu tiên gần như ngay khi LLM vừa sinh xong cụm từ đầu, trong khi phần còn lại của câu trả lời vẫn đang được mô hình ngôn ngữ tiếp tục sinh ra.

  • Cắt theo ranh giới ngữ điệu, không cắt theo số ký tự cố định, để tránh ngắt giữa một cụm từ đang mang thông tin cao độ liên tục.
  • Prosody carry-over: cao độ kết thúc của cụm trước được truyền làm điều kiện khởi đầu cho cụm sau, tránh hiện tượng giọng bị “giật” giữa hai đoạn ghép.
  • Batching nhỏ trên GPU: nhiều cụm ngắn từ nhiều cuộc gọi đồng thời được gộp theo lô nhỏ để tận dụng song song hóa mà không tăng độ trễ từng cụm riêng lẻ.
  • Cache giọng đọc các cụm cố định (lời chào, câu xác nhận thường dùng) để bỏ qua hoàn toàn bước suy luận cho những câu lặp lại nhiều nhất.

Đánh giá chất lượng: không chỉ nghe bằng tai

Đánh giá chủ quan bằng tai (nghe thử) là cần thiết nhưng không đủ để theo dõi chất lượng liên tục ở quy mô sản xuất. BEEDONI kết hợp chỉ số MOS (Mean Opinion Score) thu thập định kỳ từ người đánh giá, với các chỉ số khách quan tự động: độ lệch F0 so với giọng tham chiếu cho từng thanh điệu, độ ổn định trường độ, và tỷ lệ các lỗi phát âm điển hình (nuốt âm cuối, đọc sai số, đọc sai tên riêng) được phát hiện qua việc chạy ngược TTS output qua chính mô hình ASR và so khớp văn bản.

Mỗi khi mô hình được huấn luyện lại hoặc thêm giọng đọc mới, bộ kiểm thử này chạy tự động trên một tập câu chuẩn (bao gồm cả các câu khó: số tiền lớn, ngày tháng, tên riêng, câu hỏi, câu phủ định), đảm bảo không có hồi quy chất lượng trước khi mô hình mới được đưa vào sản xuất.

“Một giọng nói tổng hợp tốt không phải là giọng nói nghe rõ từng chữ. Đó là giọng nói mà khách hàng quên mất rằng mình đang nói chuyện với máy, chỉ còn tập trung vào nội dung được trả lời.”

Kết luận: giọng nói là giao diện, không phải chi tiết kỹ thuật phụ

Với một tổng đài thoại, giọng nói tổng hợp chính là toàn bộ giao diện người dùng. Một lỗi thanh điệu, một quãng ngắt bất thường, một độ trễ vài trăm mili-giây đều được khách hàng cảm nhận trực tiếp, không có lớp giao diện hình ảnh nào che đi. Vì vậy, đầu tư vào kiến trúc TTS tiếng Việt, từ chuẩn hóa văn bản, mô hình hóa thanh điệu, tới tối ưu độ trễ streaming, là đầu tư trực tiếp vào tỷ lệ khách hàng sẵn sàng trò chuyện tiếp với AI thay vì cúp máy xin gặp người thật.

BEEDONI được xây dựng bởi đội ngũ có nền tảng nghiên cứu Speech-to-Text và Text-to-Speech trực tiếp cho đối tác tại Úc và Singapore, đóng gói toàn bộ pipeline TTS này vào Tổng đài Voice AI hoạt động 24/7 với giọng nói tiếng Việt tự nhiên, sẵn sàng tích hợp cho doanh nghiệp mà không cần tự xây hạ tầng tổng hợp giọng nói từ đầu.