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

VieNeu-TTS v3 Turbo: Vietnamese voice cloning that runs on a laptop CPU

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

2,573 stars777 forksPythonApache-2.0

At a glance

What is it?
A look at the Vietnamese TTS project that now ships a 48 kHz, torch-free ONNX path for real-time CPU inference, and what that means for developers who need offline synthesis with instant voice cloning.
Who is it for?
Adopt VieNeu-TTS if you need offline Vietnamese or bilingual TTS with instant voice cloning on commodity hardware, especially for short interactive calls on CPU. Skip it if you require production-grade emotion control or stable multi-speaker dialogue beyond the experimental v3; v2's Podcast mode is more mature.
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 received new commits within the last day.
What is it written in?
Mainly Python, according to GitHub's language statistics.

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

DEEP OPEN-SOURCE ANALYSIS

What VieNeu-TTS actually solves

VieNeu-TTS targets a narrow but real gap: Vietnamese text-to-speech that runs entirely on-device, with no cloud round-trip and no GPU requirement. The README emphasizes a torch-free ONNX path for CPU inference, which is unusual for a modern TTS stack. Most Vietnamese TTS offerings are either cloud APIs or require a CUDA card. This project claims to do 48 kHz synthesis on a plain CPU, with instant voice cloning from a 3 to 8 second clip. The intended user is a developer building a Vietnamese-language app, a content creator generating voiceovers offline, or a researcher who needs bilingual English-Vietnamese code-switching without sending audio to a third party. The 24 kHz v2 models are still there, but v3 Turbo is the headline: a from-scratch architecture that the author says was designed and trained by Phạm Nguyễn Ngọc Bảo, using a separate audio tokenizer and a custom phonemizer.

The v3 Turbo architecture: codec, phonemizer, and the ONNX path

The v3 Turbo design is split into three visible components. The audio codec is MOSS-Audio-Tokenizer-Nano from the OpenMOSS team, which turns waveforms into discrete tokens at 48 kHz. The phonemizer is sea-g2p, a separate repository by the same author, which handles Vietnamese and English grapheme-to-phoneme conversion. The TTS model itself is trained from scratch, not a fine-tune of an existing backbone. The key operational detail is the inference engine split. On CPU, the SDK uses ONNX Runtime with an int8 quantized backbone by default, which the README claims is about 1.6 times faster and 4 times smaller than fp32. On CUDA, it auto-switches to PyTorch, and the same API batches automatically. The README is explicit that GPU only pays off for long text or bulk synthesis, because the batch fills up; for short utterances, the kernel-launch overhead makes CPU faster. That is a refreshingly honest trade-off, and it means the default install for most users should be the torch-free one.

Getting it running: uv sync, the web UI, and the SDK

The recommended install path uses uv, not pip. The README gives three concrete commands: clone the repo, run uv sync for the CPU/torch-free stack, or uv sync --group gpu for CUDA or Apple Silicon. Then uv run vieneu-web starts a web UI at http://127.0.0.1:7860. The README strongly advises uv sync over pip install because uv reproduces a locked environment that pins an optimized ONNX Runtime build. For the SDK, you install vieneu from PyPI. On CPU it defaults to v3 Turbo via ONNX, and you can switch backends with Vieneu(backend="onnx") if you are on a GPU machine. Precision is configurable: Vieneu(precision="fp32") trades speed for fidelity on CPU, and the option is ignored on GPU. The quick start example shows a single inference call with an inline emotion tag, [cười], which is Vietnamese for laugh. The install process is genuinely simple for a project with this much machinery, but it depends on uv being present, which is an extra tool for teams that have standardized on pip.

Emotion tags, default voices, and the deprecated style argument

v3 Turbo introduces a notable change in how voice style works. The README says the style argument is deprecated and ignored; instead, the style follows the reference voice. That is a deliberate simplification. For built-in default voices, you get a stable reading style with no reference clip needed. For cloning, the emotion and non-verbal cues come from the reference audio, not from a parameter. The experimental emotion support lets you drop bracketed tags directly into the text: [cười] for laugh, [thở dài] for sigh, [hắng giọng] for clearing throat. This is a pragmatic approach for a v3 preview, but it means you cannot independently control prosody and speaker identity. If you want a cheerful voice to read a sad sentence, the architecture gives you no lever for that. The v2 models, by contrast, had a dedicated Podcast and Conversation mode with emotional nuances, so the trade-off is between the newer, higher-fidelity v3 and the older, more expressive v2.

