Tất cả bài viết
Mô hình mới · 19 tháng 8, 2026

Zero TTSGiọng nói tiếng Việt, âm thanh đầu tiên chỉ sau 70 mili giây

ZeroTTS là mô hình text-to-speech tốc độ cao, giọng đọc tự nhiên và chi phí tính toán thấp, được thiết kế cho các hệ thống hội thoại thời gian thực.

1.03%
word error rate
mô hình mở tốt thứ hai: 4.13%
70 ms
đến âm thanh đầu tiên
trên CPU
0.50×
real-time factor
2 giây âm thanh mỗi giây tính toán
202M
synthesis parameters
0,86 GB dung lượng
Mẫu âm thanh

Bốn mẫu tổng hợp, bao gồm cả những trường hợp khó

Toàn bộ các đoạn dưới đây được tạo bằng chính mô hình đã phát hành, gồm hội thoại, kể chuyện dài, văn bản pha tiếng Anh và bản tin. Văn bản đầu vào được đặt ngay dưới mỗi đoạn để bạn đối chiếu trong lúc nghe.

Hội thoại hai người, thu một lần

--:--

Đối thoại đời thường, giữ đúng nhịp ngắt cần thiết cho câu chốt

Kể chuyện dài

--:--

Đoạn mở đầu truyện Tấm Cám, giọng kể có lồng lời thoại nhân vật

Tiếng Anh xen trong tiếng Việt

--:--

Tên riêng, thuật ngữ và một câu tiếng Anh hoàn chỉnh, không dùng bảng phiên âm

Bản tin có số liệu và tên viết tắt

--:--

Tên sản phẩm, tỷ lệ phần trăm và số phiên bản được đọc theo cách của một biên tập viên

Một giọng nằm ngoài tập huấn luyện, đọc ngôn ngữ mà giọng đó chưa từng nói

ZeroTTS nén reference clip thành các latent vector chỉ mang đặc trưng danh tính người nói, không mang thông tin ngôn ngữ. Nhờ đó, một giọng tiếng Nhật có thể đọc tiếng Việt và một giọng tiếng Việt có thể đọc tiếng Anh, chỉ từ vài giây audio tham chiếu và không cần transcript.

Reference tiếng Nhật

--:--

Sáu giây, không cung cấp transcript

↓ cho ra

Đọc tiếng Việt

--:--

Giữ nguyên chất giọng, thanh điệu chính xác

Reference tiếng Việt

--:--

Hai giây, độ dài tối thiểu còn sử dụng được

↓ cho ra

Đọc tiếng Anh

--:--

Kết quả từ phần dữ liệu tiếng Anh trong quá trình huấn luyện

Bài toán

Tốc độ và độ tự nhiên không còn là sự đánh đổi

ZeroTTS được xây dựng cho một mục tiêu duy nhất: real-time voice agent. Chất lượng của một voice agent được quyết định bởi hai yếu tố: độ trễ từ lúc hệ thống xác định nội dung cần nói đến lúc người dùng nghe được âm tiết đầu tiên, và mức độ tự nhiên của phần âm thanh phát ra sau đó. Từ trước đến nay, hai yếu tố này luôn đối nghịch nhau. Chúng tôi cho rằng đó không phải là điều tất yếu.

Các mô hình TTS quy mô lớn, ở mức hàng tỷ tham số, đủ khả năng biểu đạt cảm xúc và đặc trưng vùng miền, nhưng đổi lại cần GPU cùng vài giây tính toán cho mỗi câu. Ở chiều ngược lại, những mô hình nhẹ đủ để chạy trên CPU thường đạt được tốc độ bằng cách thu gọn hoặc loại bỏ thành phần quyết định prosody. Kết quả là giọng đọc đều đều, ngắt nghỉ máy móc và thiếu ngữ điệu, chấp nhận được với các thông báo tự động, nhưng bộc lộ khuyết điểm ngay trong hội thoại, nơi người nghe nhận biết ý định từ nhịp điệu và cao độ trước khi kịp xử lý hết nội dung câu nói.

ZeroTTS được thiết kế để lấp vào khoảng trống đó: 202 triệu tham số, âm thanh đầu tiên phát ra sau khoảng 70 mili giây trên CPU, và điểm naturalness cao nhất trong số các hệ thống tiếng Việt mã nguồn mở mà chúng tôi đánh giá.

