Kokoro TTS

Kokoro-82M एक हल्का, non-autoregressive टेक्स्ट-टू-स्पीच मॉडल है जो ISTFTNet vocoder के साथ StyleTTS 2 पर आधारित है। यह पूरी तरह CoreML के माध्यम से Neural Engine पर चलता है, single forward pass में text input से natural 24 kHz speech उत्पन्न करता है।

iOS-तैयार

Kokoro-82M ऑन-डिवाइस iOS डिप्लॉयमेंट के लिए डिज़ाइन किया गया है। 82M पैरामीटर (~80 MB 1 bucket, INT8 के साथ) पर, यह iPhone और iPad पर आराम से फिट बैठता है। CoreML Neural Engine पर चलता है, जो अन्य कार्यों के लिए GPU को फ़्री छोड़ देता है।

समर्थित भाषाएँ

भाषाकोडउदाहरण Voices
अंग्रेज़ी (US)enaf_heart, am_adam, af_sky
अंग्रेज़ी (UK)enbf_emma, bm_george
स्पेनिशesef_dora
फ़्रेंचfrff_siwis
हिन्दीhihf_alpha, hm_omega
इटालियनitif_sara
जापानीjajf_alpha, jm_omega
पुर्तगालीptpf_dora
चीनीzhzf_xiaobei, zm_yunjian
कोरियाईkokf_somi

कुल 50 preset voices। Voice नामकरण convention: [language][gender]_[name] — जैसे, af_heart = American Female "Heart"।

आर्किटेक्चर

Kokoro एक 3-stage CoreML पाइपलाइन का उपयोग करता है। कोई sampling loop नहीं — सभी चरण stages 1 और 2 के बीच एक Swift-side alignment चरण के साथ non-autoregressive forward passes हैं।

3-चरण पाइपलाइन

चरणमॉडलइनपुटआउटपुट
1. Durationduration.mlmodelcPhoneme tokens + voice embedding + speedDurations, prosody features, text encoding
Swift alignmentDurations + stage 1 featuresAligned prosody और text features
2. Prosodyprosody.mlmodelcAligned prosody features + styleF0 (pitch) + noise predictions
3. Decoderdecoder_*.mlmodelcAligned text + F0 + noise + style24 kHz ऑडियो waveform

Phoneme Buckets (Duration Model)

Duration मॉडल enumerated input shapes का उपयोग करता है। Input सबसे छोटे bucket पर पैड किया जाता है जो fit होता है:

BucketMax Phonemesउपयोग केस
p1616छोटे वाक्यांश
p3232छोटे वाक्य
p6464मध्यम वाक्य
p128128लंबे वाक्य

Decoder Buckets

विभिन्न अधिकतम ऑडियो लंबाइयों के लिए Fixed-shape decoder मॉडल (प्रत्येक frame = 24 kHz पर 600 samples):

BucketMax FramesMax Audio
decoder_5s2005.0s
decoder_10s40010.0s
decoder_15s60015.0s

iOS 18+ / macOS 15+ की आवश्यकता है।

Phonemizer

Text को तीन-स्तरीय पाइपलाइन के माध्यम से phoneme tokens में कन्वर्ट किया जाता है — सभी Apache-2.0 licensed, कोई GPL dependencies नहीं:

  1. Dictionary lookup — heteronym समर्थन के साथ US अंग्रेज़ी और British अंग्रेज़ी उच्चारण शब्दकोश
  2. Suffix stemming — ज्ञात suffixes के लिए morphological विघटन (जैसे, "-ing", "-tion")
  3. BART G2P — out-of-vocabulary शब्दों के लिए एक अलग CoreML encoder-decoder मॉडल का उपयोग करके neural grapheme-to-phoneme fallback

मॉडल Weights

कॉम्पोनेंटआकारफ़ॉर्मैट
Duration model~39 MB.mlmodelc
Prosody model~17 MB.mlmodelc
Decoder models (3 buckets)~107 MB प्रत्येक.mlmodelc
Voice embeddings (54 voices)~0.3 MBJSON (256-dim Float32)
G2P encoder + decoder~1.5 MB.mlmodelc
शब्दकोश + vocab~6 MBJSON
कुल (1 decoder)~170 MB

परफ़ॉर्मेंस

मेट्रिकमान
पैरामीटर82M
इन्फ़रेंस बैकएंडCoreML (Neural Engine)
इन्फ़रेंस RTFx~0.7 (रियल-टाइम से तेज़)
आउटपुट sample rate24 kHz
Weight memory~170 MB (1 decoder bucket)
Non-Autoregressive

Qwen3-TTS और CosyVoice3 के विपरीत जो tokens को step-by-step उत्पन्न करते हैं, Kokoro बिना sampling loop के 3-stage पाइपलाइन का उपयोग करता है। सभी चरण deterministic forward passes हैं।

CLI उपयोग

audio kokoro "Hello, world!" --voice af_heart --output hello.wav

विकल्प

विकल्पडिफ़ॉल्टविवरण
<text>Synthesize करने के लिए text
--voiceaf_heartVoice preset नाम
--languageenभाषा कोड: en, es, fr, hi, it, ja, pt, zh, ko, de
--output, -okokoro_output.wavOutput WAV फ़ाइल पथ
--list-voicesसभी उपलब्ध voices सूचीबद्ध करें और बाहर निकलें
--model, -mHuggingFace मॉडल ID

उदाहरण

# English with default voice
audio kokoro "Hello, how are you today?" --output hello.wav

# French
audio kokoro "Bonjour le monde" --voice ff_siwis --language fr --output bonjour.wav

# Japanese
audio kokoro "こんにちは世界" --voice jf_alpha --language ja --output konnichiwa.wav

# List all 50 voices
audio kokoro --list-voices

Swift API

import KokoroTTS
import AudioCommon

let tts = try await KokoroTTSModel.fromPretrained()
// Downloads ~170 MB on first run

let audio = try tts.synthesize(text: "Hello world", voice: "af_heart")
// audio: [Float] — 24 kHz mono PCM

try WAVWriter.write(samples: audio, sampleRate: 24000, to: outputURL)

Kokoro कब उपयोग करें

उपयोग केसअनुशंसित TTS
iOS ऐप, हल्का, battery-efficientKokoro (CoreML, 82M params, ~170 MB)
उच्चतम गुणवत्ता, streaming, voice cloningQwen3-TTS (MLX, 600M params, ~1.7 GB)
बहुभाषी streaming, 9 भाषाएँCosyVoice3 (MLX, 500M params, ~1.2 GB)
Full-duplex बोला गया संवादPersonaPlex (MLX, 7B params, ~5.5 GB)

लाइसेंस