---
title: Viterbox TTS
emoji: 🎙️
colorFrom: indigo
colorTo: gray
sdk: gradio
sdk_version: 5.44.1
python_version: "3.10"
app_file: app.py
pinned: false
license: cc-by-nc-4.0
short_description: Vietnamese Text-to-Speech with Voice Cloning
---
# 🎙️ Viterbox
### Vietnamese Text-to-Speech với Voice Cloning
[](https://www.python.org/downloads/)
[](https://pytorch.org/)
[](https://creativecommons.org/licenses/by-nc/4.0/)
[](https://huggingface.co/dolly-vn/viterbox)
**Viterbox** là mô hình Text-to-Speech tiếng Việt chất lượng cao, được fine-tune từ [Chatterbox](https://github.com/resemble-ai/chatterbox) trên **3000+ giờ** dữ liệu tiếng Việt.
[Demo](#-demo) • [Cài đặt](#-cài-đặt) • [Sử dụng](#-sử-dụng) • [API](#-python-api) • [Tham số](#️-tham-số)
---
## 🌟 Điểm nổi bật
| Tính năng | Mô tả |
|-----------|-------|
| 🇻🇳 **Tiếng Việt tự nhiên** | Phát âm chuẩn, ngữ điệu tự nhiên, hỗ trợ đầy đủ dấu thanh |
| 🎯 **Zero-shot Voice Cloning** | Clone giọng nói chỉ với 3-10 giây audio mẫu |
| 🌍 **Đa ngôn ngữ** | Hỗ trợ tiếng Việt và 23 ngôn ngữ khác từ Chatterbox |
| ⚡ **Inference nhanh** | Tối ưu cho GPU với mixed precision (FP16) |
| 🎨 **Giao diện đẹp** | Web UI với Gradio, dễ sử dụng |
| 📝 **Xử lý văn bản dài** | Tự động chia câu, ghép audio với crossfade |
---
## 📊 Thông tin Model
### Kiến trúc
Viterbox được xây dựng trên kiến trúc **Chatterbox** của Resemble AI:
- **T3 (Text-to-Token)**: Transformer 520M tham số, chuyển văn bản thành speech tokens
- **S3Gen (Token-to-Speech)**: Flow-matching vocoder, chuyển tokens thành waveform
- **Voice Encoder**: Trích xuất speaker embedding từ audio mẫu
### Dữ liệu huấn luyện
Model được fine-tune trên **3000+ giờ** dữ liệu tiếng Việt chất lượng cao:
| Dataset | Mô tả | Thời lượng |
|---------|-------|------------|
| **ViVoice** | Dữ liệu giọng đọc đa dạng | ~1000h |
| **PhoAudiobook** | Sách nói tiếng Việt | ~1000h |
| **Dolly-Audio** | Dữ liệu nội bộ, đa giọng | ~1000h |
### Base Model
- **Chatterbox Multilingual**: Pretrained trên 23 ngôn ngữ
- **Vocabulary**: Mở rộng thêm 1845 tokens cho tiếng Việt (tổng 2549 tokens)
---
## 📦 Cài đặt
### Yêu cầu hệ thống
- **Python**: 3.10+
- **CUDA**: 11.8+ (khuyến nghị)
- **RAM**: 8GB+
- **VRAM**: 6GB+ (GPU)
### Cài đặt từ source
```bash
# Clone repo
git clone https://github.com/iamdinhthuan/viterbox-tts.git
cd viterbox
# Tạo virtual environment (khuyến nghị)
python -m venv venv
source venv/bin/activate # Linux/Mac
# hoặc: venv\Scripts\activate # Windows
# Cài đặt dependencies
pip install -r requirements.txt
```
### Cài đặt với pip
```bash
pip install -e .
```
---
## 🚀 Sử dụng
### 1. Giao diện Web (Gradio)
```bash
python app.py
```
Mở trình duyệt tại `http://localhost:7860`
📸 Screenshot
Giao diện web cho phép:
- Nhập văn bản cần đọc
- Chọn ngôn ngữ (Tiếng Việt / English)
- Upload hoặc chọn giọng mẫu
- Điều chỉnh các tham số
- Nghe và tải audio
### 2. Python API
```python
from viterbox import Viterbox
# Load model (tự động download từ HuggingFace)
tts = Viterbox.from_pretrained("cuda")
# Tạo audio với giọng mặc định
audio = tts.generate("Xin chào, tôi là Viterbox!")
# Tạo audio với voice cloning
audio = tts.generate(
text="Xin chào, tôi là Viterbox!",
language="vi",
audio_prompt="path/to/reference.wav",
exaggeration=0.5,
cfg_weight=0.5,
temperature=0.8,
sentence_pause_ms=500,
)
# Lưu file
tts.save_audio(audio, "output.wav")
```
### 3. Command Line
```bash
# Tạo audio đơn giản
python inference.py --text "Xin chào ạ, em là trợ lý ảo của bạn, em có thể giúp gì cho anh ạ?" --output output.wav
# Với voice cloning và các tham số
python inference.py \
--text "Việt Nam là một đất nước xinh đẹp." \
--lang vi \
--ref reference.wav \
--exaggeration 0.5 \
--sentence-pause 0.5 \
--output output.wav
```
---
## 🎛️ Tham số
| Tham số | Mô tả | Giá trị | Mặc định |
|---------|-------|---------|----------|
| `text` | Văn bản cần đọc | string | (bắt buộc) |
| `language` | Mã ngôn ngữ | `"vi"`, `"en"` | `"vi"` |
| `audio_prompt` | Audio mẫu cho voice cloning | path/tensor | `None` |
| `exaggeration` | Mức độ biểu cảm | 0.0 - 2.0 | 0.5 |
| `cfg_weight` | Độ bám sát giọng mẫu | 0.0 - 1.0 | 0.5 |
| `temperature` | Độ ngẫu nhiên/sáng tạo | 0.1 - 1.0 | 0.8 |
| `top_p` | Top-p sampling | 0.0 - 1.0 | 0.9 |
| `repetition_penalty` | Phạt lặp từ | 1.0 - 2.0 | 1.2 |
| `sentence_pause_ms` | Thời gian ngắt giữa câu | 0 - 2000 | 500 |
| `crossfade_ms` | Thời gian crossfade | 0 - 100 | 50 |
### Giải thích tham số
- **exaggeration**: Tăng để giọng biểu cảm hơn, giảm để giọng trầm tĩnh hơn
- **cfg_weight**: Tăng để giọng giống mẫu hơn, giảm để tự nhiên hơn
- **temperature**: Tăng để giọng đa dạng hơn, giảm để ổn định hơn
- **sentence_pause_ms**: Thời gian nghỉ giữa các câu (hữu ích cho văn bản dài)
---
## 📁 Cấu trúc dự án
```
viterbox/
├── app.py # Gradio Web UI
├── inference.py # CLI inference script
├── requirements.txt # Dependencies
├── pyproject.toml # Package config
├── README.md
├── wavs/ # Thư mục chứa giọng mẫu
│ └── *.wav
└── viterbox/ # Core library
├── __init__.py
├── tts.py # Main Viterbox class
└── models/ # Model components
├── t3/ # T3 Text-to-Token model
├── s3gen/ # S3Gen vocoder
├── s3tokenizer/ # Speech tokenizer
├── voice_encoder/ # Speaker encoder
└── tokenizers/ # Text tokenizer
```
---
## 🔧 Model Files
Model được host trên HuggingFace Hub: [`dolly-vn/viterbox`](https://huggingface.co/dolly-vn/viterbox)
| File | Mô tả | Kích thước |
|------|-------|------------|
| `t3_ml24ls_v2.safetensors` | T3 model (fine-tuned) | ~2GB |
| `s3gen.pt` | S3Gen vocoder | ~1GB |
| `ve.pt` | Voice Encoder | ~20MB |
| `tokenizer_vi_expanded.json` | Tokenizer với vocab tiếng Việt | ~50KB |
| `conds.pt` | Default voice conditioning | ~1MB |
---
## 📝 Ví dụ
### Đọc văn bản dài
```python
text = """
Việt Nam là một quốc gia nằm ở phía đông bán đảo Đông Dương.
Đất nước có hình chữ S với chiều dài hơn 1600 km.
Thủ đô Hà Nội là trung tâm chính trị và văn hóa của cả nước.
"""
audio = tts.generate(
text=text,
language="vi",
sentence_pause_ms=600, # Nghỉ 0.6s giữa các câu
)
tts.save_audio(audio, "vietnam.wav")
```
### Voice cloning
```python
# Clone giọng từ file WAV (3-10 giây)
audio = tts.generate(
text="Xin chào, tôi có thể nói bằng giọng của bạn!",
audio_prompt="my_voice.wav",
exaggeration=0.3, # Giọng tự nhiên
cfg_weight=0.7, # Bám sát giọng mẫu
)
```
---
## ⚠️ Lưu ý
- **Audio mẫu**: Nên sử dụng audio sạch, không nhiễu, 3-10 giây
- **VRAM**: Model cần ~6GB VRAM, nếu không đủ có thể dùng CPU (chậm hơn)
- **Văn bản**: Hỗ trợ tốt nhất với văn bản có dấu đầy đủ
---
## 🙏 Credits
- **Base Model**: [Chatterbox](https://github.com/resemble-ai/chatterbox) by Resemble AI
- **Datasets**: ViVoice, PhoAudiobook, Dolly-Audio
- **Fine-tuning**: [Dolly VN](https://github.com/dolly-vn) - Speech Team @ [ContextBoxAI](https://contextbox.ai)
---
## 📄 License
**CC BY-NC 4.0** (Creative Commons Attribution-NonCommercial 4.0)
- ✅ Được sử dụng cho mục đích **phi thương mại**
- ✅ Được chia sẻ, sửa đổi với ghi nguồn
- ❌ **KHÔNG** được sử dụng cho mục đích thương mại
Liên hệ thương mại: [contextbox.ai](https://contextbox.ai)
---
**Made with ❤️ by [Dolly VN](https://github.com/dolly-vn) @ [ContextBoxAI](https://contextbox.ai)**
[⬆ Về đầu trang](#️-viterbox)