Kiến trúc

Quy trình tạo ra một frame tiếng nói

ZeroTTS là một autoregressive language model hoạt động trên audio token. Yếu tố giúp mô hình vừa nhỏ gọn vừa nhanh nằm ở cách nó tiết kiệm sequence length.

MỘT LẦN CHO MỖI CÂUMỖI 80 msReference clip3 đến 30 giâyVoice encoder10 learned queries10 voice latents10 × 768Textraw orthographyText encoder9 lớp, bidirectionalcross-attentionprefixGlobal transformer9 lớp · theo thời gianhₜLocal transformer4 lớp · theo chiều sâu16 codebook indicesmột frame 80 msframe được đưa lại vào sequenceCodec decoderfrozen, streamingAudio48 kHz
Màu cam là hot path: hai lần gọi operator, lặp lại cho mỗi 80 ms tiếng nói. Các thành phần màu xám chỉ chạy một lần cho mỗi câu, hoặc không chạy nữa khi voice đã được cache.

Neural audio codec

Mô hình không làm việc trực tiếp với waveform. Audio được tokenize bằng MOSS-Audio-Tokenizer-Nano, một causal codec hoạt động ở 12,5 frame mỗi giây với 16 residual quantizer, mỗi quantizer gồm 1024 phần tử, tái tạo audio ở tần số 48 kHz. Mỗi frame tương ứng 80 ms tiếng nói và được biểu diễn bằng 16 số nguyên.

Chính frame rate thấp này giúp một autoregressive decoder có thể chạy trên CPU. Codec được sử dụng ở trạng thái frozen, và bản phát hành chỉ đi kèm decoder graph.

Generative model

Mọi codec language model đều gặp chung một trở ngại: mỗi frame gồm 16 token thay vì một. Nếu cấp riêng một vị trí trong sequence cho từng token, một câu dài 10 giây sẽ tiêu tốn 2000 bước sinh. Các giải pháp phổ biến hoặc phân chia công việc cho hai mô hình, hoặc xen kẽ các codebook theo delay pattern. Cả hai cách đều rút ngắn được độ dài sequence nhưng phải trả giá bằng độ trễ.

ZeroTTS tách hai trục này thành hai transformer riêng biệt. Một global transformer 9 lớp duyệt theo trục thời gian và sinh ra một hidden state cho mỗi frame 80 ms. Một local transformer 4 lớp nhận hidden state đó và duyệt dọc codebook stack để sinh đủ 16 index cho frame tương ứng. Chỉ frame đã hoàn chỉnh mới được đưa trở lại global sequence, nhờ đó sequence mà mô hình phải attend luôn giữ đúng một vị trí cho mỗi frame, bất kể codec có bao nhiêu tầng. Đây là quyết định thiết kế quan trọng nhất giúp mô hình chạy được trên laptop.

Voice and text conditioning

Văn bản được xử lý bởi một bidirectional encoder 9 lớp, và hidden state của encoder này không tham gia vào luồng autoregressive; decoder truy cập chúng thông qua cross-attention. Thiết kế này mang lại hai lợi ích: KV cache tăng dần trong quá trình sinh chỉ chứa vị trí của voice và audio, do đó chi phí cho mỗi frame không phụ thuộc vào độ dài câu; đồng thời văn bản chỉ được encode một lần cho mỗi câu thay vì phải xử lý lại 12,5 lần mỗi giây. Mô hình không sử dụng bước grapheme-to-phoneme ở bất kỳ khâu nào, nhờ đó đọc chính xác những chuỗi như ZeroTTS hay 31/12/2025.

Thông tin giọng cũng được đưa vào theo cách tương tự, dưới dạng prefix thay vì prompt. Reference clip được encode thành codec frame, bổ sung ngữ cảnh, rồi nén qua một tập learned query có kích thước cố định, không phụ thuộc clip dài 3 giây hay 30 giây và không yêu cầu transcript đi kèm.

Streaming runtime

Bản phát hành gồm ba ONNX graph, không phụ thuộc PyTorch, với chi phí hai lần gọi operator cho mỗi 80 ms audio. Các frame sau khi decode được đưa tới codec decoder có KV cache, theo lịch chia chunk tăng dần: chunk đầu tiên chỉ gồm một frame để âm thanh đến loa sớm nhất có thể, các chunk sau tăng dần lên 16 frame nhằm phân bổ overhead của mỗi lần gọi, khi người dùng đã bắt đầu nghe.

