File size: 9,458 Bytes
e009e21 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 |
---
license: cc-by-nc-4.0
datasets:
- pnnbao-ump/VieNeu-TTS-1000h
- pnnbao-ump/VieNeu-TTS-140h
language:
- vi
pipeline_tag: text-to-speech
---
# 🦜 VieNeu-TTS-0.3B
[](https://github.com/pnnbao97/VieNeu-TTS)
[-yellow)](https://huggingface.co/pnnbao-ump/VieNeu-TTS-0.3B)
[](https://huggingface.co/pnnbao-ump/VieNeu-TTS-0.3B-q8-gguf)
[](https://huggingface.co/pnnbao-ump/VieNeu-TTS-0.3B-q4-gguf)
[](https://discord.gg/yJt8kzjzWZ)

## Overview
**VieNeu-TTS-0.3B** is an ultra-fast, on-device Vietnamese Text-to-Speech (TTS) model with **instant voice cloning**.
Unlike the original 0.5B version, this 0.3B model is **trained from scratch** on the [VieNeu-TTS-1000h](https://huggingface.co/datasets/pnnbao-ump/VieNeu-TTS-1000h) dataset. It is optimized for extreme efficiency, delivering **2x faster inference** while maintaining high speech quality.
> [!TIP]
> **Voice Cloning:** All model variants (including GGUF) support instant voice cloning with just **3-5 seconds** of reference audio.
Tác giả: **Phạm Nguyễn Ngọc Bảo**
## ☕ Support This Project
Training high-quality TTS models requires significant GPU resources. If you find this model useful, please consider supporting the development:
[](https://buymeacoffee.com/pnnbao)
---
## 🦜 Voice Cloning Inference
**Reference Voice (Speaker Example):**
<audio controls src="https://cdn-uploads.huggingface.co/production/uploads/68b923a86c86c127a1975eda/Rpw1V6X1px59SWQKn_W9D.wav"></audio>
**Input Text:**
> Trên bầu trời xanh thẳm, những đám mây trắng lửng lờ trôi như những chiếc thuyền nhỏ đang lướt nhẹ theo dòng gió. Dưới mặt đất, cánh đồng lúa vàng rực trải dài tới tận chân trời, những bông lúa nghiêng mình theo từng làn gió.
**Generated Output (Cloned Voice):**
<audio controls src="https://cdn-uploads.huggingface.co/production/uploads/68b923a86c86c127a1975eda/f40t4ueGqmsGDmNIGcU3J.mpga"></audio>
---
## 🚀 Quick Start (Web UI)
### 1. Requirements (eSpeak NG)
eSpeak NG is **mandatory** for phonemization.
- **Windows:** Download `.msi` from [eSpeak NG Releases](https://github.com/espeak-ng/espeak-ng/releases).
- **macOS:** `brew install espeak`
- **Linux:** `sudo apt install espeak-ng`
### 2. Installation & Run
```bash
git clone https://github.com/pnnbao97/VieNeu-TTS.git
cd VieNeu-TTS
# 1. Install uv (if you haven't)
# Windows: powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
# Linux/macOS: curl -LsSf https://astral.sh/uv/install.sh | sh
# 2. Sync environment
uv sync
# 3. Launch Web UI
uv run gradio_app.py
```
### 3. Demo Video
<video controls src="https://cdn-uploads.huggingface.co/production/uploads/68b923a86c86c127a1975eda/dqb2_NHrMr44s_KzIkVIu.mp4" width="100%"></video>
---
## 📦 Using Python SDK (vieneu)
Install the SDK to integrate VieNeu-TTS-0.3B into your research or applications:
```bash
# Windows (Avoid llama-cpp build errors)
pip install vieneu --extra-index-url https://pnnbao97.github.io/llama-cpp-python-v0.3.16/cpu/
# Linux / MacOS
pip install vieneu
```
### Full Features Guide
```python
from vieneu import Vieneu
import os
# Initialization
tts = Vieneu() # Default: 0.3B-Q4 GGUF for CPU
os.makedirs("outputs", exist_ok=True)
# 1. List preset voices
available_voices = tts.list_preset_voices()
for desc, name in available_voices:
print(f" - {desc} (ID: {name})")
# 2. Use specific voice (dynamically select second voice)
if available_voices:
_, my_voice_id = available_voices[1] if len(available_voices) > 1 else available_voices[0]
voice_data = tts.get_preset_voice(my_voice_id)
audio_spec = tts.infer(text="Chào bạn, tôi đang nói bằng giọng của bác sĩ Tuyên.", voice=voice_data)
tts.save(audio_spec, f"outputs/standard_{my_voice_id}.wav")
print(f"💾 Saved synthesis to: outputs/standard_{my_voice_id}.wav")
# 3. Standard synthesis (uses default voice)
text = "Xin chào, tôi là VieNeu. Tôi có thể giúp bạn đọc sách, làm chatbot thời gian thực, hoặc thậm chí clone giọng nói của bạn."
audio = tts.infer(text=text)
tts.save(audio, "outputs/standard_output.wav")
print("💾 Saved synthesis to: outputs/standard_output.wav")
# 4. Zero-shot voice cloning
if os.path.exists("examples/audio_ref/example_ngoc_huyen.wav"):
cloned_audio = tts.infer(
text="Đây là giọng nói đã được clone thành công từ file mẫu.",
ref_audio="examples/audio_ref/example_ngoc_huyen.wav",
ref_text="Tác phẩm dự thi bảo đảm tính khoa học, tính đảng, tính chiến đấu, tính định hướng."
)
tts.save(cloned_audio, "outputs/standard_cloned_output.wav")
print("💾 Saved cloned voice to: outputs/standard_cloned_output.wav")
# 5. Cleanup
tts.close()
```
### Remote Mode (Ultra-Fast with LMDeploy Server)
For maximum speed, deploy a Docker server first, then connect remotely:
**Step 1: Deploy Docker Server**
```bash
docker run --gpus all -p 23333:23333 pnnbao/vieneu-tts:serve --model pnnbao-ump/VieNeu-TTS-0.3B --tunnel
```
**Step 2: Connect from Client**
```python
from vieneu import Vieneu
import os
# Configuration
REMOTE_API_BASE = 'http://your-server-ip:23333/v1' # Or bore.pub:XXXX
REMOTE_MODEL_ID = "pnnbao-ump/VieNeu-TTS-0.3B"
# Initialization (LIGHTWEIGHT - only loads small codec locally)
tts = Vieneu(mode='remote', api_base=REMOTE_API_BASE, model_name=REMOTE_MODEL_ID)
os.makedirs("outputs", exist_ok=True)
# List remote voices
available_voices = tts.list_preset_voices()
for desc, name in available_voices:
print(f" - {desc} (ID: {name})")
# Use specific voice
if available_voices:
_, my_voice_id = available_voices[1]
voice_data = tts.get_preset_voice(my_voice_id)
audio_spec = tts.infer(text="Chào bạn, tôi đang nói bằng giọng của bác sĩ Tuyên.", voice=voice_data)
tts.save(audio_spec, f"outputs/remote_{my_voice_id}.wav")
print(f"💾 Saved synthesis to: outputs/remote_{my_voice_id}.wav")
# Standard synthesis
text_input = "Chế độ remote giúp tích hợp VieNeu vào ứng dụng Web hoặc App cực nhanh mà không cần GPU tại máy khách."
audio = tts.infer(text=text_input)
tts.save(audio, "outputs/remote_output.wav")
print("💾 Saved remote synthesis to: outputs/remote_output.wav")
# Zero-shot voice cloning (encodes audio locally, sends codes to server)
if os.path.exists("examples/audio_ref/example_ngoc_huyen.wav"):
cloned_audio = tts.infer(
text="Đây là giọng nói được clone và xử lý thông qua VieNeu Server.",
ref_audio="examples/audio_ref/example_ngoc_huyen.wav",
ref_text="Tác phẩm dự thi bảo đảm tính khoa học, tính đảng, tính chiến đấu, tính định hướng."
)
tts.save(cloned_audio, "outputs/remote_cloned_output.wav")
print("💾 Saved remote cloned voice to: outputs/remote_cloned_output.wav")
```
---
## 📋 Reference Voices
| File | Gender | Accent | Description |
|---|---|---|---|
| Bình | Male | North | Male voice, North accent |
| Tuyên | Male | North | Male voice, North accent |
| Nguyên | Male | South | Male voice, South accent |
| Hương | Female | North | Female voice, North accent |
| Ngọc | Female | North | Female voice, North accent |
| Đoan | Female | South | Female voice, South accent |
---
## 🔬 Model Variants
| Model Variant | Format | Optimization | Quality | Speed |
|---------------|--------|--------------|---------|----------|
| [VieNeu-TTS-0.3B](https://huggingface.co/pnnbao-ump/VieNeu-TTS-0.3B) | PyTorch | GPU (LMDeploy) | ⭐⭐⭐⭐⭐ | **Ultra Fast** |
| [VieNeu-TTS-0.3B-q8-gguf](https://huggingface.co/pnnbao-ump/VieNeu-TTS-0.3B-q8-gguf) | GGUF Q8 | CPU | ⭐⭐⭐⭐ | Fast |
| [VieNeu-TTS-0.3B-q4-gguf](https://huggingface.co/pnnbao-ump/VieNeu-TTS-0.3B-q4-gguf) | GGUF Q4 | CPU / Mobile | ⭐⭐⭐ | **Extreme Speed** |
---
## 📑 License
This model is released under the **CC BY-NC 4.0** (Creative Commons Attribution-NonCommercial 4.0 International) license.
- **Experimental Version**: VieNeu-TTS-0.3B is currently in the experimental stage.
- ✅ **Free**: For students, researchers, and non-profit purposes.
- ⚠️ **Commercial/Enterprise**: Use for businesses or commercial products is strictly prohibited without prior authorization. Please contact the author (**Phạm Nguyễn Ngọc Bảo**) for licensing terms (Estimated: **5,000 USD/year** - negotiable).
## 📑 Citation
```bibtex
@misc{vieneutts03b2026,
title = {VieNeu-TTS-0.3B: Ultra-Fast Vietnamese Text-to-Speech trained from scratch},
author = {Pham Nguyen Ngoc Bao},
year = {2026},
publisher = {Hugging Face},
howpublished = {\url{https://huggingface.co/pnnbao-ump/VieNeu-TTS-0.3B}}
}
```
---
**Made with ❤️ for the Vietnamese TTS community** |