🦜 VieNeu-TTS
VieNeu-TTS is an advanced on-device Vietnamese Text-to-Speech (TTS) with instant voice cloning and English–Vietnamese bilingual support. The SDK defaults to VieNeu-TTS v3 Turbo (48 kHz) and the minimal install is torch-free — on CPU it runs entirely on ONNX Runtime.
✨ Key Features
- v3 Turbo, 48 kHz — high-fidelity, natural Vietnamese speech (default).
- Torch-free on CPU — minimal install runs on ONNX Runtime; PyTorch is never imported.
- Built-in default voices — call them by name, no reference clip needed.
- Instant voice cloning — clone any voice from 3–5s of audio.
- Emotion cues (experimental) — drop
[cười],[thở dài],[hắng giọng]into the text. - Bilingual (En–Vi) code-switching, fully offline.
📦 Install
# Minimal, TORCH-FREE — runs v3 Turbo on CPU via ONNX Runtime
pip install vieneu
# Optional: GPU + older backends (v1/v2 PyTorch & GGUF, v3 Turbo on GPU)
pip install "vieneu[gpu]"
🚀 Quick Start (Python SDK)
from vieneu import Vieneu
# Default = v3 Turbo (48 kHz). GPU → PyTorch (auto-detected).
tts = Vieneu()
# 1. Built-in voice by name — no reference needed
print("🔊 Generating speech...")
audio = tts.infer("Xin chào, đây là VieNeu-TTS.", voice="Trúc Ly")
tts.save(audio, "output.wav")
print("✅ Saved to output.wav")
# List the built-in voices
voices = tts.list_preset_voices()
print(f"\n🎙️ {len(voices)} built-in voices available:")
for label, voice_id in voices:
print(f" - {label} ({voice_id})")
# 2. Reading style: "tu_nhien" (natural) | "tin_tuc" (news) | "doc_truyen" (storytelling)
audio = tts.infer("Bản tin sáng nay.", voice="Phạm Tuyên", style="tin_tuc")
# 3. Emotion / non-verbal cues — EXPERIMENTAL: [cười] [thở dài] [hắng giọng]
audio = tts.infer("Nghe hay quá đi [cười].", voice="Trúc Ly")
🦜 Zero-shot Voice Cloning
Clone from a short clip; the reference is auto-denoised and trimmed to ≤ 8s.
from vieneu import Vieneu
tts = Vieneu()
# Clone straight from a 3–8s clip
audio = tts.infer("Chào bạn, đây là giọng của tôi.", ref_audio="path/to/voice.wav", denoise=True)
tts.save(audio, "cloned.wav")
# Save a cloned voice and reuse it by name
tts.add_voice("Giọng của tôi", "path/to/voice.wav")
audio = tts.infer("Câu này dùng giọng đã lưu.", voice="Giọng của tôi")
# Just clean up a clip (no synthesis)
wav, sr = tts.denoise("noisy.wav", out_path="clean.wav")
denoise,add_voice, and cloning require the PyTorch (GPU) engine; built-in voices work everywhere.
Older models (v1 / v2 — requires pip install "vieneu[gpu]")
tts = Vieneu(mode="standard") # v2 GGUF, bilingual, podcast
tts = Vieneu(mode="turbo") # v2 Turbo, fastest
🔬 Model Overview
| Model | Engine | Device | Sample Rate | Features |
|---|---|---|---|---|
| VieNeu-TTS v3 Turbo (default) | ONNX (CPU) / PyTorch (GPU) | CPU/GPU | 48 kHz | Default voices, cloning, emotion cues |
| VieNeu-TTS v2 | PyTorch / GGUF | GPU/CPU | 24 kHz | Bilingual, podcast ([gpu]) |
| VieNeu-TTS v1 | PyTorch | GPU/CPU | 24 kHz | Stable, Vietnamese ([gpu]) |
🤝 Support & Links
- GitHub: pnnbao97/VieNeu-TTS
- Discord: Join our community
Made with ❤️ for the Vietnamese TTS community
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file vieneu-3.0.13.tar.gz.
File metadata
- Download URL: vieneu-3.0.13.tar.gz
- Upload date:
- Size: 1.1 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f79d72aa68f5d62360151265e1d9d68c1d83706328cec788ab65eeb765cb3cf7
|
|
| MD5 |
11b6faad9e962f89f0364775a14b1a81
|
|
| BLAKE2b-256 |
4e3e2fb40039802e30dc079f807e52357312800f5ce15d6e5590aab7a301c38d
|
File details
Details for the file vieneu-3.0.13-py3-none-any.whl.
File metadata
- Download URL: vieneu-3.0.13-py3-none-any.whl
- Upload date:
- Size: 1.1 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via:
twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
52b6a7d7a8e71cd7a86e81f8bfcc0649b5973704b11253129e0633c1bf99b679
|
|
| MD5 |
0ae88da550ee51590675fd3a8ded5012
|
|
| BLAKE2b-256 |
298addad2fc0da43bb739a6401278d8b004043f44bc993e22ee647e1368f9120
|