Zero-shot voice cloning7 languagesStyleTTS2 + CAMPPlus

Kokoro Ninja

Clone a voice from a few seconds of audio, then speak seven languages in it — at 16.3× realtime on a single GPU. Everything below is the model's own output. Judge it with your ears.

Hear it against the alternatives

Six held-out speakers from the VIVOS test set — voices no model saw in training. Every system got the same reference clip and the same sentence, on the same L4 GPU. The dashed cards are the anchors: what the model was given, and what the person actually sounds like. Playing one stops the others, so the comparison stays honest.

Speaker 01

trưởng công an xã chạy sang can ngăn cũng bị tuyến đánh tiếp

Reference clipthe 5s of voice every model was given
Kokoro Ninja0.061 RTF · 16.3× realtime
VieNeu v3 Turbo0.718 RTF
omnivoice-vietnamese0.437 RTF
VieNeu v3 Nano0.468 RTF · CPU
Human recordingwhat the speaker really sounds like
Speaker 02

cũng thuộc loại dày đặc nhất trong hệ mặt trời

Reference clipthe 5s of voice every model was given
Kokoro Ninja0.061 RTF · 16.3× realtime
VieNeu v3 Turbo0.718 RTF
omnivoice-vietnamese0.437 RTF
VieNeu v3 Nano0.468 RTF · CPU
Human recordingwhat the speaker really sounds like
Speaker 03

bác vẫn chưa trả tiền cho tôi đây nhé

Reference clipthe 5s of voice every model was given
Kokoro Ninja0.061 RTF · 16.3× realtime
VieNeu v3 Turbo0.718 RTF
omnivoice-vietnamese0.437 RTF
VieNeu v3 Nano0.468 RTF · CPU
Human recordingwhat the speaker really sounds like
Speaker 04

hoặc chỉ biểu hiện bằng các rối loạn co bóp

Reference clipthe 5s of voice every model was given
Kokoro Ninja0.061 RTF · 16.3× realtime
VieNeu v3 Turbo0.718 RTF
omnivoice-vietnamese0.437 RTF
VieNeu v3 Nano0.468 RTF · CPU
Human recordingwhat the speaker really sounds like
Speaker 05

làm hỏng các thiết bị của tên lửa

Reference clipthe 5s of voice every model was given
Kokoro Ninja0.061 RTF · 16.3× realtime
VieNeu v3 Turbo0.718 RTF
omnivoice-vietnamese0.437 RTF
VieNeu v3 Nano0.468 RTF · CPU
Human recordingwhat the speaker really sounds like
Speaker 06

lương ba cọc ba đồng thì nuôi được ai

Reference clipthe 5s of voice every model was given
Kokoro Ninja0.061 RTF · 16.3× realtime
VieNeu v3 Turbo0.718 RTF
omnivoice-vietnamese0.437 RTF
VieNeu v3 Nano0.468 RTF · CPU
Human recordingwhat the speaker really sounds like

One voice, seven languages

The speaker embedding is language-agnostic: a single Vietnamese reference clip carries the same voice into English, Chinese, French, German, Japanese and Korean. Japanese input must be kana — the phonemizer reads kana correctly but drops kanji, so convert with a kanji→kana step first.

Reference clipone voice → all seven languages
viTiếng Việt

Xin chào, đây là giọng nói được nhân bản từ một đoạn ghi âm ngắn.

Tiếng Việt
enEnglish

Hello, this is a cloned voice speaking English.

English
zh中文

你好,这是一个克隆的声音。

中文
frFrançais

Bonjour, ceci est une voix clonée.

Français
deDeutsch

Hallo, dies ist eine geklonte Stimme.

Deutsch
ja日本語

こんにちは、これはクローンされたこえです。

日本語
ko한국어

안녕하세요, 이것은 복제된 목소리입니다.

한국어

Benchmarks

One NVIDIA L4, VIVOS test split, 10 held-out speakers × 3 sentences, identical references and sentences for every system. RTF is full-utterance compute ÷ audio duration — not time-to-first-audio, which is what most speed claims quote.

SystemRTF ↓×realtimeSECS ↑UTMOSv2 ↑WER ↓
Kokoro Ninja0.06116.3×0.8942.6603.9%
omnivoice-vietnamese0.4372.3×0.9162.6602.6%
VieNeu v3 Nano CPU0.4682.1×0.9122.3206.2%
VieNeu v3 Turbo0.7181.4×0.9312.4453.3%
Human recording0.9143.0195.7%
Where we lose. Speaker similarity trails the autoregressive models. SECS sits on a narrow scale: 0.833 is the floor (two different speakers) and 0.914 the ceiling (the same speaker's other recordings), so our 0.894 reaches about three-quarters of that range while the others reach it or pass it. If you need maximum timbre fidelity from one clip rather than throughput, VieNeu v3 Turbo is currently the better model. We publish this because a benchmark that only flatters its author isn't a benchmark.

SECS is scored with WavLM-base-plus-sv rather than CAMPPlus — scoring with the encoder this model is conditioned on would flatter it. WER is PhoWhisper back-transcription, which catches wrong tones, because a wrong tone is a different Vietnamese word. UTMOSv2 is English/Japanese-trained, so on Vietnamese it's a proxy; the human row is the calibration. It is also nondeterministic — rescoring identical audio moves it by up to 0.08, so treat small MOS gaps as noise. SECS and WER are exactly reproducible.

Why Vietnamese needs its own phonemizer

espeak-ng's Vietnamese voice collapses phonemically distinct onsets into a single IPA token. When two different sounds arrive as the same symbol, the model cannot learn the difference — it is not a tuning problem, the information is already gone.

Writtenespeak givesShould be
trɴ
ch
ssʂ
xss
rzʐ
d / gizz

We phonemize per syllable, look at the written onset and remap the colliding phoneme to the correct retroflex — which already exists in the vocabulary, so nothing about the model has to change. The remap is guarded: it only fires when espeak actually emitted the colliding token. c/k/qk is left alone, because that one is a genuine merger in Vietnamese.

One practical quirk: the model is trained on sentence-final punctuation and is sensitive to it — text without a terminal mark tends to clip or run on at the end. synthesize() adds one when your text lacks it. On this very benchmark, adding the missing period moved WER from 5.1% to 3.9% and predicted MOS from 2.47 to 2.66.

Honest limitations