iamdinhthuan/viterbox-tts

Python

123

13 commits

updated Dec 15, 2025

See the code

README

🎙️ Viterbox

Vietnamese Text-to-Speech với Voice Cloning

Python 3.10+ PyTorch License: CC BY-NC 4.0 Hugging Face

Viterbox là mô hình Text-to-Speech tiếng Việt chất lượng cao, được fine-tune từ Chatterbox trên 3000+ giờ dữ liệu tiếng Việt.

Demo • Cài đặt • Sử dụng • API • Tham số


🌟 Điểm nổi bật

Tính năngMô tả
🇻🇳 Tiếng Việt tự nhiênPhát âm chuẩn, ngữ điệu tự nhiên, hỗ trợ đầy đủ dấu thanh
🎯 Zero-shot Voice CloningClone 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 nhanhTối ưu cho GPU với mixed precision (FP16)
🎨 Giao diện đẹpWeb UI với Gradio, dễ sử dụng
📝 Xử lý văn bản dàiTự độ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:

DatasetMô tảThời lượng
ViVoiceDữ liệu giọng đọc đa dạng~1000h
PhoAudiobookSách nói tiếng Việt~1000h
Dolly-AudioDữ 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

# 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

pip install -e .

🚀 Sử dụng

1. Giao diện Web (Gradio)

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

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

# 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
textVăn bản cần đọcstring(bắt buộc)
languageMã ngôn ngữ"vi", "en""vi"
audio_promptAudio mẫu cho voice cloningpath/tensorNone
exaggerationMức độ biểu cảm0.0 - 2.00.5
cfg_weightĐộ bám sát giọng mẫu0.0 - 1.00.5
temperatureĐộ ngẫu nhiên/sáng tạo0.1 - 1.00.8
top_pTop-p sampling0.0 - 1.00.9
repetition_penaltyPhạt lặp từ1.0 - 2.01.2
sentence_pause_msThời gian ngắt giữa câu0 - 2000500
crossfade_msThời gian crossfade0 - 10050

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

FileMô tảKích thước
t3_ml24ls_v2.safetensorsT3 model (fine-tuned)~2GB
s3gen.ptS3Gen vocoder~1GB
ve.ptVoice Encoder~20MB
tokenizer_vi_expanded.jsonTokenizer với vocab tiếng Việt~50KB
conds.ptDefault voice conditioning~1MB

📝 Ví dụ

Đọc văn bản dài

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

# 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


📄 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


iamdinhthuan/viterbox-tts

Python

123

13 commits

updated Dec 15, 2025

See the code

README

🎙️ Viterbox

Vietnamese Text-to-Speech với Voice Cloning

Python 3.10+ PyTorch License: CC BY-NC 4.0 Hugging Face

Viterbox là mô hình Text-to-Speech tiếng Việt chất lượng cao, được fine-tune từ Chatterbox trên 3000+ giờ dữ liệu tiếng Việt.

Demo • Cài đặt • Sử dụng • API • Tham số


🌟 Điểm nổi bật

Tính năngMô tả
🇻🇳 Tiếng Việt tự nhiênPhát âm chuẩn, ngữ điệu tự nhiên, hỗ trợ đầy đủ dấu thanh
🎯 Zero-shot Voice CloningClone 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 nhanhTối ưu cho GPU với mixed precision (FP16)
🎨 Giao diện đẹpWeb UI với Gradio, dễ sử dụng
📝 Xử lý văn bản dàiTự độ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:

DatasetMô tảThời lượng
ViVoiceDữ liệu giọng đọc đa dạng~1000h
PhoAudiobookSách nói tiếng Việt~1000h
Dolly-AudioDữ 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

# 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

pip install -e .

🚀 Sử dụng

1. Giao diện Web (Gradio)

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

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

# 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
textVăn bản cần đọcstring(bắt buộc)
languageMã ngôn ngữ"vi", "en""vi"
audio_promptAudio mẫu cho voice cloningpath/tensorNone
exaggerationMức độ biểu cảm0.0 - 2.00.5
cfg_weightĐộ bám sát giọng mẫu0.0 - 1.00.5
temperatureĐộ ngẫu nhiên/sáng tạo0.1 - 1.00.8
top_pTop-p sampling0.0 - 1.00.9
repetition_penaltyPhạt lặp từ1.0 - 2.01.2
sentence_pause_msThời gian ngắt giữa câu0 - 2000500
crossfade_msThời gian crossfade0 - 10050

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

FileMô tảKích thước
t3_ml24ls_v2.safetensorsT3 model (fine-tuned)~2GB
s3gen.ptS3Gen vocoder~1GB
ve.ptVoice Encoder~20MB
tokenizer_vi_expanded.jsonTokenizer với vocab tiếng Việt~50KB
conds.ptDefault voice conditioning~1MB

📝 Ví dụ

Đọc văn bản dài

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

# 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


📄 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


Languages

Python

100.0%