📋 Model Description


license: cc-by-nc-4.0 datasets:
  • pnnbao-ump/VieNeu-TTS-1000h
  • pnnbao-ump/VieNeu-TTS-140h
language:
  • vi
base_model:
  • pnnbao-ump/VieNeu-TTS-0.3B
pipeline_tag: text-to-speech tags:
  • realtime
  • tts
  • cpu
  • vietnamese
  • gguf

🦜 VieNeu-TTS-0.3B-Q4-0-GGUF (CPU Optimized)

GitHub</a>
Base Model</a>
Discord</a>

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:

Buy Me a Coffee</a>


🛠️ Requirements (eSpeak NG)

eSpeak NG is mandatory for phonemization.

🚀 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