Phân bổ tham số theo thành phần

Global decoder85M
Text encoder63.8M
Embeddings và output head31.4M
Local transformer22.1M

202,3 triệu tham số cho phần synthesis. Voice encoder chiếm thêm 22,4 triệu và chỉ cần thiết khi tạo voice mới, không tham gia vào quá trình tổng hợp.

Đánh giá

Đánh giá trên bộ benchmark do chúng tôi tự xây dựng

Các bộ benchmark tiếng Việt hiện có chưa đủ độ khó để phân biệt những hệ thống zero-shot hiện đại. Phần lớn chỉ gồm audio kèm transcript, khiến phương pháp đánh giá mặc nhiên trở thành copy-eval: cùng một đoạn audio vừa đóng vai trò reference voice vừa là ground truth. Mô hình đọc lại đúng câu vừa nhận, bằng đúng giọng đang được cung cấp, và hệ thống nào cũng đạt kết quả cao.

Những trường hợp thực sự khó bao gồm: một giọng được chuyển sang ngôn ngữ chưa từng nói, tiếng Anh xen giữa câu, văn bản chưa qua normalize, từ hiếm gặp và tên riêng lạ. Bên cạnh đó, word error rate hoàn toàn không phản ánh hai tiêu chí mà người nghe cảm nhận đầu tiên: mức độ giống giọng reference và mức độ tự nhiên.

Vì vậy, chúng tôi phát hành ZeroBench-TTS: 137 mẫu trên 59 giọng nằm ngoài tập huấn luyện, chia thành các subset monolingual, code-switching, cross-lingual và adversarial orthography, trong đó reference clip không bao giờ được lấy từ chính câu đang đánh giá. Bộ benchmark báo cáo speaker similarity và naturalness song song với word error rate. Scorer chấp nhận mọi cách đọc hợp lệ của một dạng viết, nhưng vẫn tính sai thanh điệu là lỗi, bởi trong tiếng Việt thanh điệu là một phần của từ. Scorer được đặt trong repo của dataset, và toàn bộ các hệ thống dưới đây đều được chấm bằng cùng một đoạn mã.

Chỉ sốZeroTTSOmniVoiceXTTS-v2-viviXTTS
Word error rate
1.03%4.13%16.42%18.40%
Naturalness (UTMOSv2)
2.912.762.432.35
Speaker similarity
0.9360.9500.9400.935
Dead air per clip
0.029s0.340s0.532s0.233s
Real-time factor, CPU
0.50×6.12×0.71×0.73×
Parameters
202M775M467M467M

ZeroBench-TTS, điều kiện raw text. Ký hiệu ↓ / ↑ cho biết giá trị thấp hơn hay cao hơn là tốt hơn; giá trị in đậm là kết quả tốt nhất của mỗi hàng.

Naturalness là chỉ số cần đọc song song với tốc độ. Việc trở thành hệ thống nhanh nhất sẽ không có nhiều ý nghĩa nếu giọng đọc đồng thời cũng đơn điệu nhất, nhưng kết quả cho thấy điều ngược lại: 2,91 UTMOSv2 là mức cao nhất trong bốn hệ thống, còn chỉ số dead air tốt hơn phần còn lại khoảng một bậc độ lớn. Đây chính là khuyết điểm mà người nghe nhận ra sớm nhất khi làm việc với một voice agent trực tiếp.

Tuy nhiên, yếu tố quyết định một voice agent có tạo được cảm giác tự nhiên hay không lại không nằm ở các chỉ số trên, mà ở khoảng thời gian chờ trước khi âm thanh đầu tiên được phát ra:

Thời gian đến mẫu âm thanh đầu tiên

thang log · CPU · đầu vào độ dài trung bình
ZeroTTS
70 ms
viXTTS
5.1 s
XTTS-v2-vi
6.1 s
OmniVoice
34.0 s
100ms1s10s

Cũng cần nói rõ một điểm: ZeroTTS không dẫn đầu về speaker similarity. Latent bottleneck đã đánh đổi một phần chi tiết âm sắc để có được cơ chế conditioning không tiêu tốn context, và hạn chế này thể hiện rõ nhất khi chuyển giọng của người nước ngoài sang đọc tiếng Việt.

Triển khai

Toàn bộ đều được công khai

