Views
No views yet
.msi from eSpeak NG Releases.brew install espeaksudo apt install espeak-ng1# 1. Clone repository
2git clone https://github.com/pnnbao97/VieNeu-TTS.git
3cd VieNeu-TTS
4
5# 2. Sync environment (requires uv)
6uv sync
7
8# 3. Launch Web UI
9uv run gradio_app.pyVieNeu-TTS-0.3B-q4-gguf and Device: CPU.1# Windows (Avoid llama-cpp build errors)
2pip install vieneu --extra-index-url https://pnnbao97.github.io/llama-cpp-python-v0.3.16/cpu/
3
4# Linux / MacOS
5pip install vieneu1from vieneu import Vieneu
2import os
3
4# Initialization
5tts = Vieneu() # Default: 0.3B-Q4 GGUF for CPU
6os.makedirs("outputs", exist_ok=True)
7
8# 1. List preset voices
9available_voices = tts.list_preset_voices()
10for desc, name in available_voices:
11 print(f" - {desc} (ID: {name})")
12
13# 2. Use specific voice (dynamically select second voice)
14if available_voices:
15 _, my_voice_id = available_voices[1] if len(available_voices) > 1 else available_voices[0]
16 voice_data = tts.get_preset_voice(my_voice_id)
17 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)
18 tts.save(audio_spec, f"outputs/standard_{my_voice_id}.wav")
19 print(f"💾 Saved synthesis to: outputs/standard_{my_voice_id}.wav")
20
21# 3. Standard synthesis (uses default voice)
22text = "Xin chào, tôi là VieNeu. Tôi có thể giúp bạn đọc sách, làm chatbot thời gian thực, hoặc thậm chí clone giọng nói của bạn."
23audio = tts.infer(text=text)
24tts.save(audio, "outputs/standard_output.wav")
25print("💾 Saved synthesis to: outputs/standard_output.wav")
26
27# 4. Zero-shot voice cloning
28if os.path.exists("examples/audio_ref/example_ngoc_huyen.wav"):
29 cloned_audio = tts.infer(
30 text="Đây là giọng nói đã được clone thành công từ file mẫu.",
31 ref_audio="examples/audio_ref/example_ngoc_huyen.wav",
32 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."
33 )
34 tts.save(cloned_audio, "outputs/standard_cloned_output.wav")
35 print("💾 Saved cloned voice to: outputs/standard_cloned_output.wav")
36
37# 5. Cleanup
38tts.close()1@misc{vieneutts03bgguf2026,
2 title = {VieNeu-TTS-0.3B-GGUF: CPU-Optimized Vietnamese Text-to-Speech},
3 author = {Pham Nguyen Ngoc Bao},
4 year = {2026},
5 publisher = {Hugging Face},
6 howpublished = {\url{https://huggingface.co/pnnbao-ump/VieNeu-TTS-0.3B-q4-gguf}}
7}