- Pocket TTS với 100 triệu tham số là một mô hình chuyển văn bản thành giọng nói gọn nhẹ có tính năng voice cloning, có thể chạy thời gian thực ngay cả trên CPU của laptop thông thường
- Thu hẹp khoảng cách hiệu năng giữa TTS dựa trên LLM cỡ lớn (hơn 1 tỷ tham số) và Kokoro TTS cỡ nhỏ (82 triệu tham số), đồng thời đạt được cả chất lượng cao lẫn hiệu quả
- Chỉ với khoảng 5 giây mẫu giọng nói, có thể tái tạo chính xác màu giọng, cảm xúc, ngữ điệu và điều kiện âm thanh của người nói
- Sử dụng kiến trúc dựa trên Continuous Audio Language Model để dự đoán trực tiếp vector tiềm ẩn liên tục thay vì token rời rạc, giúp giảm kích thước mô hình mà không làm giảm chất lượng
- Được phát hành dưới dạng mã nguồn mở giấy phép MIT, đặt ra chuẩn mực mới cho công nghệ TTS gọn nhẹ có thể hiện thực hóa tổng hợp giọng nói chất lượng cao ngay cả trong môi trường CPU
Tổng quan về Pocket TTS
- Pocket TTS là mô hình chuyển văn bản thành giọng nói với 100 triệu tham số, hỗ trợ voice cloning
- Có thể chạy thời gian thực ngay cả trên CPU laptop
- Có thể chạy cục bộ bằng lệnh
uvx pocket-tts serve hoặc uvx pocket-tts generate
- Do Kyutai phát triển và được phát hành mã nguồn mở theo giấy phép MIT
- Dữ liệu huấn luyện chỉ sử dụng các bộ dữ liệu giọng nói tiếng Anh công khai
- Có đề cập khả năng mở rộng thêm bằng dữ liệu không công khai
So sánh với các mô hình TTS hiện có
- Công nghệ TTS hiện nay được chia thành hai hướng
- Mô hình lớn dựa trên LLM: ví dụ Kyutai TTS 1.6B (khoảng 1,6 tỷ tham số)
- Có thể mô hình hóa nhiều loại giọng nói, cảm xúc và điều kiện âm thanh khác nhau nhưng cần GPU
- Mô hình nhỏ chuyên biệt: ví dụ Kokoro TTS (82 triệu tham số)
- Hiệu quả nhờ sử dụng tập giọng nói cố định và pipeline thủ công, nhưng độ linh hoạt bị hạn chế
- Pocket TTS nằm ở điểm trung gian giữa hai cách tiếp cận này và cho phép tổng hợp giọng nói chất lượng cao trên CPU
Đánh giá hiệu năng
- Đánh giá được thực hiện trên tập Librispeech test-clean
- Âm thanh đầu vào được làm sạch bằng Adobe Enhance Speech để đạt chất lượng 24kHz
- Các mô hình được so sánh: F5-TTS, DSM, Chatterbox Turbo, Kokoro TTS
- Chỉ số đánh giá:
- Word Error Rate (WER)
- Chất lượng âm thanh (ELO)
- Độ tương đồng người nói (ELO)
- Tóm tắt kết quả:
- Pocket TTS có WER 1.84, là tỷ lệ lỗi thấp nhất
- Chất lượng âm thanh tốt hơn F5-TTS và DSM
- Độ tương đồng người nói ở mức tương đương với giọng tham chiếu
- Là mô hình duy nhất có thể chạy nhanh hơn thời gian thực trên CPU
| Mô hình |
Số tham số |
WER ↓ |
Chất lượng âm thanh (ELO) ↑ |
Độ tương đồng người nói (ELO) ↑ |
Chạy thời gian thực trên CPU |
| F5-TTS |
336M |
2.21 |
1949 ± 27 |
1946 ± 26 |
✗ |
| Kyutai TTS 1.6B |
750M |
1.84 |
1959 ± 25 |
2037 ± 21 |
✗ |
| Chatterbox Turbo |
350M |
3.24 |
2055 ± 23 |
2012 ± 22 |
✗ |
| Kokoro |
82M |
1.93 |
Không có voice cloning |
Không có voice cloning |
✓ |
| Pocket TTS |
100M |
1.84 |
2016 ± 25 |
1898 ± 26 |
✓ |
- Khi thử nghiệm trên CPU Intel Core Ultra 7 165H và Apple M3, chỉ Pocket TTS và Kokoro có thể tổng hợp theo thời gian thực
Kiến trúc
- Pocket TTS được thiết kế dựa trên nghiên cứu Continuous Audio Language Model
- Cách tiếp cận trước đây dự đoán token âm thanh rời rạc, còn Pocket TTS dự đoán trực tiếp vector tiềm ẩn liên tục (latent)
- Nhờ đó loại bỏ nút thắt RQ-transformer và đạt được mô hình gọn nhẹ hơn
Neural Audio Codec
- Được thiết kế dựa trên codec Mimi
- Mimi nén bằng token rời rạc, nhưng Pocket TTS sử dụng biểu diễn tiềm ẩn liên tục
- Áp dụng huấn luyện VAE được chuẩn hóa theo phân phối chuẩn
- Chưng cất WavLM vào biểu diễn nội tại bằng hàm mất mát độ tương đồng cosine
- Loại bỏ bước RVQ và áp dụng hàm mất mát chưng cất lên toàn bộ biểu diễn tiềm ẩn
Mô hình sinh
- Dựa trên framework Masked Autoregressive(MAR)
- Gồm backbone Causal Transformer và MLP sampler
- Sử dụng hàm mất mát Lagrangian Self-Distillation(LSD) để hiện thực hóa lấy mẫu 1 bước
- Khi suy luận, vector tiềm ẩn được dự đoán sẽ được phản hồi theo cơ chế tự hồi quy
Điều kiện hóa bằng giọng nói và văn bản
- Đầu vào của mô hình kết hợp prompt giọng nói (vài giây) và văn bản
- Giọng nói được nhúng bằng codec encoder, còn văn bản được nhúng bằng SentencePiece tokenizer
Cấu hình kích thước mô hình
- Mô hình sinh (Transformer + MLP) : 90 triệu tham số
- Codec decoder: 10 triệu tham số
- Codec encoder: 18 triệu tham số (chỉ dùng 1 lần khi mã hóa mẫu giọng nói)
Dữ liệu huấn luyện
- Toàn bộ đều là bộ dữ liệu giọng nói tiếng Anh công khai, tổng cộng 88.000 giờ
- AMI, EARNINGS22, GIGASpeech, SPGISpeech, TED-LIUM, VoxPopuli, LibriHeavy, Emilia
Các đóng góp kỹ thuật chính
Head Batch Multiplier
- Tái sử dụng vector z nhiều lần để giảm nút thắt tính toán của Transformer
- Với mỗi chuỗi đầu vào, z được tính một lần rồi tái sử dụng cho 8 lần tính loss
- Mang lại hiệu quả tăng hiệu suất và ổn định huấn luyện
Gaussian Temperature Sampling
- Áp dụng điều chỉnh nhiệt độ lấy mẫu cả trong không gian liên tục
- Giảm phương sai của nhiễu Gaussian để cải thiện chất lượng
- Cho kết quả tốt ở nhiệt độ 0.7
Latent Classifier-Free Guidance (Latent CFG)
- Áp dụng CFG truyền thống ở mức biến tiềm ẩn (z)
- Kết hợp tuyến tính đầu ra có điều kiện/không điều kiện để nâng cao chất lượng
- Sử dụng α=1.5
- Khái niệm tương tự cũng xuất hiện trong nghiên cứu SoundReactor
Distillation
- Dùng mô hình CFG làm teacher model để chưng cất thành student model gọn nhẹ
- Cố định đầu MLP của teacher model, còn student model học z bằng L2 loss
- Có thể thu gọn từ teacher model 24 lớp → student model 6 lớp
Kết luận
- Pocket TTS là mô hình TTS gọn nhẹ có thể tổng hợp giọng nói chất lượng cao theo thời gian thực ngay trên CPU
- Kết hợp kiến trúc dựa trên không gian tiềm ẩn liên tục, kỹ thuật huấn luyện hiệu quả và tính năng voice cloning
- Được phát hành dưới dạng mã nguồn mở giấy phép MIT, mang lại khả năng tái hiện và mở rộng cho các nhà phát triển và nhà nghiên cứu
4 bình luận
Có vẻ không dễ thấy các mô hình TTS mã nguồn mở có hỗ trợ tiếng Hàn. Trước đây có Kokoro-82M từng được nói là hỗ trợ tiếng Hàn, nhưng tôi nghe nói chất lượng có vẻ không tốt lắm, thoáng tìm thử thì thấy bảo nếu làm bằng GPT-Sovits hoặc dùng thứ như Edge-TTS thì cũng cho ra kết quả khá ổn.
Dạo này đang vibe coding nên nghĩ là nếu ghép với Whisper thì có vẻ sẽ ra được thứ gì đó thú vị, nhưng lại chưa nghĩ ra ý tưởng nào haha
Gần đây Supertonic cũng đã tung ra một model hỗ trợ cả tiếng Hàn, thử tìm xem nhé.
Mình cũng đã thử làm một thư viện kiểu
딸깍용!https://www.npmjs.com/package/easy-supertonic-tts
Hay đấy, nhưng sẽ tốt hơn nếu trong lúc làm có kèm luôn địa chỉ tài nguyên đích nữa. Chứ cứ cài đại thì cũng không được haha
Ý kiến trên Hacker News
Tôi thật sự rất vui khi bài viết của mình nhận được nhiều sự quan tâm như vậy
Tôi là thành viên của một nhóm tại Paris đang phát triển giải pháp giọng nói cấp doanh nghiệp dựa trên nghiên cứu của Kyutai
Nếu bạn cũng đang xây dựng thứ gì đó trong lĩnh vực này, tôi rất muốn chia sẻ về các model và tính năng sắp ra mắt
Hãy liên hệ qua email trong hồ sơ của tôi
Trong lúc đọc một case study dài, tôi nhận ra mình cần một tiện ích mở rộng cho trình duyệt nên đã tự làm giao diện trình duyệt
Thành phẩm là Pocket Reader
Thấy thú vị nên tôi đã lập tức biến nó thành MCP server để Claude thông báo khi hoàn tất công việc
speak_when_done
Tôi cũng từng làm một công cụ tương tự bằng cách chạy lệnh
saynhư một tiến trình nền, nhưng rất khó thiết lập ổn định để luôn dùng được giọng hayCó vẻ như giọng tự nhiên đó đang bị ẩn ở đâu đó
speak-mcp
Giờ tôi cũng sẽ thử server của bạn
Lần này chất lượng code thực sự rất tốt
Thường thì codebase của các model mới đầy rẫy đống phụ thuộc không cần thiết, nhưng lần này xét về kỹ nghệ phần mềm cũng rất xuất sắc
Cảm ơn vì đã chia sẻ! Tôi là fan của Kokoro nên đã tự xây một trợ lý giọng nói chạy cục bộ
dự án ova
Tôi chắc chắn cũng sẽ thử Pocket TTS
Tuy vậy Pocket TTS là dạng đóng nên không thể kiểm tra tính năng nhân bản giọng nói
Không biết nó dựa trên mlx hay Hugging Face transformers
Tôi tự hỏi liệu có thể phân phối dự án này dưới dạng binary tĩnh nhỏ gọn hay không
Hiện tại phần phụ thuộc khá lớn
Tôi thực sự thích nó
Chỉ là nó ghi là giấy phép MIT, nhưng trong README lại có một mục Prohibited Use riêng nên tôi hơi bối rối không biết nó có trở thành phần mềm không tự do hay không
Giống như hình ảnh hay âm thanh, model ML có thể không được xem là phần mềm
Thẻ model trên Hugging Face cũng có cùng điều khoản cấm đó
Vì vậy các mục cấm trong README có thể mâu thuẫn về mặt pháp lý
Tôi đã thử chạy
uvx pocket-tts servetrên M1 MacĐể test, tôi cho nó đọc đoạn đầu tiên của A Tale of Two Cities, nhưng giọng Javert có vấn đề bỏ qua một số câu ở giữa
Ví dụ các cụm như “it was the age of foolishness” bị lược mất
Đây là điểm làm giảm độ tin cậy
Tôi đã đăng issue liên quan tại đây
Trước giờ tôi chưa dùng nhiều model giọng nói, nhưng nhờ Pocket TTS mà tôi biết đến unmute.sh
Nó là mã nguồn mở và có vẻ cũng do cùng công ty làm ra
Những model này có vẻ đủ hữu dụng với chi phí thấp ngay cả trong môi trường homelab
Các model mã nguồn mở đang được nâng mặt bằng chất lượng lên khá đồng đều nên gần như có lựa chọn cho mọi mục đích sử dụng
Có lẽ lĩnh vực duy nhất vẫn còn rào cản gia nhập thực sự là model coding
Cũng thú vị nếu Deepseek 4 có thể đánh bại Claude Sonnet
Tôi đã tích hợp nó vào plugin Codex của mình để đọc to bản tóm tắt sau mỗi lượt, và nó hoạt động tốt đến bất ngờ
Trên MacBook của tôi nó chạy mượt hơn Samantha rất nhiều
agentify-sh/speak