Text-to-Speech
Safetensors
GGUF
Vietnamese
qwen3

Configuration Parsing Warning:Config file tokenizer_config.json cannot be fetched (too big)

🦜 VieNeu-TTS-0.3B

GitHub Model Q8 GGUF Q4 GGUF Discord

Banner

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 dataset. It is optimized for extreme efficiency, delivering 2x faster inference while maintaining high speech quality.

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:

Buy Me a Coffee


🦜 Voice Cloning Inference

Reference Voice (Speaker Example):

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):


πŸ”₯ Quick Start (Web UI)

1. Installation

git clone https://github.com/pnnbao97/VieNeu-TTS.git
cd VieNeu-TTS

# 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

# Install dependencies & Run
uv sync
uv run vieneu-web

2. Demo Video


πŸ“¦ 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
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

docker run --gpus all -p 23333:23333 pnnbao/vieneu-tts:serve --model pnnbao-ump/VieNeu-TTS-0.3B --tunnel

Step 2: Connect from Client

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 PyTorch GPU (LMDeploy) ⭐⭐⭐⭐⭐ Ultra Fast
VieNeu-TTS-0.3B-q8-gguf GGUF Q8 CPU ⭐⭐⭐⭐ Fast
VieNeu-TTS-0.3B-q4-gguf GGUF Q4 CPU / Mobile ⭐⭐⭐ Extreme Speed

πŸ“‘ Citation

@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

Downloads last month
39,490
Safetensors
Model size
0.2B params
Tensor type
BF16
Β·
Inference Providers NEW
This model isn't deployed by any Inference Provider. πŸ™‹ 2 Ask for provider support

Model tree for pnnbao-ump/VieNeu-TTS-0.3B

Adapters
30 models
Finetunes
3 models
Quantizations
4 models

Datasets used to train pnnbao-ump/VieNeu-TTS-0.3B

Spaces using pnnbao-ump/VieNeu-TTS-0.3B 6

Collection including pnnbao-ump/VieNeu-TTS-0.3B