Streaming, batching, and the real-time claim

The README claims frame-level streaming with audio starting in about 300 ms and generation staying ahead of playback, with a real-time factor below 1. That is a strong claim for CPU inference, and it is worth verifying on your own hardware before relying on it. The batching story is more concrete: v3 Turbo supports batch sizes up to 32, including a multi-speaker Conversation mode that batches an entire script regardless of speaker. That is a meaningful architectural feature, because it means long-form dialogue does not need separate inference calls per utterance. The GPU path auto-batches, so the same code can scale from a single laptop to a CUDA server. The streaming claim, however, is the kind of thing that depends heavily on the specific CPU, the int8 quantization, and the text length. The README does not give benchmark numbers, so take the 300 ms figure as a target, not a guarantee.

Maintenance, licensing, and what is still missing

The project is under Apache-2.0, which is permissive for commercial use, but the underlying components have their own licenses: MOSS-Audio-Tokenizer-Nano and sea-g2p are separate projects, so you need to check their terms before shipping a product. The release cadence is active: app-v0.8.0 landed on 2026-08-25, with 0.7.8 and 0.7.9 two weeks earlier. The README notes that v3 Turbo is early access, with a full v3 release promised in a few weeks. That means the API surface may still change. The style argument being deprecated is a sign of that instability. The documentation is also thin on failure modes: there is no troubleshooting section for cloning failures, no discussion of what happens with very noisy reference clips, and no explicit list of supported Vietnamese dialects. The automatic reference denoising is mentioned, but not how it behaves on music or overlapping speech. If you need a stable, documented API for a production system, the v2 line might be safer, even if it is lower fidelity.

Alternatives and the real difference

The most direct alternative is Coqui TTS, which also supports zero-shot voice cloning and runs on CPU, but it is not Vietnamese-specific and its Vietnamese models are older and less tuned. The architectural difference is that Coqui uses a single end-to-end model with a separate speaker encoder, while VieNeu-TTS v3 splits the problem into a codec, a phonemizer, and a TTS model, which allows the ONNX quantized path to be optimized independently. Another alternative is the cloud-based Vietnamese TTS from Google or Azure, which offers high quality and no local compute, but you lose offline capability and you send your text to a third party. For a developer who needs Vietnamese with code-switching to English, VieNeu-TTS's sea-g2p phonemizer is a specific advantage over generic TTS tools that treat Vietnamese as a low-resource language. The trade-off is that the project is newer and less battle-tested than the cloud APIs.

Who should adopt it, and what to check first

Adopt VieNeu-TTS if you are building an offline Vietnamese voice assistant, a content tool that runs on a user's laptop, or a research project that needs bilingual synthesis without a GPU. Do not adopt it if you need fine-grained emotion control, production-grade multi-speaker dialogue, or a stable API for a long-lived product, because v3 is early access and v2 is the safer fallback. Before you commit, verify three things: the exact ONNX Runtime version pinned by uv sync on your OS, the quality of cloning with your own reference clips (the README suggests 3 to 8 seconds, but that is a starting point, not a guarantee), and whether the ignored style argument breaks any of your existing code that used v2. The project is moving fast, with releases every few days, so pin your dependency to a specific version and test the upgrade path. If the 48 kHz output and the torch-free CPU path hold up in your own tests, this is a rare TTS that can run on a Raspberry Pi-class device, which is a concrete capability worth measuring.

Editorial conclusion

Adopt VieNeu-TTS if you need offline Vietnamese or bilingual TTS with instant voice cloning on commodity hardware, especially for short interactive calls on CPU. Skip it if you require production-grade emotion control or stable multi-speaker dialogue beyond the experimental v3; v2's Podcast mode is more mature. Before committing, verify the exact ONNX runtime version pinned by uv sync, test cloning with your own 3-8 second clips to confirm reference quality, and check that the v3 Turbo early access API surface (like the ignored style argument) matches your integration needs.

Official sources

  1. Official documentation
  2. Official README
  3. Project repository
  4. Release notes
Community notes

Community notes