📋 Model Description
license: cc-by-nc-4.0 datasets:
- pnnbao-ump/VieNeu-TTS-1000h
- pnnbao-ump/VieNeu-TTS-140h
- vi
- pnnbao-ump/VieNeu-TTS-0.3B
- realtime
- tts
- cpu
- vietnamese
- gguf
🦜 VieNeu-TTS-0.3B-Q4-0-GGUF (CPU Optimized)
VieNeu-TTS-0.3B-Q4-0-GGUF is a Q40 quantized version of VieNeu-TTS-0.3B. This model is specifically optimized to run directly on the CPU, providing extremely fast speech synthesis without the need for a dedicated GPU.
Author: 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:
🛠️ Requirements (eSpeak NG)
eSpeak NG is mandatory for phonemization.- Windows: Download
.msifrom eSpeak NG Releases. - macOS:
brew install espeak - Linux:
sudo apt install espeak-ng
🚀 How to Use
Use the source code from GitHub for the best experience with full text preprocessing support:
# 1. Clone repository
git clone https://github.com/pnnbao97/VieNeu-TTS.git
cd VieNeu-TTS
2. Sync environment (requires uv)
uv sync
3. Launch Web UI
uv run gradio_app.py
In the UI, select Backbone: VieNeu-TTS-0.3B-q4-gguf and Device: CPU.
📦 Using Python SDK (vieneu)
Install the SDK to integrate VieNeu-TTS-0.3B into your research or applications:
# 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
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
availablevoices = tts.listpreset_voices()
for desc, name in available_voices:
print(f" - {desc} (ID: {name})")
2. Use specific voice (dynamically select second voice)
if available_voices:
, myvoiceid = availablevoices[1] if len(availablevoices) > 1 else availablevoices[0]
voicedata = tts.getpresetvoice(myvoice_id)
audiospec = tts.infer(text="Chào bạn, tôi đang nói bằng giọng của bác sĩ Tuyên.", voice=voicedata)
tts.save(audiospec, f"outputs/standard{myvoiceid}.wav")
print(f"💾 Saved synthesis to: outputs/standard{myvoice_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/audioref/examplengoc_huyen.wav"):
cloned_audio = tts.infer(
text="Đây là giọng nói đã được clone thành công từ file mẫu.",
refaudio="examples/audioref/examplengochuyen.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(clonedaudio, "outputs/standardcloned_output.wav")
print("💾 Saved cloned voice to: outputs/standardclonedoutput.wav")
5. Cleanup
tts.close()
📊 Technical Specifications
- Format: GGUF (Q4_0)
- Size: ~200 MB
- Standard Devices: Office laptops, Mini PCs, and computers without GPUs.
- Performance: Achieves real-time speed even on standard consumer CPUs.
⚠️ Licensing & Copyright
This model is released under the CC BY-NC 4.0 license.- ✅ Free: For students, researchers, and non-profit purposes.
- ⚠️ Commercial/Enterprise: Use for businesses or commercial products is strictly prohibited without prior authorization.
- Commercial Licensing: Please contact the author (Phạm Nguyễn Ngọc Bảo) for licensing terms (Estimated: 5,000 USD/year - negotiable).
📑 Citation
@misc{vieneutts03bgguf2026,
title = {VieNeu-TTS-0.3B-GGUF: CPU-Optimized Vietnamese Text-to-Speech},
author = {Pham Nguyen Ngoc Bao},
year = {2026},
publisher = {Hugging Face},
howpublished = {\url{https://huggingface.co/pnnbao-ump/VieNeu-TTS-0.3B-q4-gguf}}
}
Made with ❤️ for the Vietnamese TTS community
📂 GGUF File List
| 📁 Filename | 📦 Size | ⚡ Download |
|---|---|---|
|
VieNeu-TTS-0_3B-Q4_0.gguf
Recommended
LFS
Q4
|
192.7 MB | Download |