pbnj

VieNeu TTS

import numpy as np
from vieneu import Vieneu

# Initialize in Standard mode (Default - Highest quality)
tts = Vieneu(
    emotion="natural"
)

# Using a specific Preset Voice
# - Ngọc Lan — nữ, giọng dịu dàng (ID: Ngọc Lan)
# - Gia Bảo — nam, giọng mượt mà (ID: Gia Bảo)
# - Thái Sơn — nam, giọng chắc khỏe (ID: Thái Sơn)
# - Đức Trí — nam, giọng rõ ràng (ID: Đức Trí)
# - Mỹ Duyên — nữ, giọng mượt mà (ID: Mỹ Duyên)
# - Trúc Ly — nữ, giọng trẻ trung (ID: Trúc Ly)
# - Xuân Vĩnh — nam, giọng vui tươi (ID: Xuân Vĩnh)
# - Trọng Hữu — nam, giọng uyên bác (ID: Trọng Hữu)
# - Bình An — nam, giọng điềm đạm (ID: Bình An)
# - Ngọc Linh — nữ, giọng tươi sáng (ID: Ngọc Linh)
voice_data = tts.get_preset_voice("Trúc Ly")

audio_chunks = []
with open("text.txt", "r") as f:
    lines = f.readlines()
    count = 1
    total = len(lines)
    for line in lines:
        print(f"\rWorking on chunk {count}/{total}", end="", flush=True)
        if line.strip():
            audio_chunk = tts.infer(text=line, voice=voice_data)
            audio_chunks.append(audio_chunk)
        else:
            silence = np.zeros(int(24000 * 0.3), dtype=np.float32)
            audio_chunks.append(silence)
        count += 1
audio_full = np.concatenate(audio_chunks)
tts.save(audio_full, "output_Full.wav")
print("💾 Saved to output_Full.wav")