- Thư viện chuyển văn bản thành giọng nói (TTS) hạng state-of-the-art dựa trên ONNX, có thể thực hiện tổng hợp giọng nói chất lượng cao chỉ với CPU
- Kích thước mô hình nằm trong khoảng 15M~80M tham số (25~80MB), có thể chạy hiệu quả ngay cả khi không có GPU
- Cung cấp 8 giọng nói tích hợp sẵn, điều chỉnh tốc độ, pipeline tiền xử lý văn bản, và đầu ra âm thanh 24kHz
- Có thể dùng trực tiếp trên Hugging Face và dễ dàng tích hợp bằng Python API
- Giải pháp TTS mã nguồn mở hướng tới triển khai trên thiết bị biên và hỗ trợ tích hợp thương mại
Tổng quan về Kitten TTS
- Kitten TTS là thư viện TTS mã nguồn mở dựa trên ONNX, thực hiện tổng hợp giọng nói chất lượng cao trên CPU mà không cần GPU
- Kích thước mô hình là 15M~80M tham số, tương đương 25~80MB trên đĩa
- Phiên bản 0.8 cung cấp các mô hình 15M, 40M và 80M
- Hiện đang ở giai đoạn developer preview, API có thể thay đổi trong tương lai
- Cung cấp hỗ trợ thương mại (hỗ trợ tích hợp, giọng nói tùy chỉnh, giấy phép doanh nghiệp)
Tính năng chính
- Kiến trúc siêu nhẹ: bắt đầu từ 25MB ở chuẩn int8, phù hợp để triển khai trong môi trường edge
- Tối ưu cho CPU: thực hiện suy luận ONNX hiệu quả mà không cần GPU
- 8 giọng nói tích hợp sẵn: Bella, Jasper, Luna, Bruno, Rosie, Hugo, Kiki, Leo
- Tính năng điều chỉnh tốc độ: điều khiển tốc độ phát âm bằng tham số
speed
- Pipeline tiền xử lý văn bản: tự động xử lý số, tiền tệ, đơn vị đo và hơn thế nữa
- Đầu ra 24kHz: tạo âm thanh chất lượng cao ở sample rate tiêu chuẩn
Các mô hình được cung cấp
- Có bốn mô hình được cung cấp
- kitten-tts-mini (80M, 80MB)
- kitten-tts-micro (40M, 41MB)
- kitten-tts-nano (15M, 56MB)
- kitten-tts-nano (int8, 15M, 25MB)
- Một số người dùng đã báo cáo vấn đề với mô hình
kitten-tts-nano-0.8-int8; nên tạo issue nếu gặp lỗi
Demo và cách sử dụng
- Có thể trải nghiệm trực tiếp trên trình duyệt qua Hugging Face Spaces
- Có thể cài đặt chỉ với Python 3.8 trở lên và pip
- Ví dụ sử dụng cơ bản:
from kittentts import KittenTTS
model = KittenTTS("KittenML/kitten-tts-mini-0.8")
audio = model.generate("텍스트", voice="Jasper")
- Tính năng nâng cao: điều chỉnh tốc độ (
speed), lưu file (generate_to_file), xem danh sách giọng nói khả dụng
Cấu trúc API
KittenTTS(model_name, cache_dir=None)
- Tải mô hình từ Hugging Face Hub
model.generate(text, voice, speed, clean_text)
- Chuyển văn bản thành âm thanh 24kHz
model.generate_to_file(text, output_path, voice, speed, sample_rate, clean_text)
- Lưu trực tiếp giọng nói tổng hợp ra file
model.available_voices
- Trả về danh sách giọng nói có sẵn
Yêu cầu hệ thống
- Hệ điều hành: Linux, macOS, Windows
- Python: 3.8 trở lên
- Phần cứng: chỉ cần CPU, không cần GPU
- Dung lượng đĩa: 25~80MB tùy theo mô hình
- Khuyến nghị sử dụng môi trường ảo (venv, conda, v.v.)
Lộ trình
- Dự kiến ra mắt tối ưu hóa engine suy luận, mobile SDK, mô hình chất lượng cao, TTS đa ngôn ngữ, KittenASR
- Apache License 2.0
1 bình luận
Ý kiến trên Hacker News
Tôi đã làm purr, một CLI wrapper cho Kitten TTS
gói kitten có chuỗi phụ thuộc kittentts → misaki[en] → spacy-curated-transformers
nên nếu cài trực tiếp bằng
uvthì nó sẽ kéo theo torch và các gói NVIDIA CUDA (vài GB), dù thực tế không cần để chạyLần chạy đầu tiên tôi gặp lỗi “OSError: PortAudio library not found”, nhưng đã giải quyết bằng
apt install libportaudio2Nhưng tôi muốn hỏi liệu khi bỏ các phụ thuộc không cần thiết thì có mất chức năng nào không
Dự án thật sự rất tuyệt
Tôi sẽ sớm thử trực tiếp
Nhưng có một điều tôi thắc mắc — tại sao lại không phát hành dưới dạng file thực thi dòng lệnh?
API cũng gần như theo kiểu manpage nên có vẻ có thể làm rất nhanh. Chỉ là tò mò thôi
Trước hết sẽ lấy phản hồi với bản onnx, rồi sau đó đơn giản hóa quy trình chạy, bao gồm cả file thực thi dòng lệnh
Điều tôi thích ở OpenClaw là chỉ cần gửi URL GitHub trên Discord là nó tạo ngay tin nhắn thoại
Chỉ trong vài phút tôi đã nhận được benchmark và cả sample audio
Chất lượng rất ấn tượng so với kích thước. Giọng chưa hoàn hảo nhưng không tệ
Trên CPU Intel 9700, model 80M chạy khoảng 1.5x thời gian thực, còn trên GPU 3080 thì cũng không nhanh hơn
Hiện tại chúng tôi dùng giọng mang phong cách anime để thể hiện khả năng biểu cảm
Nếu bạn có thể chia sẻ lý do chạy chậm trên GPU qua GitHub issue hoặc Discord thì sẽ rất hữu ích. Chúng tôi cũng sẽ thêm code ví dụ
Tôi đã vật lộn để tránh xung đột phiên bản Python, cũng thử cả Docker nhưng cuối cùng vẫn phải tự thiết lập trực tiếp
Cuối cùng cũng chạy được, nhưng tôi thật sự rất ghét Python
Có vẻ hiện tại chỉ hỗ trợ giọng Mỹ
Cá nhân tôi chỉ quan tâm đến accent Ireland, Anh và Wales. Giọng Mỹ thì không hứng thú lắm
TTS chạy trên thiết bị là một công cụ trợ năng thực sự tuyệt vời
Phần lớn thiết bị phụ thuộc vào dịch vụ online, nên cách làm local như thế này tốt hơn nhiều
Tôi cảm nhận được sự cải thiện rõ rệt so với các model trước
Thật sự ấn tượng. Cảm ơn vì đã chia sẻ
Hiện tại model 15M còn tốt hơn model 80M trước kia, và chúng tôi sẽ tiếp tục duy trì tốc độ cải tiến này
Tôi muốn thấy cả model chuyên cho tiếng Nhật trong tương lai
Qwen3-tts có hỗ trợ tiếng Nhật, nhưng thỉnh thoảng lại trộn tiếng Trung nên không dùng được
Tuy nhiên làm vậy có thể làm mất thông tin cao độ/ngữ điệu (ví dụ: 飴 vs 雨)
Nếu bạn chia sẻ use case, chúng tôi muốn phản ánh điều đó vào việc cải thiện chất lượng
Hiệu năng rất ấn tượng so với kích thước model
Tuy vậy có vấn đề với cách đọc số
Tôi đã thử “Startup finished in 135 ms.” và phần số nghe như tiếng ồn
Khi đổi thành “one hundred and thirty five seconds” thì tạm ổn hơn
Trong lúc chờ, có thể xử lý bằng cách thêm tiền xử lý văn bản
Hầu hết các model TTS đều xử lý số và đơn vị bằng cách chuyển chúng thành chuỗi chữ
Bản phát hành tiếp theo cũng sẽ sửa ở cấp độ model
Sẽ tốt hơn nếu có kèm sample audio so sánh bốn model
Nếu có ví dụ cùng một câu được đọc bởi từng model thì sẽ dễ hình dung hơn
Trong lúc đó, bạn có thể thử trực tiếp model ở demo Hugging Face
Tôi muốn hỏi đây là mã nguồn mở hay chỉ là model open weights
Chúng tôi cũng sẽ bổ sung phonemizer theo giấy phép MIT trước cuối tuần này, nên sẽ có thể dùng tự do