Neuvoice is a lightweight, on-device text-to-speech library that runs entirely via ONNX Runtime — no cloud calls, no latency surprises. (supertonic-3) Modified by Lamapi, it ships with a curated voice library and supports 31 languages out of the box.
On first run, model assets are downloaded and cached automatically under ~/.cache/neuvoice.
Highlights
31 supported languages. Covers a wide range of scripts and regions, from European languages to Arabic, Hindi, Japanese, Korean, Vietnamese, and more.
Runs entirely on-device. ONNX Runtime powers inference — no API keys, no network dependency after the initial model download. CPU is sufficient; GPU acceleration is supported when available.
Rich voice library. Ships with voices including Alina, Cem, Cole, Giray, Leon, Lina, Linda, Mustafa, Sarp, Selin, Sema, and Soras. Each voice is a compact style embedding — load any of them by name in a single call.
Inline expression tags. Embed <happy>, <laugh>, <breath>, <sad>, and other tags directly in your text to shape the delivery without any extra parameters.
Long-form synthesis. Inputs are automatically chunked, synthesized, and rejoined with configurable silence — no manual splitting required.
ISO 639-1 language code, or "na" for unknown languages.
max_chunk_length
int
300
Max characters per synthesis chunk (120 for Korean).
silence_duration
float
0.3
Seconds of silence inserted between chunks.
verbose
bool
False
Print per-chunk progress to stdout.
Returns:(waveform, duration) — waveform as a (1, samples) NumPy array, duration in seconds.
Examples
Multilingual synthesis:
python
1tts = TTS()2style = tts.get_voice_style("Leon")34pairs =[5("Merhaba! Bugün hava çok güzel.","tr"),6("Bonjour! Il fait beau aujourd'hui.","fr"),7("こんにちは!今日はいい天気ですね。","ja"),8]9for text, lang in pairs:10 wav, dur = tts.synthesize(text, voice_style=style, lang=lang)11 tts.save_audio(wav,f"output_{lang}.wav")
Expression tags:
python
1style = tts.get_voice_style("Lina")2text ="Good news! <happy> We just shipped the feature. <laugh> Don't tell anyone yet."3wav, dur = tts.synthesize(text, voice_style=style, lang="en")
Higher quality with more steps:
python
1wav, dur = tts.synthesize(2 text="A slow, deliberate reading for maximum clarity.",3 voice_style=style,4 total_steps=30,5 speed=0.9,6 lang="en",7)
Configuration
Model cache location and thread counts can be controlled via environment variables:
Variable
Description
NEUVOICE_CACHE_DIR
Override the default cache directory (~/.cache/neuvoice).
NEUVOICE_MODEL_REPO
Override the Hugging Face model repository.
NEUVOICE_REVISION
Model revision/branch to use (default: main).
NEUVOICE_INTRA_THREADS
ONNX intra-op thread count (default: auto).
NEUVOICE_INTER_THREADS
ONNX inter-op thread count (default: auto).
License
Neuvoice is released under the MIT License. See LICENSE for details.
The bundled ONNX model is released under the OpenRAIL-M License.
(NeuVoice by Lamapi is an open-source multilingual AI text-to-speech model focused on realistic voice synthesis, Turkish TTS, low-latency inference, and local/offline deployment on Hugging Face)