CLI tool
pnnbao97/VieNeu-TTS avatar
pnnbao97/VieNeu-TTS

VieNeu-TTS withholds its best cloning model, so the open repository stops at v3 Turbo

Vietnamese TTS with instant voice cloning • On-device • Real-time CPU inference • 24kHz audio quality • Chuyển văn bản thành giọng nói tiếng Việt • Text to speech tiếng Việt • TTS tiếng Việt

3,331 stars1,022 forksPythonApache-2.0

At a glance

What is it?
The open part is a Vietnamese text to speech engine with instant voice cloning from a short clip, a torch-free CPU path, an OpenAI compatible endpoint and LoRA fine-tuning, licensed Apache-2.0. The version with near-original cloning fidelity is deliberately not here, and the GitHub releases track a separate Windows app rather than the Python package.
Who is it for?
This suits a developer who needs Vietnamese speech locally, on a CPU, without a hosted key, and who is content with v3 Turbo's cloning fidelity. It does not suit anyone who needs the cloning quality the project decided to withhold, and it is not the artefact the desktop app is built on.
Can I use it commercially?
Yes. Apache-2.0 is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 3 days ago.
What is it written in?
Mainly Python, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on November 14, 2026, and from our analysis. They are not legal advice.

From daily snapshots

Star history

  • pnnbao97/VieNeu-TTS3,331 ★ · +1,055
Star history
Repository2026-08-012026-11-14
pnnbao97/VieNeu-TTS2.3k3.3k

1,055 Stars in the last 105 days, measured from the daily GitHub snapshot. Compare with other projects

Editorial analysis

v4 is absent on purpose, and the stated reason is the cloning itself

The first notice in the project is a decision, not a feature list. It says v4 delivers near-original voice cloning fidelity, reproducing a short reference clip with very high speaker similarity, and that because of the strength of that capability and the potential for misuse, v4 is proprietary, will not be open-sourced, and is available only through the VieNeu API at vieneu.io. The repository therefore holds v3 Turbo as the latest open-source version, and says future open-source releases including possible v3.x updates may appear here.

That boundary matters for anyone reading the license. The Apache-2.0 grant covers what is in this repository, which is the v3 Turbo line and earlier artefacts linked from the model pages. Nothing here is a statement about terms for the model you would get from the hosted service, and the notice does not describe the v4 architecture, its training data, or what it costs to run. The only thing the project commits to publicly is that v3 Turbo will remain the newest open version.

The release tags belong to a Windows app while the package is 3.8.3

The version numbers in this repository do not line up. The Python package is `vieneu` at version `3.8.3`, and the project classifiers call it Beta with support for Python 3.10 through 3.13. The GitHub releases are a different artefact entirely: app-v0.18.9, app-v0.18.8, and app-v0.18.7, each named as the VieNeu Desktop App for Windows, published on 2026-09-30, 2026-09-30, and 2026-09-29. Nothing in the three most recent releases corresponds to the package version, and no tag scheme links the two.

So the cadence you see in the releases list is the desktop app shipping several times a day, not the library moving. The library's own version moves on a different track, and the branch was last pushed on 2026-09-30. The README also points Windows users at a standalone installer from vieneu.io and says a macOS installer is coming in a later release, which means the desktop side of the project is distributed as a binary while the library side is distributed as a package. Dubbing, Lecture, Tiktok Reel, and Audiobook are named as app-only features; this repository ships a simplified Gradio demo and the core SDK.

The SDK defaults to v3 Turbo, and the style argument no longer does anything

The SDK surface has one default and one deprecated corner. `vieneu` starts in v3 Turbo at 48 kHz, which is up from 24 kHz in the earlier line, and the mode is written as `Vieneu(mode="v3turbo")`. The minimum install is torch-free: on CPU everything runs on ONNX Runtime and PyTorch is never imported, with the backbone in fp32 by default for fidelity. On a CUDA machine the same call switches to the PyTorch engine automatically, where inference is batched without a code change.

The deprecated corner is the `style` argument, which is ignored, because reading style is said to follow the reference voice everywhere. In its place, three bracketed Vietnamese tokens are documented as experimental emotion and non-verbal cues that you drop straight into the text. Cloning takes a 3 to 8 second clip with automatic reference denoising, and there are 25 built-in preset voices, 10 of them editors' picks, described as stable and needing no reference clip. Batched generation goes up to batch size 32, and a multi-speaker Conversation mode batches the whole script regardless of speaker. The examples directory ships separate entry points for v3 Turbo and for v3 Nano, so more than one generation line is still reachable.

Every speed number names the hardware it was measured on

The performance claims are specific enough to be useful and specific enough to check. The project reports first audio in about 115 ms, 16 concurrent streams under 200 ms on a single RTX 3060 with a ceiling of 32, and RTF of roughly 0.01 to 0.02 when batched on a consumer GPU. On the CPU side it reports about twice real time for a single stream, RTF around 0.5, with a 12th-gen Core i5 named as the reference machine.

Those two paths are not the same code. The CPU route is ONNX Runtime with no PyTorch import; the CUDA route is PyTorch with automatic batching. That is the tradeoff to understand before choosing an install: the fast numbers come from a consumer GPU with batched inference, the CPU numbers come from a single stream, and the streaming figures are quoted for one card. The API shape is meant to hide the difference, with `POST /v1/audio/speech` presented as a drop-in for the OpenAI SDK, Pipecat, and LiveKit, and there is an example client for it under `examples/`. Treat the timings as the project's own figures for named hardware rather than as a property of your machine.

uv sync installs the core only, and the resolver declares three platforms