Python
pip install zerotts

from zerotts import ZeroTTS

tts = ZeroTTS.from_pretrained("zeroweight-ai/ZeroTTS")
tts.synthesize("Xin chào, đây là ZeroTTS.", voice="maichi", out="hello.wav")

Có một thành phần chúng tôi không phát hành: voice encoder, phần tạo ra voice mới từ reference clip. Các voice có sẵn được nạp dưới dạng một file nhỏ và không yêu cầu thay đổi mã nguồn, trong khi việc giữ lại voice encoder làm tăng đáng kể chi phí của hình thức lạm dụng dễ xảy ra nhất, tức sao chép giọng của một người có thật từ vài giây ghi âm, mà không làm giảm tính hữu dụng của hệ thống. Nếu bạn xây dựng sản phẩm trên ZeroTTS, hãy thông báo rõ với người nghe rằng đây là giọng tổng hợp, ở những nơi họ có thể hiểu nhầm.

Giải đáp

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

ZeroTTS có được sử dụng miễn phí cho mục đích thương mại không?+

Mã nguồn và weight đã phát hành đều là mã nguồn mở theo các điều khoản nêu trong repo, bao gồm cả mục đích thương mại. Điều duy nhất model card không cho phép là mạo danh: sử dụng ZeroTTS để gán lời nói cho một người có thật khi chưa được họ đồng ý, hoặc tạo ra âm thanh nhằm đánh lừa người nghe.

Mô hình yêu cầu cấu hình phần cứng như thế nào?+

Chỉ cần CPU. ZeroTTS synthesize ở real-time factor 0,50× trên vi xử lý laptop, tương đương hai giây âm thanh cho mỗi giây tính toán, và bắt đầu cho ra âm thanh sau khoảng 70 mili giây. Mô hình không yêu cầu GPU ở bất kỳ khâu nào, đồng thời có sẵn bản chạy hoàn toàn trong trình duyệt trên máy người dùng.

Mô hình có đủ nhanh cho một real-time voice agent không?+

Đây chính là mục tiêu thiết kế của mô hình. Chỉ số quan trọng với một voice agent không phải throughput mà là độ trễ trước âm thanh đầu tiên, bởi phần còn lại được stream dần trong lúc người dùng đang nghe. ZeroTTS bắt đầu phát âm thanh sau 53 đến 89 mili giây tùy độ dài đầu vào, so với 2,5 đến 52 giây ở các lựa chọn mã nguồn mở khác cho tiếng Việt, và duy trì tốc độ nhanh hơn thời gian thực trên CPU trong suốt quá trình sinh.

Mô hình có sao chép được giọng từ bản ghi âm của tôi không?+

Bản phát hành công khai không hỗ trợ tính năng này. ZeroTTS đi kèm bộ voice dựng sẵn và runtime để sử dụng chúng; riêng voice encoder, tức thành phần chuyển một reference clip thành voice, được giữ lại có chủ đích, bởi khả năng sao chép giọng chỉ từ vài giây audio là phần dễ bị lạm dụng nhất của công nghệ này.

Mô hình xử lý từ tiếng Anh xen trong câu tiếng Việt như thế nào?+

Đây là mục tiêu thiết kế chứ không phải hiệu ứng phụ. ZeroTTS đọc trực tiếp raw orthography, không sử dụng frontend grapheme-to-phoneme, và training corpus có 12.000 giờ audio tiếng Anh nhằm bảo đảm tên thương hiệu, từ mượn hay cả một câu tiếng Anh hoàn chỉnh đều được phát âm đúng thay vì bị đánh vần.

Mô hình được đánh giá bằng phương pháp nào?+

Trên ZeroBench-TTS, bộ benchmark tiếng Việt công khai gồm 137 mẫu được phát hành cùng mô hình, với các subset monolingual, code-switching, cross-lingual và adversarial orthography. Scorer thực hiện transcribe bằng hai hệ ASR rồi lấy mức lỗi thấp hơn, chấp nhận mọi cách đọc hợp lệ của một dạng viết, đồng thời vẫn tính sai thanh điệu là lỗi.

Giọng nói tiếng Việt, không cần hạ tầng GPU

Tải mô hình mã nguồn mở về tự vận hành, hoặc phát triển trực tiếp trên nền tảng của chúng tôi.

Tất cả bài viếtZeroWeight AI · 19 tháng 8, 2026