SAVRN
Search Contact SAVRN

Open-weight model · Text to speech

VieNeu-TTS-v2

by Pham Nguyen Ngoc Bao pnnbao-ump/VieNeu-TTS-v2

VieNeu-TTS-v2 is the next generation of Vietnamese TTS, designed for Natural Communication, Podcasts, and Bilingual (En-Vi) Code-switching.

Parameters294M
Context4,096
Weights776.4 MB
Licenseapache-2.0
AccessOpen weights
Monthly Downloads72.1k

Runs On

What it takes to serve VieNeu-TTS-v2 (294M parameters): the memory its weights need at each precision, and the cheapest way to rent enough data-center GPUs to hold them.

PrecisionWeightsMemory neededCheapest setupPer hourAlso fits
16-bit 0.6 GB 0.7 GB 1x MI300X (192 GB)
Vultr
$1.85 1x H100 $1.99 · 1x MI325X $2.00
8-bit 0.3 GB 0.4 GB 1x MI300X (192 GB)
Vultr
$1.85 1x H100 $1.99 · 1x MI325X $2.00
4-bit 0.1 GB 0.2 GB 1x MI300X (192 GB)
Vultr
$1.85 1x H100 $1.99 · 1x MI325X $2.00

Memory is the weights at that precision plus 20% for the runtime and a short context; a long context needs more. Prices are the lowest on-demand hourly rates in the SAVRN Index, read Sep 18, 2026.

Model Card

By Pham Nguyen Ngoc Bao, published under apache-2.0, revision b62b1cbddec6.

