5 điểm bởi GN⁺ 2026-03-20 | 1 bình luận | Chia sẻ qua WhatsApp
  • 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

 
GN⁺ 2026-03-20
Ý 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 uv thì 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ạy

    • Script cài đặt hoạt động tốt
      Lầ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 libportaudio2
    • Cảm ơn rất nhiều. Tôi cứ bị lỗi cài đặt vì chuỗi phụ thuộc bị hỏng, và cái này đã xử lý được
      Như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

    • Ý tưởng hay đấy. Chúng tôi cũng định làm như vậy
      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

    • Chúng tôi dự định thêm các giọng nói chuyên nghiệp hơn và giọng tùy biến DIY
      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ụ
    • Đây là một use case hay. Tôi thấy thú vị ở chỗ có thể kiểm thử và triển khai trong sandbox mà không cần các kết nối dễ tổn thương về bảo mật như email
    • Tôi chỉ biết nói là ghen tị. Tôi mất nhiều thời gian hơn rất nhiều mới chạy được
      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

    • Cảm ơn phản hồi. Chúng tôi sẽ sớm phát hành thêm các model nhỏ gọn cho nhiều mục đích sử dụng khác nhau
  • 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ẻ

    • Cảm ơn. Những model lần này tốt hơn rất nhiều so với trước đây
      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

    • Bạn có thể thử chuyển sang hiragana ở bước tiền xử lý
      Tuy nhiên làm vậy có thể làm mất thông tin cao độ/ngữ điệu (ví dụ: 飴 vs 雨)
    • Chúng tôi dự kiến sẽ hỗ trợ tiếng Nhật trong model tiếp theo (khoảng 3 tuần nữa)
      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

    • Vấn đề này cũng đang được sửa ở cấp độ model
      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ữ
    • Cảm ơn phản hồi. Với tiền xử lý tùy chỉnh có thể giải quyết 95% trường hợp
      Bản phát hành tiếp theo cũng sẽ sửa ở cấp độ model
    • Nhân tiện, từ đúng phải là “pronounce” hoặc “pronouncing”. “pronounciating” là lỗi chính tả
  • 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

    • Gợi ý hay. Tôi sẽ thêm ngay
      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

    • Đúng vậy, là mã nguồn mở
      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