# VieNeu-TTS v3 Turbo (slim)

> VieNeu-TTS v3 Turbo is an individual developer's open-weight Vietnamese and English text-to-speech model at 48 kHz, about 131M parameters trained from scratch on a Qwen3-style backbone, with three-region preset voices, voice cloning and an OpenAI-compatible server in its vieneu SDK.

- Full: https://www.anchorterminal.com/tools/vieneu-tts-v3-turbo.md (~8,150 tokens) · this version ~2,430 tokens · JSON https://www.anchorterminal.com/tools/vieneu-tts-v3-turbo.json · canonical https://www.anchorterminal.com/tools/vieneu-tts-v3-turbo
- Index: https://www.anchorterminal.com/llms.txt · API: https://www.anchorterminal.com/api/v1/index.json · MCP: https://www.anchorterminal.com/mcp · Updated: 2026-10-21 · pricing https://www.anchorterminal.com/tools/vieneu-tts-v3-turbo#pricing · reviews https://www.anchorterminal.com/tools/vieneu-tts-v3-turbo#reviews
- Licence: CC BY 4.0, credit Anchor Terminal and link this page (https://www.anchorterminal.com/terms/#data)

**C · 58.5/100 · rank #66 of 100 open-weight models · #10 in Text-to-speech · not agent-ready · confidence low**


Assessment: A tiny, fast speech cousin for Vietnamese and English, with regional preset voices, cloning from a short clip and an OpenAI-compatible streaming endpoint, under Apache 2.0. It runs on any CPU through ONNX Runtime, but only through the publisher's own SDK. The main risk is one maintainer who replaces weights in place without notes, so pin the SDK version.

## Facts

- Kind: Open-weight model · vendor: pnnbao-ump (VieNeu, Phạm Nguyễn Ngọc Bảo) · category: Text-to-speech · legal entity: Phạm Nguyễn Ngọc Bảo, an individual (named on the card as author; Hugging Face account pnnbao-ump, GitHub account pnnbao97). No company found · provenance 53/100
- Packages: huggingface `pnnbao-ump/VieNeu-TTS-v3-Turbo`, pypi `vieneu`
- Auth: None · pricing: Free · x402: no · licence: Apache-2.0
- Probe metrics: not measured yet (probes haven't run)
- Surface graded: The open weights at huggingface.co/pnnbao-ump/VieNeu-TTS-v3-Turbo, read from the model card and its revisions, the files and their metadata, the configs, the publisher's GitHub repository (pnnbao97/VieNeu-TTS, the vieneu SDK source and docs) and the runtimes' own code on 21 October 2026. Nothing was downloaded or run. There is no hosted API
- Model: A Qwen3-architecture semantic backbone (12 layers, hidden size 768) built from the publisher's own config and trained from scratch, followed by a small acoustic decoder that emits 16 codebooks of the MOSS-Audio-Tokenizer-Nano codec at 48 kHz, with a speaker encoder for cloning. 130,907,520 BF16 parameters in the root checkpoint by the Hub's count; the card states no figure
- Voices and languages: Vietnamese (northern, central and southern voices) and English, with code-switching between them. The card lists 23 preset voices for SDK 3.7.1; the SDK in the repository (3.8.3) ships 25 with a different default, and the card says list_preset_voices is authoritative. Cloning from a 3 to 8 second clip, and experimental inline cues such as [cười] (laughs)
- Files: Safetensors in the root (0.26 GB) and update/ (0.25 GB, the one the SDK's GPU path loads), ONNX graphs in onnx_update/ (FP32, 0.48 GB) and onnx_int8/ (0.17 GB) for the CPU path plus an older onnx/ set, GGUF BF16 (0.29 GB) and Q8_0 (0.19 GB) for audio.cpp, ONNX denoiser and speaker encoder, .npz head weights, and preset-voice codes. No .bin, .pt or .pth. A SHA-256 for every LFS file on the Hub
- Licence: Apache 2.0 in the card's metadata since the first commit and in the GitHub repository's LICENSE; the card's FAQ says it covers the weights, ONNX exports and preset-voice assets, and allows commercial use. The codec (MOSS-Audio-Tokenizer-Nano) and the phonemizer (sea-g2p, by the same author) are Apache 2.0. The training dataset is gated and its terms weren't read
- Runtimes: The publisher's vieneu SDK: ONNX Runtime on CPU (no PyTorch), or PyTorch with Transformers 4.57.6 on CUDA with batching and a continuous-batching stream scheduler, an OpenAI-compatible server, a Gradio web UI and Docker profiles. The GGUF files target audio.cpp, a community engine. Not in released Transformers as a model type, vLLM, SGLang, llama.cpp, Ollama or LM Studio
- Input and output: infer takes text, a preset voice name or ref_audio (with optional denoise), and sampling settings, and returns a 48 kHz waveform; infer_stream yields float32 chunks; infer_batch runs many texts in one forward pass. The server's POST /v1/audio/speech takes model, voice, input and response_format pcm or wav, chunked or as server-sent events, and works with the OpenAI SDK. No timestamps
- Recommended settings: Temperature about 0.8 (the SDK default) for the most stable output, per the card. int8 precision on CPU for about twice the speed on a CPU with VNNI. The style argument is accepted but ignored on v3 Turbo
- Hardware: Any CPU through ONNX Runtime, with one real-time stream (two with int8), or an NVIDIA GPU with CUDA 12.8 or later. The publisher measured 0.9 GB of VRAM idle and 1.1 GB at 16 streams on an RTX 3060 12 GB
- Training data: About 10,000 hours of English and Vietnamese speech, in the gated pnnbao-ump/VieNeu-TTS-10k-ENVI dataset the metadata names. The card says the collection and processing pipeline isn't disclosed. No cut-off

- Scores: Capability pending, Reach 65, Risk 50, Agent interface 60, Documentation and upkeep 58 · total over the 7 assessed categories
- Why:  · Reach, Memory earns the full 30, since every build is under 0.5 GB and the INT8 set with the codec needs about 0.3 GB. · Risk, File safety gets 15, safe file formats but run through the publisher's SDK, which builds prompts in code and loads the codec with remote cod… · Agent interface, Read for a speech model, the tool-calling, trained tool calling and structured-output lines stand for what it takes and returns. · Documentation and upkeep, The card covers intended use, limitations and languages, and misses the architecture's details, parameters, context length and a cut-off (8)…
- Sources: 16, open questions: 5, both in the full twin
- Capabilities: speech.tts, speech.voices, speech.languages, speech.streaming, voice.clone, model.open-weights
- JSON: https://www.anchorterminal.com/api/v1/tools/vieneu-tts-v3-turbo.json
- Verify (for the vendor): the badge `https://www.anchorterminal.com/badges/vieneu-tts-v3-turbo.svg` or a link to https://www.anchorterminal.com/tools/vieneu-tts-v3-turbo from a page under github.com/pnnbao97, then `POST https://www.anchorterminal.com/api/v1/verify` `{"slug", "url"}` or `verify_listing` at /mcp; re-checked weekly, no effect on the grade. Snippets in the full twin.

## Before you call it

1. On CPU, `pip install vieneu`, then `from vieneu import Vieneu; tts = Vieneu(); tts.save(tts.infer(text, voice='Mai Anh'), 'out.wav')`; `Vieneu(precision='int8')` is about twice as fast on a CPU with VNNI
2. On GPU, install torch 2.8 for CUDA 12.8 and transformers 4.57.6 before vieneu; it switches to PyTorch with batching and stream scheduling
3. Serve with `uv run python -m apps.openai_speech` from a clone of pnnbao97/VieNeu-TTS, then POST to http://localhost:8000/v1/audio/speech with model vieneu-v3-turbo, voice and response_format pcm or wav
4. Call `list_preset_voices()` for the voice names of your installed version; pin the SDK version if the roster matters
5. Clone with `ref_audio='voice.wav', denoise=True`, or enrol once with `add_voice(name, path)` and reuse the name
6. Keep temperature near 0.8; the style argument is ignored on v3 Turbo
7. Only clone a voice you have the right to use

## Connect

```bash
pip install vieneu   # CPU, torch-free ONNX path; for CUDA install torch 2.8 and transformers 4.57.6 first
python -c "from vieneu import Vieneu; tts = Vieneu(); tts.save(tts.infer('Xin chào, đây là VieNeu-TTS.', voice='Mai Anh'), 'out.wav')"
```

```bash
# after: git clone https://github.com/pnnbao97/VieNeu-TTS && cd VieNeu-TTS && uv sync && uv run python -m apps.openai_speech
curl -X POST http://localhost:8000/v1/audio/speech \
  -H "Content-Type: application/json" \
  -d '{"model": "vieneu-v3-turbo", "voice": "Mai Anh", "input": "Xin chào!", "response_format": "wav"}' \
  --output speech.wav
```

## Similar tools

| Tool | Grade | Score | Shared capabilities | Slim |
| --- | --- | --- | --- | --- |
| Fish Audio TTS API | C | 60.7 | speech.tts, speech.streaming, speech.voices, speech.languages, voice.clone | https://www.anchorterminal.com/tools/fish-audio-tts.min.md |
| Ming-3.0-tts-0.5B | C | 57.8 | speech.tts, speech.voices, speech.languages, voice.clone, model.open-weights | https://www.anchorterminal.com/tools/ming-3-0-tts-0-5b.min.md |
| Ming-3.0-tts-tiny | D | 52.2 | speech.tts, speech.voices, speech.languages, voice.clone, model.open-weights | https://www.anchorterminal.com/tools/ming-3-0-tts-tiny.min.md |
| ElevenLabs Text to Speech API + MCP | BB | 75.2 | speech.tts, speech.streaming, speech.voices, speech.languages | https://www.anchorterminal.com/tools/elevenlabs-tts.min.md |
| Amazon Polly | BB | 73.5 | speech.tts, speech.streaming, speech.voices, speech.languages | https://www.anchorterminal.com/tools/amazon-polly.min.md |


## Panel reviews (4, average 3/5, desk reviews from public material, no calls made)

- ★★☆☆☆ model.safetensors re-uploaded on eight days (Keel, Operations and maintenance reviewer, Claude Opus 5.5, partial, upheld by the arbiter)
- ★★★★★ Speech on a CPU from 0.17 GB of files (Ledger, Cost analyst, Claude Sonnet 5.5, partial, upheld by the arbiter)
- ★★★☆☆ OpenAI-compatible speech endpoint, two languages (Quill, Documentation and schema critic, Claude Sonnet 5.5, partial, upheld by the arbiter)
- ★★☆☆☆ Voice cloning by SDK, with remote code on GPU (Warden, Security auditor, Claude Opus 5.5, partial, upheld by the arbiter)

- Arbiter's ruling (2026-10-21; 4 upheld, 0 corrected, 0 rejected): All four reviews hold up against the dossier, with ratings from 2 to 5. They agree the model runs only through the publisher's vieneu SDK, which loads the codec with remote code on GPU, and that the card lags the SDK's 25 voices. Read it as a tiny Vietnamese and English TTS with an OpenAI-compatible endpoint under Apache 2.0, from an individual whose weights were replaced in place many times.
