Maskinoversættelse · Engelsk original
Kokoro TTS stemmer og prøver
Kokoro-82M er en letvægts, ikke-autoregressiv tekst- to- tale model baseret på StyleTTS 2 med en ISTFTNet vocoder. Det kører helt på Neural Engine via CoreML, producerer naturlig 24 kHz tale fra tekst input i et enkelt fremadgående pass.
Kokoro-82M er designet til on- enhed iOS implementering. På 82M parametre (~ 80 MB med 1 spand, INT8), det passer komfortabelt på iPhone og iPad. CoreML kører på Neural Engine, efterlader GPU gratis for andre opgaver.
Understøttede sprog
| Sprog | Kode | Eksempel på ord |
|---|---|---|
| Engelsk (US) | en | af _ heart, am _ adam, af _ sky |
| Engelsk (UK) | en | bf _ emma, bm _ george |
| Spansk | s | ef _ dora |
| Fransk | fr | ff _ siwis |
| Hindi | hi | hf _ alpha, hm _ omega |
| Italiensk | er | if _ sara |
| Japansk | ja | jf _ alpha, jm _ kumo |
| Portugisisk | pt | pf _ dora |
| Kinesisk | zh | zf _ xiaobei, zm _ yunjian |
| Tysk | de | dm _ martin, df _ victoria (stemmepakninger) |
54 forudindstillet stemmer i alt. Stemmenavngivning konvention: [language_prefix][gender]_[name] - f.eks. af_heart = Amerikansk Kvinde "Heart", if_sara = Italiensk kvinde "Sara".
Tyske stemmer
Tysk er serveret af to separate single- stemme bundter, kikiri- tts fine- tunes af Kokoro-82M med en 313 MB CoreML model per stemme, snarere end ved stemmer af den flersprogede bundt. Indlæs en efter model ID og syntetisering med language: "de". Tal, datoer, tidspunkter, valuta og forkortelser er skrevet ud på enheden, og ord løse gennem bundtet 50k- ord tysk ordbog.
| Model ID | Stemme |
|---|---|
| aufklarer / Kokoro-82M-German-Martin-CoreML | dm_martin (mand) |
| aufklarer / Kokoro-82M-German-Victoria-CoreML | df_victoria (kvinde) |
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.wavUdvalgte stemmeprøver
Kort MP3 klip genereret med den lokale speech-swift CLI. Den fulde voice- code tabel forbliver nedenfor for copy- paste brug.
af_heartam_puckbf_alicebm_georgeef_doraem_alexff_siwishf_alphahm_omegaif_saraim_nicolajf_alphajm_kumopf_dorapm_alexzf_xiaobeizm_yunjianStemmekodereference
Hver Kokoro stemme-id følger samme mønster: en one-letter sprogpræfiks, et et-bogstav kønskode, derefter en underscore og stemmenavnet. Brug tabellen nedenfor til at kortlægge et målsprog til det korrekte præfiks.
Præfikstabel for sprog
| Præfiks | Sprog | Lokal | Generatorer |
|---|---|---|---|
a | Engelsk | Amerikansk (en- US) | af_, am_ |
b | Engelsk | Britisk (en- GB) | bf_, bm_ |
d | Tysk | (de- DE) | dm_, df_ |
e | Spansk | e) | ef_, em_ |
f | Fransk | (fra - FR) | ff_ |
h | Hindi | (hi) | hf_, hm_ |
i | Italiensk | (det) | if_, im_ |
j | Japansk | ja) | jf_, jm_ |
p | Portugisisk | Brasiliansk (pt- BR) | pf_, pm_ |
z | Kinesisk | Mandarin (zh) | zf_, zm_ |
Alle stemmer efter sprog
Engelsk - Amerikansk (af_*, am_*)
Kvinde: af_alloy, af_aoede, af_bella, af_heart (standard) af_jessica, af_kore, af_nicole, af_nova, af_river, af_sarah, af_sky
Mænd: am_adam, am_echo, am_eric, am_fenrir, am_liam, am_michael, am_onyx, am_puck, am_santa
Engelsk - Britisk (bf_*, bm_*)
Kvinde: bf_alice, bf_emma, bf_isabella, bf_lily
Mænd: bm_daniel, bm_fable, bm_george, bm_lewis
Spansk (ef_*, em_*)
Kvinde: ef_dora
Mænd: em_alex, em_santa
Fransk (ff_*)
Kvinde: ff_siwis
Hindi (hf_*, hm_*)
Kvinde: hf_alpha, hf_beta
Mænd: hm_omega, hm_psi
Italiensk (if_*, im_*)
Kvinde: if_sara
Mænd: im_nicola
Japansk (jf_*, jm_*)
Kvinde: jf_alpha, jf_gongitsune, jf_nezumi, jf_tebukuro
Mænd: jm_kumo
Portugisisk - Brasiliansk (pf_*, pm_*)
Kvinde: pf_dora
Mænd: pm_alex, pm_santa
Kinesisk - Mandarin (zf_*, zm_*)
Kvinde: zf_xiaobei, zf_xiaoni, zf_xiaoxiao, zf_xiaoyi
Mænd: zm_yunjian, zm_yunxi, zm_yunxia, zm_yunyang
Kør speech kokoro --list-voices at udskrive hver stemme som i øjeblikket er bundtet med modellen. Stemme ID 'er er stabile på tværs af udgivelser - brug den nøjagtige streng (fx, if_sara) når du ringer --voice fra CLI eller passerer voice: til Swift API.
Arkitektur
Kokoro bruger en 3- stage CoreML rørledning. Ingen samplingsløjfe - alle faser er ikke-auto-regressive fremadgående passerer med en Swift- side justering trin mellem trin 1 og 2.
3 - Stage Pipeline
| Fase | Model | Input | Output |
|---|---|---|---|
| 1. Varighed | duration.mlmodelc | Phoneme tokens + stemmeindlejring + hastighed | Holdinger, prosodifunktioner, tekstkodning |
| — | Swift justering | Holdinger + fase 1 funktioner | Justeret prosody & amp; tekstfunktioner |
| 2. Prosody | prosody.mlmodelc | Tilpasset prosody- funktioner + stil | F0 (pitch) + støjforudsigelser |
| 3. Dekoder | decoder_*.mlmodelc | Justeret tekst + F0 + støj + stil | 24 kHz lydbølgeform |
Phoneme Spande (Varighed Model)
Varigheden model bruger opregnet input former. Input er polstret til den mindste spand, der passer:
| Spande | Maks. Telefoner | Brugstilfælde |
|---|---|---|
| p16 | 16 | Korte sætninger |
| p32 | 32 | Korte sætninger |
| p64 | 64 | Mellemsætninger |
| p128 | 128 | Lange sætninger |
Decoder- spande
Fixed- form dekoder modeller for forskellige maksimale lydlængder (hver ramme = 600 prøver ved 24 kHz):
| Spande | Maks. rammer | Max Audio |
|---|---|---|
decoder_5s | 200 | 5.0s. |
decoder_10s | 400 | 10.0s |
decoder_15s | 600 | 15.0s |
Kræver iOS 18+ / macOS 15+.
Phonemizer
Tekst konverteres til foneme tokens via en trestrenget rørledning - alle Apache-2.0 licenseret, ingen GPL afhængigheder:
- Ordbogsopvisning - US English og British English udtale ordbøger med heteronym støtte
- Suffiks, der stammer fra - Morfologisk nedbrydning af kendte suffikser (f.eks. "-ing", "-tion")
- BART G2P - Neurale grapheme- to- phoneme fallback ved hjælp af en separat CoreML encoder-dekoder model for out- of- ordforråd ord
Brugerdefinerede udtryk
Korrekt navneord uden for de sendte ordbøger falder igennem til tier 3, hvor BART gæt fra Engelsk stavregler - så ikke-Anglo navne kommer ud forkert (Tatiana bliver tˈitiəniənə). addPronunciations injects word -> IPA poster foran tier 1:
let tts = try await KokoroTTSModel.fromPretrained()
tts.addPronunciations(["tatiana": "tɑtiˈɑnə"])
Nøglerne er matchede med små bogstaver og skal være enkelte ord - tekst er delt på whitespeak og punktuation før opløsning, så en nøgle, der indeholder et mellemrum, hyphen, eller apostrophe er aldrig set op. IPA skal bruge symboler fra modellen ordforråd; alt andet er lydløst tabt ved advoization. Angivelser gælder kun for den engelske sti - zh, ja, it, fr, es, pt, og hi Vælg dedikerede phonemizers, der aldrig konsultere ordbøger. Opslag er ulåst, så registrer poster, før syntese begynder at køre samtidigt på samme model.
Model Vægte
| Komponent | Størrelse | Format |
|---|---|---|
| Varighed model | ~ 39 MB | .mlmodelc |
| Prosodymodel | ~ 17 MB | .mlmodelc |
| Dekodermodeller (3 spande) | ~ 107 MB hver | .mlmodelc |
| Stemmeindlejringer (54 stemmer) | ~ 0,3 MB | JSON (256- dim Float32) |
| G2P encoder + dekoder | ~ 1,5 MB | .mlmodelc |
| Ordbøger + ordforråd | ~ 6 MB | JSON |
| I alt (1 dekoder) | ~ 170 MB |
Præstation
| Metric | Værdi |
|---|---|
| Parametre | 82M |
| Inferenskomponent | CoreML (Neural Engine) |
| Inferens RTFx | ~ 0,7 (hurtigere end realtid) |
| Udtagningsprøvesats | 24 kHz |
| Vægthukommelse | ~ 170 MB (1 dekoder spand) |
I modsætning til Qwen3-TTS og CosyVoice3, som genererer tokens step-by-step, Kokoro bruger en 3- stage rørledning uden prøvetagningssløjfe. Alle faser er deterministiske fremadgående passerer.
CLI-brug
speech kokoro "Hello, world!" --voice af_heart --output hello.wav
Indstillinger
| Valgmulighed | Standard | Varebeskrivelse |
|---|---|---|
<text> | Tekst der skal syntetiseres | |
--voice | af_heart | Stemmeforudindstillet navn |
--language | en | Sprogkode: en, es, fr, hi, it, ja, pt, zh, ko, de |
--output, -o | kokoro_output.wav | Output WAV filsti |
--list-voices | Liste over alle tilgængelige stemmer og udgang | |
--model, -m | HuggingFace-model- id |
Eksempler
# 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)
Computér enhedsoverridning
fromPretrained(computeUnits:) vælger hvilken hardware der kører hovedmodellen CoreML. Standard (.all) lader Core ML foretrækker Neural Engine, som er den hurtigste sti på hver understøttet enhed. .cpuAndGPU at omgå ANE som en fallback på platforme, hvor ANE compiler producerer forkert output for denne model.
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)
Hvornår skal Kokoro anvendes
| Brugstilfælde | Anbefalet TTS |
|---|---|
| iOS app, letvægts, battery- effektiv | Kokoro (CoreML, 82M params, ~ 170 MB) |
| Højeste kvalitet, streaming, stemme kloning | Qwen3-TTS (MLX, 600M params, ~ 1.7 GB) |
| Flersproget streaming, 9 sprog | CosyVoice3 (MLX, 500M params, ~ 1.2 GB) |
| Full-duplex talt dialog | PersonaPlex (MLX, 7B params, ~ 5.5 GB) |
Licens
- Standardvægt: Apache-2.0 (hexgrad / Kokoro-82M)
- CoreML konvertering: Apache-2.0 (aufklarer / Kokoro-82M-CoreML)
- Ordbøger og G2P: Apache-2.0
Qwen3-ASR speech- to- text · Parakeet TDT speech- to- text · CosyVoice3 stemmekloning