Maskinöversättning · Engelskt original
Kokoro TTS röster och prover
Kokoro-82M är en lätt, icke-autoregressiv text-till-tal-modell baserad på StyleTTS 2 med en ISTFTNet-vocoder. Den körs helt på Neural Engine via CoreML och producerar naturligt 24 kHz-tal från textinmatning i ett enda framåtpass.
Kokoro-82M är utformad för on-device iOS distribution. Vid 82M-parametrar (~80 MB med 1 hink, INT8) passar den bekvämt på iPhone och iPad. CoreML körs på Neural Engine och lämnar GPU
Stödda språk
| Språkspråk | Kodkod | Exempelröster |
|---|---|---|
| Engelska (USA) | En | af_heart, am_adam, af_sky |
| Engelska (Storbritannien) | En | bf_emma, bm_george |
| Spanska spanska | ess | ef_dora |
| Franska franska | FR FRÅN FRÅF | ff_siwis |
| Hindi | Hej Hej Hehej | hf_alpha, hm_omega |
| Italienska Italien | Det är | if_sara |
| Japansk Japansk Japan Japansk | Ja ja ja ja ja | jf_alpha, jm_kumo |
| Portugisiska | Pt | Pf_dora |
| Kinesiska kinesiska | zh | zf_xiaobei, zm_yunjian |
| Tyska tyska | De | dm_martin, df_victoria (röstpaket) |
54 förinställda röster totalt. Voice naming convention: [language_prefix][gender]_[name] — t.ex. af_heart = American Female "Heart", if_sara = Italian Female 'Sara'.
Tyska röster
Tyska serveras av två separata singel-voice buntar, kikiri-tts finjusteringar av Kokoro-82M med en 313 MB CoreML modell per röst, snarare än genom röster av den flerspråkiga bunten. Ladda en efter modell ID och syntetisera med language: "de". Numbers, times, valuta och förkortningar stavas ut på 50 ord, och
| Modell ID | Röst |
|---|---|
| aufklarer/Kokoro-82M-German-Martin-CoreML | dm_martin (manlig) |
| aufklarer/Kokoro-82M-German-Victoria-CoreML | df_victoria (kvinnlig) |
let tts = try await KokoroTTSModel.fromPretrained(modelId: KokoroTTSModel.germanMartinModelId)
let audio = try tts.synthesize(text: "Am 3. Oktober um 18:30 Uhr kostet es 12,80 €.",
voice: "dm_martin", language: "de")speech kokoro --model aufklarer/Kokoro-82M-German-Martin-CoreML --language de "Guten Tag, wie geht es Ihnen?" --output guten-tag.wavUtvalda röstprover
Kort MP3 klipp som genereras med de lokala speech-swift CLI. Det fullständiga röstkodstabellen är fortfarande under för användning av kopieringssmak.
af_heartam_puckbf_alicebm_georgeef_doraem_alexff_siwishf_alphahm_omegaif_saraim_nicolajf_alphajm_kumopf_dorapm_alexzf_xiaobeizm_yunjianVoice Codes Referens
Varje Kokoro röst-ID följer samma mönster: ett en-brev språk prefix, ett en-bokstäver genderkod , sedan en underscore och röstnamnet. Använd tabellen nedan för att kartlägga ett målspråk till rätt prefix.
Språk prefixbord
| Prefix | Språkspråk | Lokalt | Köner |
|---|---|---|---|
a | Engelska engelska engelska | Amerikanska (en-US) | af_, am_ |
b | Engelska engelska engelska | Brittiska (en-GB) | bf_, bm_ |
d | Tyska tyska | (de-DE) | dm_, df_ |
e | Spanska spanska | (es) | ef_, em_ |
f | Franska franska | (Fr-FR) | ff_ |
h | Hindi | (Han) | hf_, hm_ |
i | Italienska Italien | (det) | if_, im_ |
j | Japansk Japansk Japan Japansk | (ja) | jf_, jm_ |
p | Portugisiska | Brasilianska (pt-BR) | pf_, pm_ |
z | Kinesiska kinesiska | Mandarin (zh) | zf_, zm_ |
Alla röster på språk
Engelska - Amerikanska (af_*, am_*
Kvinna: af_alloy, af_aoede, af_bella, af_heart (default), af_jessica, af_kore, af_nicole, af_nova, af_river, af_sarah, af_sky
Male: am_adam, am_echo, am_eric, am_fenrir, am_liam, am_michael, am_onyx, am_puck, am_santa
Engelska - Brittiska (bf_*, bm_*
Kvinna: bf_alice, bf_emma, bf_isabella, bf_lily
Male: bm_daniel, bm_fable, bm_george, bm_lewis
Spanska (ef_*, em_*
Kvinna: ef_dora
Male: em_alex, em_santa
Franska (ff_*)
Female: ff_siwis
Hindi (hf_*, hm_*
Kvinna: hf_alpha, hf_beta
Male: hm_omega, hm_psi
Italienska (if_*, im_*
Kvinna: if_sara
Male: im_nicola
Japanska (jf_*, jm_*
Kvinna: jf_alpha, jf_gongitsune, jf_nezumi, jf_tebukuro
Male: jm_kumo
Portugisiska - brasilianska (pf_*, pm_*
Kvinna: pf_dora
Male: pm_alex, pm_santa
Kinesiska - Mandarin (zf_*, zm_*
Kvinna: zf_xiaobei, zf_xiaoni, zf_xiaoxiao, zf_xiaoyi
Male: zm_yunjian, zm_yunxi, zm_yunxia, zm_yunyang
Kör speech kokoro --list-voices för att skriva ut varje röst som för närvarande är sammanbunden med modellen. Röst-ID är stabila över utgåvor - använd den exakta strängen (t.ex. if_sara) vid samtal --voice från CLI eller passerar voice: till Swift API
Arkitektur
Kokoro använder en 3-stegs CoreML pipeline. Inget provtagningsloop - alla steg är icke-autoregressiva framåt passerar med ett Swift-side-anpassningssteg mellan steg 1 och 2.
3-stegs Pipeline
| Steg | Modell | Input | Output |
|---|---|---|---|
| 1. Varaktighet | duration.mlmodelc | Phoneme tokens + röstinbäddning + hastighet | Varaktigheter, prosodiga funktioner, textkodning |
| — | Swift inriktning | Varaktigheter + steg 1-funktioner | Aligned prosody & textfunktioner |
| 2. Prosody | prosody.mlmodelc | Aligned prosody funktioner + stil | F0 (pitch) + bullerprognoser |
| 3. Decoder | decoder_*.mlmodelc | Anpassad text + F0 + buller + stil | 24 kHz ljud vågform |
Phoneme Buckets (varaktighetsmodell)
Varaktighetsmodellen använder uppräknade ingångsformer. Inmatningen är vadderad till den minsta hink som passar:
| Bucket | Max Phonemes | Använd fall |
|---|---|---|
| p16 | 16 | Korta fraser |
| p32 | 32 | Korta meningar |
| p64 | 64 | Medium meningar |
| p128 | 128 | Långa meningar |
Decoder Buckets
Fixed-shape-dekodermodeller för olika maximala ljudlängder (varje ram = 600 prover vid 24 kHz):
| Bucket | Max Frames | Max Audio |
|---|---|---|
decoder_5s | 200 | 5.0 |
decoder_10s | 400 | 10.0 |
decoder_15s | 600 | 15.0 |
Kräver iOS 18+/ macOS 15+.
Phonemizer
Text konverteras till telefonme tokens via en tre-tier pipeline - alla Apache-2.0 licensierade, inga GPL-beroende:
- Dictionary lookup - Amerikanska engelska och brittiska engelska uttalsordböcker med heteronymstöd
- Suffix stemming - Morfologisk sönderdelning för kända suffix (t.ex. "-ing", "-tion")
- BART G2P -- Neural grapheme-to-phoneme fallback med en separat CoreML encoder-decoder-modell för out-of-vocabulary ord
Anpassade uttalanden
Korrekta substantiv utanför de skeppade ordböckerna faller igenom till nivå 3, där BART gissningar från Engelska engelska engelska stavningsregler - så icke-Anglo namn kommer ut fel (Tatiana Blir tˈitiəniənə). addPronunciations Injektioner word -> IPA poster före nivå 1:
let tts = try await KokoroTTSModel.fromPretrained()
tts.addPronunciations(["tatiana": "tɑtiˈɑnə"])
Nycklar matchas nedre och måste vara enkla ord - texten delas på vitrymd och skiljetecken före resolution, så en nyckel som innehåller ett utrymme, hyphen eller apostrophe är aldrig ses upp. IPA måste använda symboler från modellen ordförråd; allt annat är tyst tappade på tokenization. Inmatningar gäller endast den engelska vägen - zh, ja, it, fr, es, ptoch hi Välj dedikerade telefonmisatorer som aldrig konsulterar ordböckerna. Uppslagningen är upplåst, så registrera poster innan syntesen börjar löpa samtidigt på samma modell.
Modellvikt
| Komponent | Storlek | Format |
|---|---|---|
| Varaktighetsmodell | ~39 MB | Mlmodelc |
| Prosody modell | 17 MB | Mlmodelc |
| Decoder modeller (3 hink) | ~ 107 MB vardera | Mlmodelc |
| Voice inbäddningar (54 röster) | ~0.3 MB | JSON (256-dim Float32) |
| G2P kodare + decoder | ~1.5 MB | Mlmodelc |
| Ordböcker + vocab | 6 MB | JSON |
| Total (1 decoder) | ~170 MB |
Prestanda
| Metric | Värde |
|---|---|
| Parametrar | 82M |
| Inference backend | CoreML (Neural Engine) |
| Inference RTFx | ~0.7 (snabbare än realtid) |
| Output sample rate | 24 kHz |
| Viktminne | ~170 MB (1 decoder bucket) |
Till skillnad från Qwen3-TTS och CosyVoice3 som genererar tokens steg-för-steg, Kokoro använder en 3-stegs pipeline utan provtagningsslinga. Alla steg är deterministiska framåt passerar.
CLI Användning
speech kokoro "Hello, world!" --voice af_heart --output hello.wav
Alternativ
| Alternativ | Standard | Beskrivning |
|---|---|---|
<text> | Text för att syntetisera | |
--voice | af_heart | Röstförinställt namn |
--language | en | Språkkod: en, es, fr, hi, it, ja, pt, zh, ko, de |
--output, -o | kokoro_output.wav | Utgång WAV filväg |
--list-voices | Lista alla tillgängliga röster och exit | |
--model, -m | HuggingFace modell ID |
Exempel
# English with default voice
speech kokoro "Hello, how are you today?" --output hello.wav
# French
speech kokoro "Bonjour le monde" --voice ff_siwis --language fr --output bonjour.wav
# Japanese
speech kokoro "こんにちは世界" --voice jf_alpha --language ja --output konnichiwa.wav
# List all 54 voices
speech 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)
Compute Unit Override
fromPretrained(computeUnits:) väljer vilken hårdvara som kör huvud CoreML-modellen. Standarden (.all) låter Core ML föredrar Neural Engine, vilket är den snabbaste vägen på varje stödd enhet. Pass .cpuAndGPU
import CoreML
import KokoroTTS
// Default: ANE preferred
let tts = try await KokoroTTSModel.fromPretrained()
// Fallback: bypass the Neural Engine
let tts = try await KokoroTTSModel.fromPretrained(computeUnits: .cpuAndGPU)
När du ska använda Kokoro
| Använd fall | Rekommenderas TTS |
|---|---|
| iOS app, lätt, batterieffektiv | Kokoro (CoreML, 82M param, ~170 MB) |
| Högsta kvalitet, streaming, röst kloning | Qwen3-TTS (MLX, 600M param, ~1,7 GB) |
| Flerspråkig streaming, 9 språk | CosyVoice3 (MLX, 500M param, ~1.2 GB) |
| Full-duplex talad dialog | PersonaPlex (MLX, 7B-param, ~5,5 GB) |
Licens
- Modellvikter: Apache-2.0 (hexgrad/Kokoro-82M)
- CoreML konvertering: Apache-2.0 (aufklarer/Kokoro-82M-CoreML)
- Ordböcker och G2P: Apache-2.0
Qwen3-ASR tal till text · Parakeet TDT tal-till-text · CosyVoice3 röst kloning