The build configuration explains why a plain install stays small. `default-groups` is set to an empty list, with a comment saying that uv installs the `dev` group by default and that emptying it makes `uv sync` install only the torch-free core. Development and testing therefore need `uv sync --group dev`, and a full GPU development environment needs `uv sync --group gpu`. The documented GPU install takes a different path again, as an extra:

bash
git clone https://github.com/pnnbao97/VieNeu-TTS.git
cd VieNeu-TTS
bash
uv sync
bash
uv sync --extra cuda

Then the web interface starts with `uv run vieneu-web` and listens on port 7860.

The resolver declares only three environments, Windows on AMD64, Linux on x86_64, and macOS on arm64, so anything else is outside what the project has set up for. It also overrides the NCCL package for Linux and adds an explicit Metal wheel index for llama-cpp alongside the PyTorch cu128 index, with an index strategy of unsafe-best-match. One thing to know before contributing: the comments in the build configuration and in the environment example are written in Vietnamese, so the reasoning behind several defaults is not in English.

The environment example binds the UI to every interface with auth commented out

The shipped `.env.example` shows the deployment surface, including the parts left disabled. It sets `GRADIO_SERVER_NAME=0.0.0.0` with `GRADIO_SHARE=0`, which serves the web UI on every interface without creating a public tunnel. Authentication is present but commented out: `VIENEU_WEB_AUTH` is shown as a username and password pair whose example value is a Vietnamese placeholder meaning change this password, and `VIENEU_API_KEY` is there as the bearer key for the streaming endpoint in `apps/openai_speech.py`.

The third switch is the one to read twice. `VIENEU_TRUST_REMOTE_CODE=1` is commented out with a note that it should be enabled only if you trust the repository entered under Custom Model, because it lets that repository run its own Python code inside your process. That is the correct default, and it is also the switch that turns a convenience feature into arbitrary code execution, so it belongs in a deliberate decision rather than in a copied environment file.

One line is machine specific: `PHONEMIZER_ESPEAK_LIBRARY` points at `/usr/lib/x86_64-linux-gnu/libespeak-ng.so.1`, which does not exist on macOS or on a non x86_64 Linux host. `HF_TOKEN` is also commented, so a gated model page will not resolve without adding it.

make check asks a question, so it cannot run unattended

The Makefile is written for a person at a terminal. `SHELL` is forced to `/bin/bash`, and the prerequisite check detects the operating system from `$OSTYPE`, mapping msys, cygwin and win32 to Windows and matching darwin and linux-gnu prefixes. Inside that target it prompts: `read -p "Install Python 3.12? [y/N]"`. An interactive prompt inside a Make target means the check cannot run in CI unattended, and the target is not even in the `.PHONY` list, which declares `check` while the recipe shown is `check-install-prereqs`.

The help text and the declaration also disagree about what exists. Help advertises eleven commands including `make uv` and `make espeak`, neither of which appears in `.PHONY`, while `.PHONY` lists `demo`, `docker-build-cpu`, and `docker-build-gpu`, which help never mentions.

Alongside that, the root carries `requirements_xpu.txt`, `run_xpu.bat`, and `setup_xpu_uv.bat`, three files for an Intel XPU path that appears nowhere in the install instructions, where the documented choices are CPU, a CUDA extra, and Docker profiles named `api-cpu` and `api-gpu`. The README itself stops partway through a sentence in the CPU section, and the readme used for the package index is a separate file, `README_PYPI.md`, from the one on the repository front page.

Editorial conclusion

This suits a developer who needs Vietnamese speech locally, on a CPU, without a hosted key, and who is content with v3 Turbo's cloning fidelity. It does not suit anyone who needs the cloning quality the project decided to withhold, and it is not the artefact the desktop app is built on. Before you build on it, check three things: which version your installed `vieneu` actually resolves to, since the release tags belong to a Windows app rather than the Python package, whether your machine is one of the three platforms the resolver declares, and whether the web UI you expose has the authentication variables set rather than commented out.

Frequently asked questions

Does VieNeu-TTS open source its best voice cloning model?

No, and it says why. Version 4 is described as delivering near-original cloning fidelity from a short reference clip, and the project states that because of the strength of that capability and the potential for misuse it is proprietary, will not be open-sourced, and is available only through the VieNeu API. Version 3 Turbo remains the latest open-source version in the repository, under Apache-2.0.

What does the vieneu SDK do by default?

It defaults to VieNeu-TTS v3 Turbo at 48 kHz, written as Vieneu(mode="v3turbo"). The minimal install is torch-free, so on CPU inference runs on ONNX Runtime with PyTorch never imported and the backbone in fp32, while on a CUDA machine the same call switches to the PyTorch engine and batches automatically with no code change.

Is voice cloning with VieNeu-TTS legal?

The repository gives no legal guidance, so it is not a source you can lean on. What it does state is that the code and models here are under Apache-2.0, that cloning in v3 Turbo takes a 3 to 8 second reference clip with automatic reference denoising, and that the next version was kept out of open source specifically over cloning strength and potential for misuse. Check the terms of whatever voice you clone and of any service you call.

Which VieNeu-TTS models can run without a GPU?

The torch-free CPU path, which the project says most users want, with the default install because the dependency groups are emptied so a sync pulls only the core. It reports RTF around 0.5, about twice real time for one stream, on a 12th-gen Core i5. The CUDA path is a separate extra, and the examples directory ships separate entry points for v3 Turbo and v3 Nano.

Official sources

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/pnnbao97-vieneu-tts.svg)](https://hysenlabs.com/projects/pnnbao97-vieneu-tts)

Star history chart for your README

markdown
[![Star history](https://hysenlabs.com/chart/pnnbao97-vieneu-tts.svg)](https://hysenlabs.com/projects/pnnbao97-vieneu-tts)

Was this useful?