Kitten TTS - Mô hình TTS mã nguồn mở 25MB chạy chỉ với CPU
(github.com/KittenML)- Kitten TTS là mô hình TTS (text-to-speech) mã nguồn mở theo đuổi đồng thời sự gọn nhẹ và chất lượng âm thanh cao
- Chỉ sử dụng 15 triệu tham số nên kích thước mô hình dưới 25MB
- Khác với các TTS cỡ lớn khác, điểm nổi bật là có thể chạy trong mọi môi trường như di động, hệ thống nhúng, v.v.
- Ngay cả không có GPU, vẫn có thể xử lý tổng hợp giọng nói chất lượng cao trên mọi thiết bị
- Cung cấp nhiều tùy chọn giọng nói cao cấp, hỗ trợ tổng hợp giọng nói chất lượng cao gần giống giọng thật
- Có thể suy luận giọng nói với tốc độ nhanh, được tối ưu cho tổng hợp thời gian thực
- Hiện đã công bố mô hình developer preview, và trong tương lai sẽ lần lượt phát hành đầy đủ trọng số mô hình sau khi huấn luyện xong, mobile SDK, phiên bản web, v.v.
2 bình luận
Ước gì cũng có cả mô hình tiếng Hàn nữa..
Ý kiến trên Hacker News
Đã chạy benchmark đơn giản trên Ubuntu 24 với Razer Blade 16, Intel Core i9-14900HX
Độ trễ ban đầu với văn bản ngắn là khoảng 315ms, và tốc độ tạo giọng nói đạt khoảng 3,35~5,5 lần thời gian thực tùy độ dài văn bản
Mô hình được tải trong khoảng 710ms
Hiệu năng gần như không khác biệt giữa 4 giọng nói khác nhau, và vẫn duy trì tốc độ khoảng tối đa 5 lần thời gian thực
Trên CPU Intel Celeron N4020 (1.10GHz) của tôi, mất 6 giây để tải và tốc độ gần như thời gian thực bất kể độ dài văn bản
Cảm ơn vì đã chạy benchmark
Hiện tại mô hình vẫn chưa được tối ưu hóa
Khi SDK cho production được phát hành, chúng tôi cũng dự định tối ưu cả việc tải mô hình
Có bài đăng trên Reddit với các mẫu âm thanh do KittenTTS tạo ra
Mẫu âm thanh trên Reddit
Cũng có một video ngắn chứa nhiều giọng nói khác nhau
Video YouTube
Video trên Reddit thật sự rất ấn tượng
Thật ngạc nhiên khi chỉ dưới 25MB và chỉ dùng CPU mà chất lượng lại đạt mức này
Tôi không hiểu vì sao có người đánh giá nó chỉ là “một mô hình tầm thường”
Âm thanh rất rõ ràng và mạch lạc
Ngay cả với tôi, một người không phải người bản ngữ tiếng Anh, vẫn rất dễ nghe hiểu
Nghe có vẻ hơi chậm, và mang cảm giác như giọng nói trong phim hoạt hình
Có phải nó đã được huấn luyện chéo với giọng của các nhân vật Futurama không?
Tôi hy vọng những mô hình như thế này sẽ là tương lai
Một thời đại mà các mô hình ML nhỏ, chạy offline, thực hiện suy luận trên phần cứng rẻ tiền và sẵn có ở khắp nơi
Có thể dễ dàng tích hợp vào nhiều thiết bị hay ứng dụng khác nhau, thậm chí còn có thể chạy trên các mô hình khác
Đây chính là viễn cảnh mà Apple đang vẽ ra với SLM (mô hình ngôn ngữ nhỏ)
Nếu có một mô hình chỉ phụ trách quản lý sự kiện lịch, thì nó không cần phải chứa toàn bộ tri thức của nhân loại
Chỉ cần tập trung vào đúng những gì cần cho việc quản lý lịch là đủ
Nếu chạy mô hình trên phần cứng chuyên dụng cho một mục đích duy nhất, hiệu quả năng lượng sẽ rất cao
Thậm chí còn có thể chạy mạng nơ-ron chỉ bằng điện trở (không cần transistor)
Tất nhiên loại phần cứng này không phải mục đích chung và cũng khó nâng cấp mô hình
Nhưng trong nhiều trường hợp như vậy là quá đủ
Một bên là mô hình mua một lần rồi có thể chạy mọi thứ,
và một bên là mô hình bị trói vào thuê bao, cần phần cứng mà chỉ các siêu tập đoàn giàu nhất mới mua nổi
Tôi tò mò không biết bên nào sẽ thành công hơn
Thật ra đây chính là mục tiêu mà chúng tôi đang hướng tới
Đây cũng chính là tầm nhìn của chúng tôi
Kích thước 25MB đã rất đáng kinh ngạc, nhưng điểm đột phá thực sự là KittenTTS được phát hành theo giấy phép Apache-2.0
Nhờ sự kết hợp này, có thể nhúng ngay một engine giọng nói chạy hoàn toàn offline vào phần cứng cỡ Pi Zero hoặc đồ chơi chạy pin
Không cần GPU, không cần gọi cloud, cũng không phải lo giấy phép hạn chế
Nó biến vấn đề phần cứng hay giấy phép thành một “bài toán đóng gói” trong một bước
Việc cải thiện chất lượng có thể để sau, còn thứ thực sự thay đổi cuộc chơi là nó đã khiến mức triển khai này trở nên khả thi
Chúng tôi cũng rất hào hứng với việc tiếp tục tạo ra các mô hình AI siêu nhỏ nhưng chất lượng cao
Chúng tôi tin giao diện giọng nói cục bộ là điều tất yếu, và muốn trở thành một phần cốt lõi của lĩnh vực này trong tương lai
Mô hình lần này là bản preview, và khoảng tuần sau chúng tôi sẽ công bố thêm một phiên bản hoàn thiện hơn rất nhiều
Ngoài ra cũng sẽ phát hành thêm một mô hình khoảng 80M
Có nhắc đến việc KittenTTS là Apache-2.0
Nhưng nếu xem mã nguồn trên GitHub thì thấy đang dùng phonemizer
phonemizer dùng giấy phép GPL-3.0
Vậy nên hiện tại về thực chất nó là GPL
(Cũng nói thêm rằng bình luận này có vẻ như được LLM viết ra)
Mô hình festvox-kallpc16k của Festival chỉ khoảng 6MB, còn festvox-kallpc8k khoảng 3,5MB
Dữ liệu đa ngôn ngữ của eSpeak NG vào khoảng 12MB
Có vẻ mô hình hiện tại sẽ tạo ra giọng nói tự nhiên hơn
Nhưng trên các máy cũ hay cấu hình thấp thì từ lâu người ta cũng đã có thể làm TTS khá ổn rồi
Nếu KittenTTS là Apache-2.0
thì tôi tò mò dữ liệu huấn luyện sẽ được xử lý thế nào
Ngay cả khi mô hình có thể tái tạo đầu vào huấn luyện gần như y hệt
thì có thể chắc chắn về mặt pháp lý rằng nó hoàn toàn không phải tác phẩm phái sinh không?
Nó phụ thuộc vào espeak-ng nên là GPLv3
Có bản web
Xem demo
Âm thanh ở mức ổn, nhưng xét theo kích thước thì khá ấn tượng
Chẳng phải khá buồn cười sao khi trong phim khoa học viễn tưởng, người ta lại cố tình bóp méo giọng nói một cách kỳ lạ để robot nghe “đúng chất robot”?
Một giọng robot rõ ràng không phải giọng người thực ra trong nhiều hoàn cảnh còn hấp dẫn và phù hợp hơn
Ví dụ như một chiếc máy nướng bánh mì thông minh đâu cần nói như phát thanh viên BBC
Chỉ cần phát âm dễ nghe là được
Tôi đã cho nó đọc theo đoạn văn bản demo, nhưng nghe không hay bằng các mẫu có sẵn
Để ai muốn thử thì đây là đoạn văn bản mẫu
Khi chạy demo với 6 câu thì bị lỗi
Giảm xuống còn 3 câu thì hoạt động bình thường
Tôi không rõ đây là giới hạn của mô hình hay giới hạn của bản demo
Trong môi trường của tôi thì nó hoàn toàn không chạy được
Module backend báo lỗi 404
Ví dụ lỗi 404
Tôi đang tìm đúng liên kết này
Demo trên Reddit thì tạm ổn, cảm giác giống trình độ của vài năm trước
Nhưng khi tự thử thì mọi mẫu đều gần như khó nghe hiểu
Tôi bật cười khi thấy yêu cầu hệ thống ghi là “thực tế là chạy được ở mọi nơi”
Trên máy này thì phiên bản Python quá thấp,
còn máy khác thì phiên bản Python lại quá cao, nên không cài được vì phụ thuộc gói
Tôi đã gửi vài PR để xử lý vấn đề này
PR 21, PR 24, PR 25
Nếu đã cài
uv, thì từ nhánh tham chiếu mà tôi đã mergelà có thể chạy được
Cài bằng uvx sẽ giải quyết phần lớn các vấn đề về môi trường Python
Hướng dẫn cài uv
Chọn Python thì giải quyết được một vấn đề, nhưng đồng thời tạo ra hàng chục vấn đề mới
Trên Fedora thì không chạy được vì không có phiên bản g++ phù hợp
Nguyên nhân là Python
Sau khi tự dùng thử, tôi thấy kích thước và tốc độ của mô hình khá ổn
Nhưng việc cài đặt cần rất nhiều thư viện và thành phần phụ trợ
Nên cuối cùng nó cũng cách khá xa con số 25MB
Dù vậy đây vẫn là một dự án rất hay
Nhận xét đó về vấn đề phụ thuộc rất xác đáng
Để việc cài đặt và sử dụng dễ hơn, đồng thời bổ sung hỗ trợ GPU và xử lý văn bản dài như mọi người mong muốn
tôi đã tạo một server self-hosted cho mô hình này
Kitten-TTS-Server
Chạy ngay với môi trường Python venv tiêu chuẩn nên không phải lo xung đột
Chỉ cần git clone, pip install, python server.py là xong
Có nhắc đến ONNX nên tôi đoán đã có hoặc sắp có mô hình ONNX
ONNX runtime là một thư viện duy nhất, và với C# thì nén lại khoảng 115MB
Không phải là rất nhỏ, nhưng phần code thực sự cần để chạy chỉ vài dòng nên phụ thuộc cũng ít
Kéo nhiều thư viện vào cùng lúc giúp phát triển và lặp nhanh hơn
Sau này khi tính năng ổn định thì sẽ dọn bớt những thư viện không cần thiết
Quan trọng hơn dung lượng mô hình tính bằng MB là khả năng chạy trên CPU và chất lượng, và điều tôi lo duy nhất là độ trễ
Tôi cũng tò mò liệu có mô hình chuyển giọng nói thành văn bản nào chạy offline mà không cần huấn luyện riêng hay không
Nếu đến lúc có thể trò chuyện với AI ở tốc độ tự nhiên, như người với người, thì sẽ thực sự rất ấn tượng
Mô hình parakeet của Nvidia hiện là hàng đầu cho tiếng Anh
Nó nhanh hơn Whisper 10 lần và trên CPU AMD tầm trung của tôi cũng chạy nhanh hơn thời gian thực khá nhiều
Có thể nhận dạng giọng nói offline bằng Whisper
Một số ứng dụng hỗ trợ ghi chính tả hoặc chép lời hoàn toàn offline
Ví dụ với đoạn văn bản “The brown fox jumps over the lazy dog..”
thời gian tạo trung bình là 1,28 giây, tương đương khoảng 30,35 ký tự mỗi giây
Tính trên AMD Ryzen 7 5800H
Với mô hình nhận dạng giọng nói offline thì tiêu biểu là whisper của OpenAI
Kho lưu trữ chính thức của Whisper
Có ai biết những yếu tố nào ảnh hưởng đến độ trễ của mô hình TTS không?
Khá ấn tượng
Trong một số lĩnh vực cụ thể, ví dụ hệ nhúng, nó hoàn toàn có chỗ dùng
Tuy vậy chất lượng có lẽ chưa đủ hoàn hảo để thay thế các mô hình lớn
Theo tôi, các mô hình TTS open có chất lượng offline tốt nhất hiện nay là fish-speech và f5-tts
Tôi đã chạy F5-TTS trên chiếc NVidia 1660 cũ (6GB VRAM) và nó hoạt động khá ổn
Với phần cứng mới hơn thì có thể đạt chất lượng tốt hơn, đa ngôn ngữ và cả zero-shot với chi phí không quá cao
Trên Android, SherpaTTS có độ tương thích tốt
Mô hình này là bản preview, và chúng tôi sẽ còn cải thiện chất lượng nhiều hơn nữa
Fish Speech có trọng số không cho phép sử dụng thương mại
Tôi tò mò về yêu cầu VRAM, vì KittenTTS chỉ có 15 triệu tham số nên có thể chạy trên các máy tính công suất thấp giá dưới 100 USD
GPU 6GB mà bạn nói đến giờ đã là hàng cũ rồi
Chất lượng không ấn tượng như tôi kỳ vọng
Mục tiêu của tôi là giọng nói tự nhiên
Tôi cũng không hài lòng với piper hay kokoro, còn XTTS thì cài hơi phức tạp
Ở mảng nhận dạng giọng nói (STT), whisper thực sự quá xuất sắc
Tôi rất mong có TTS tốt
Dùng GPU nhiều cũng không sao, tôi chỉ muốn chất lượng tốt
Nói thật thì mô hình này hiện còn kém hơn kokoro
Theo tôi, chất lượng SOTA open-weights hiện tại tốt nhất là chatterbox
TTS mã nguồn mở tốt nhất mà tôi từng thấy là Dia
Nó có vài giới hạn nhưng chạy tốt cả trên laptop
Pinokio cũng đáng để thử
Chatterbox cũng đáng để dùng thử
Nếu bạn có dư dả tài nguyên GPU thì không cần quá bận tâm về chất lượng ở đây
Điều quan trọng là mô hình này chạy được không cần GPU
Trước thời Tacotron2, tôi từng chạy các TTS nhỏ như GlowTTS, MelGAN và vocoder với chi phí thấp trên cloud của Digital Ocean
Sau đó xu hướng ngày càng chuyển sang mô hình lớn hơn
Nhưng tôi nghĩ tương lai sẽ là thời đại các mô hình nhỏ được nhúng trực tiếp vào từng thiết bị
Dùng cho Raspberry Pi, đồ chơi và đủ loại thiết bị nhỏ không cần mạng
Edge AI sẽ mang lại sự mở rộng khổng lồ trong robot, đồ chơi, thiết bị tiêu dùng và game