VieNeu-TTS-v2 is the next generation of Vietnamese TTS, designed for Natural Communication, Podcasts, and Bilingual (En-Vi) Code-switching. This project features the flagship VieNeu-TTS-v2 architecture: Tác giả: Phạm Nguyễn Ngọc Bảo Training high-quality TTS models requires significant GPU resources. If you find this model useful, please consider supporting the development: Install the SDK to integrate VieNeu-TTS-0.3B into your research or applications: Deploy VieNeu-TTS as a high-performance API Server (powered by LMDeploy) with a single command. Start the Server with a Public Tunnel (No port forwarding needed): Once the server is running, you can connect from anywhere (Colab, Web Apps…

Read Pham Nguyen Ngoc Bao's full model card

VieNeu-TTS

Overview

VieNeu-TTS-v2 is the next generation of Vietnamese TTS, designed for Natural Communication, Podcasts, and Bilingual (En-Vi) Code-switching.

[!IMPORTANT] What's new in V2: - 10,000+ Hours Data: Trained on a massive bilingual dataset for unparalleled naturalness. - Multi-Speaker Conversation: Support for podcast-style scripts with distinct voices and emotional nuances. - Seamless Code-switching: High-quality English integration within Vietnamese sentences. - Instant Voice Cloning: Still supports cloning with just 3-5 seconds of audio.

This project features the flagship VieNeu-TTS-v2 architecture: - VieNeu-TTS-v2 (0.3B): Optimized for high-fidelity bilingual speech and long-form content. - VieNeu-TTS-v2-Turbo: Optimized for ultra-low latency and CPU deployment using GGUF.

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:


Quick Start (Web UI)

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 --group gpu
uv run vieneu-web

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

# Initialize in Standard mode (Default - Highest quality)
tts = Vieneu(emotion="natural") # emotion="natural" (giọng tự nhiên - mặc định) hoặc "storytelling" (giọng kể chuyện)

# 1. Simple synthesis (uses default Northern Female voice 'Trúc Ly')
text = "Chào bạn. Tôi là VieNeu-TTS, tôi có thể giúp bạn đọc sách, làm chatbot thời gian thực, thậm chí clone giọng nói của bạn."
audio = tts.infer(text=text)

# Save to file
tts.save(audio, "output_Trúc Ly.wav")
print(" Saved to output_Trúc Ly.wav")

# 2. Using a specific Preset Voice
voices = tts.list_preset_voices()
for desc, voice_id in voices:
print(f"Voice: {desc} (ID: {voice_id})")

my_voice_id = voices[1][1] if len(voices) > 1 else voices[0][1] # Giọng Phạm Tuyên
voice_data = tts.get_preset_voice(my_voice_id)

audio_custom = tts.infer(text="Tôi đang nói bằng giọng của Bác sĩ Tuyên.", voice=voice_data)

# 3. Save to file
tts.save(audio_custom, "output_Phạm Tuyên.wav")
print(" Saved to output_Phạm Tuyên.wav")

Remote Mode (Ultra-Fast with LMDeploy Server)

Deploy VieNeu-TTS as a high-performance API Server (powered by LMDeploy) with a single command.

1. Run with Docker (Recommended)

Requirement: NVIDIA Container Toolkit is required for GPU support.

Start the Server with a Public Tunnel (No port forwarding needed):

docker run --gpus all -p 23333:23333 -v huggingface_cache:/root/.cache/huggingface pnnbao/vieneu-tts:latest --tunnel
  • Default: The server loads the VieNeu-TTS-v2 model for maximum quality.
  • Tunneling: The Docker image includes a built-in bore tunnel. Check the container logs to find your public address (e.g., bore.pub:31631).

2. Using the SDK (Remote Mode)

Once the server is running, you can connect from anywhere (Colab, Web Apps, etc.) without loading heavy models locally.

Installation:

pip install "vieneu[gpu]"

Usage:

from vieneu import Vieneu
import os

# Configuration
REMOTE_API_BASE = 'http://your-server-ip:23333/v1' # Or bore tunnel URL
REMOTE_MODEL_ID = "pnnbao-ump/VieNeu-TTS-v2"

# Initialization (LIGHTWEIGHT - only loads small codec locally)
# Default emotion is "natural" (conversational) - set emotion="storytelling" for storytelling mode
tts = Vieneu(mode='remote', api_base=REMOTE_API_BASE, model_name=REMOTE_MODEL_ID, emotion="natural")
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 (dynamically select second 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 (uses default voice)
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 Format Device Quality Features
VieNeu-TTS-v2 PyTorch GPU/CPU Podcast, En-Vi CS
VieNeu-TTS-v2 (GGUF) GGUF Q4 CPU Fastest CPU, Podcast
VieNeu-TTS-v1 PyTorch GPU Stable (Vi only)
VieNeu-TTS-0.3B PyTorch GPU/CPU Legacy Ultra-Fast

Citation

@misc{vieneutts2026,
  title        = {VieNeu-TTS-v2: Vietnamese Text-to-Speech with Instant Voice Cloning},
  author       = {Pham Nguyen Ngoc Bao},
  year         = {2026},
  publisher    = {Hugging Face},
  howpublished = {\url{https://huggingface.co/pnnbao-ump/VieNeu-TTS}}
}

Made with for the Vietnamese TTS community

Configuration

Architecture
Qwen3ForCausalLM
Context length (tokens)
4,096
Layers
22
Hidden size
768
Feed-forward size
4,096
Attention heads
12
Key/value heads
4
Head dimension
64
Vocabulary size
66,938
RoPE base
1,000,000
Model type
qwen3

Identity and Version

Repository
pnnbao-ump/VieNeu-TTS-v2
Publisher
Pham Nguyen Ngoc Bao
Task
Text to speech
Modality
Audio
Library
Not stated by the source
Parameters
294M parameters
Languages
vi, en
Revision
b62b1cbddec67cb1d26ac602965d39f0a7faddf2
First published
2026-05-06
Last updated
2026-05-09

Files and Weights

13 files, 803.2 MB in total. The weights are 2 files totalling 776.4 MB in gguf, safetensors.

Weights2 files · 776.4 MB
Configuration5 files · 1.9 MB
Tokenizer4 files · 24.9 MB
Documentation1 file · 8.1 KB
Repository1 file · 1.7 KB
Every file
FileTypeSizeSHA-256
VieNeu-TTS-v2-Q4-K-M.ggufWeights189.1 MB fd61a86f211d
model.safetensorsWeights587.4 MB f022873124b1
added_tokens.jsonConfiguration1.9 MB
config.jsonConfiguration1.2 KB
generation_config.jsonConfiguration169 B
special_tokens_map.jsonConfiguration441 B
voices.jsonConfiguration21.4 KB
README.mdDocumentation8.1 KB
.gitattributesRepository1.7 KB
merges.txtTokenizer758 B
tokenizer.jsonTokenizer12.8 MB 3cab2ec31f38
tokenizer_config.jsonTokenizer12.1 MB 24a73046d7c6
vocab.jsonTokenizer3.4 KB

License and Download

License
apache-2.0
Access
Open weights, no gate
Download size
776.4 MB
Download from Pham Nguyen Ngoc Bao

Released by Pham Nguyen Ngoc Bao through its official repository on Hugging Face. Read the license.

Built From

  • Trained on (disclosed) pnnbao-ump/VieNeu-TTS-10k-ENVI

Memory Requirements

PrecisionWeights in memory
As published776.4 MB
16-bit0.6 GB
8-bit0.3 GB
4-bit0.1 GB

Weights only, from the published parameter count; the key-value cache and runtime add to this.

Questions About VieNeu-TTS-v2

How much GPU memory does VieNeu-TTS-v2 need?

About 0.7 GB at 16-bit and 0.2 GB at 4-bit: the weights (294M parameters) plus a working margin. A long context needs more.

What is the cheapest GPU to run VieNeu-TTS-v2 on?

At 16-bit, 1x MI300X from $1.85 an hour; at 4-bit, 1x MI300X from $1.85 an hour, at the lowest on-demand prices the SAVRN Index lists.

Can I use VieNeu-TTS-v2 commercially?

Yes. VieNeu-TTS-v2 is released under Apache License 2.0. The Apache License 2.0 is a permissive open-source license. It permits commercial use, modification and redistribution. It requires keeping the license and copyright notices and any NOTICE file, stating significant changes, and it includes an express patent grant from contributors.

What is VieNeu-TTS-v2's context length?

4,096 tokens, from the maximum position embeddings in its published configuration.

Similar Models

Model · Text to speech

VieNeu-TTS-v3-Turbo

Pham Nguyen Ngoc Bao

VieNeu-TTS v3 Turbo is the next generation of Vietnamese TTS — 48 kHz high-fidelity speech, 23 built-in preset voices across three regions (North / Central / South), instant voice cloning, real-time streaming with an OpenAI-compatible API (16 concurrent streams on one RTX 3060), inline emotion cues, and seamless bilingual (En–Vi) code-switching. The reference implementation is the vieneu Python SDK (v3.7.1). Its minimal install is torch-free: on CPU everything runs on ONNX Runtime (PyTorch is never imported), and on a CUDA machine it auto-switches to the PyTorch engine with automatic batching and a continuous-batching stream scheduler — same API, no code change. The VieNeu-TTS v3 Turbo…

Open weights apache-2.0 131M parameters 1,024 tokens

Model · Text to speech

Soprano-1.1-80M

Eugene Kwek

2026.01.14 - Soprano-1.1-80M released! 95% fewer hallucinations and a 63% preference rate over Soprano-80M. 2026.01.13 - Soprano-Factory released! You can now train/fine-tune your own Soprano models. 2025.12.22 - Soprano-80M released! Code | Demo Soprano is an ultra‑lightweight, on-device text‑to‑speech (TTS) model designed for expressive, high‑fidelity speech synthesis at unprecedented speed. Soprano was designed with the following features: - Up to 2000x real-time generation on GPU and 20x real-time on CPU - Lossless streaming with one plus one, etc) If Soprano produces unsatisfactory results, you can easily regenerate it for a new, potentially better generation. You may also change the…

Open weights apache-2.0 80M parameters 1,024 tokens transformers

Model · Text to speech

mms-tts-hin

AI at Meta

mms - vits pipelinetag: text-to-speech This repository contains the Hindi (hin) language text-to-speech (TTS) model checkpoint. This model is part of Facebook's Massively Multilingual Speech project, aiming to provide speech technology across a diverse range of languages. You can find more details about the supported languages and their ISO 639-3 codes in the MMS Language Coverage Overview, and see all MMS-TTS checkpoints on the Hugging Face Hub: facebook/mms-tts. MMS-TTS is available in the Transformers library from version 4.33 onwards. VITS (Variational Inference with adversarial learning for end-to-end Text-to-Speech) is an end-to-end speech synthesis model that predicts a speech…

Open weights cc-by-nc-4.0 36M parameters transformers

Model · Text to speech

mms-tts-eng

AI at Meta

mms - vits pipelinetag: text-to-speech This repository contains the English (eng) language text-to-speech (TTS) model checkpoint. This model is part of Facebook's Massively Multilingual Speech project, aiming to provide speech technology across a diverse range of languages. You can find more details about the supported languages and their ISO 639-3 codes in the MMS Language Coverage Overview, and see all MMS-TTS checkpoints on the Hugging Face Hub: facebook/mms-tts. MMS-TTS is available in the Transformers library from version 4.33 onwards. VITS (Variational Inference with adversarial learning for end-to-end Text-to-Speech) is an end-to-end speech synthesis model that predicts a speech…

Open weights cc-by-nc-4.0 36M parameters transformers

Model · Text to speech

mms-tts-bam

AI at Meta

mms - vits pipelinetag: text-to-speech This repository contains the Bamanankan (bam) language text-to-speech (TTS) model checkpoint. This model is part of Facebook's Massively Multilingual Speech project, aiming to provide speech technology across a diverse range of languages. You can find more details about the supported languages and their ISO 639-3 codes in the MMS Language Coverage Overview, and see all MMS-TTS checkpoints on the Hugging Face Hub: facebook/mms-tts. MMS-TTS is available in the Transformers library from version 4.33 onwards. VITS (Variational Inference with adversarial learning for end-to-end Text-to-Speech) is an end-to-end speech synthesis model that predicts a speech…

Open weights cc-by-nc-4.0 36M parameters transformers

Model · Text to speech

gepard-1.0

NineNineSix

GEnerative, Prosody-aware, Autoregressive text-to-speech model for Realtime Dialogue Gepard is a text-to-speech model built for real-time conversation. It starts speaking the moment text begins arriving, generating audio piece by piece instead of waiting for a full sentence — so it feels like a live voice, not a recording. It's a single language model that learned text and speech together, so the output carries natural rhythm and timing rather than the flat, stitched tone of older pipelines. The name evokes "Gepard"(/geh-PART/), German for cheetah — a nod to the model's low-latency, high-throughput streaming. - One clean pass per frame — the whole audio frame (32 orthogonal FSQ channels) is…

Open weights apache-2.0 556M parameters 262,144 tokens transformers