Maskinoversettelse · Engelsk original
Kokoro TTS stemmer og prøver
Kokoro-82M er en lett, ikke-autoregressiv tekst-til-speech-modell basert på StyleTTS 2 med en ISTFTNet vocoder. Den kjører helt på Neural Engine via CoreML og produserer naturlig 24 kHz tale fra tekstinngang i et enkelt framoverpass.
Kokoro-82M er utformet for on-device iOS distribusjon. Ved 82M parametere (~80 MB med 1 bøtte, INT8), passer det komfortabelt på iPhone og iPad. CoreML kjører på Neural Engine, etterlater GPU gratis for andre oppgaver.
Støttede språk
| Språk | Kode | Eksempler på stemmer |
|---|---|---|
| Engelsk (USA) | i | av_heart, am_adam, af_sky |
| Engelsk (UK) | i | bf_emma, bm_george |
| Spansk | es | Ef_dora |
| fransk | fr | ff_siwis |
| Hindi | Hei | hf_alfa, hm_omega |
| Italiensk | det | if_sara |
| Japansk | ja | jf_alfa, jm_kumo |
| Portugisisk | pt | pf_dora |
| Kinesisk | zh | zf_xiaobei, zm_yunjian |
| Tysk | de | dm_martin, df_victoria (voicepacks) |
54 forhåndsinnstilte stemmer totalt. Stemmenavnskonvensjon: [language_prefix][gender]_[name] — f.eks. af_heart = amerikansk kvinnelig -Heart - if_sara = italiensk kvinne -Sara -
Tyske stemmer
Tysk betjenes av to separate enkeltstemmepakker, kiri-tts finpuner på Kokoro-82M med en 313 MB CoreML-modell per stemme, i stedet for av stemmer fra flerspråklig pakke. Last en etter modell ID og syntetisere med language: "de". Tal, datoer, ganger, valuta og forkortelser er stavet ut på enheten, og ord løses gjennom den pakkede 50k-ord tyske ordboka.
| Modell-ID | Stemme |
|---|---|
| aufklarer/Kokoro-82M-German-Martin-CoreML | dm_martin (mannlig) |
| aufklarer/Kokoro-82M-German-Victoria-CoreML | df_victoria (kvinne) |
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.wavUtvalgte stemmeprøver
Korte MP3 klipp som genereres med den lokale speech-swift CLI. Den fulle stemmekodetabellen forblir under for kopiering-paste bruk.
af_heart am_puck bf_alice bm_george ef_dora em_alex ff_siwis hf_alpha hm_omega if_sara im_nicola jf_alpha jm_kumo pf_dora pm_alex zf_xiaobei zm_yunjian Referanse for stemmekoder
Hvert Kokoro tale-ID følger det samme mønsteret: en én bokstav språkprefiks, en en bokstav gender kode, deretter en understrek og stemmenavn. Bruk tabellen nedenfor for å kartlegge et målspråk til riktig prefiks.
Språkprefikstabell
| Prefiks | Språk | Locale | Kjønn |
|---|---|---|---|
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 | (fr-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 etter språk
Engelsk — Amerikansk (af_*, am_*
Kvinne: af_alloy, af_aoede, af_bella, af_heart (standard), af_jessica, af_kore, af_nicole, af_nova, af_river, af_sarah, af_sky
Mann: am_adam, am_echo, am_eric, am_fenrir, am_liam, am_michael, am_onyx, am_puck, am_santa
Engelsk — Britisk (bf_*, bm_*
Kvinne: bf_alice, bf_emma, bf_isabella, bf_lily
Mann: bm_daniel, bm_fable, bm_george, bm_lewis
Spansk (ef_*, em_*
Kvinne: ef_dora
Kvinner: em_alex, em_santa
Fransk (ff_*)
Kvinne: ff_siwis
Hindi (hf_*, hm_*)
Kvinne: hf_alpha, hf_beta
Kvinner: hm_omega, hm_psi
Italiensk (if_*, im_*
Kvinne: if_sara
Mann: im_nicola
Japansk (jf_*, jm_*
Kvinne: jf_alpha, jf_gongitsune, jf_nezumi, jf_tebukuro
Mann: jm_kumo
Portugisisk — Brasiliansk (pf_*, pm_*
Kvinne: pf_dora
Mann: pm_alex, pm_santa
Kinesisk — Mandarin (zf_*, zm_*
Kvinne: zf_xiaobei, zf_xiaoni, zf_xiaoxiao, zf_xiaoyi
Mann: zm_yunjian, zm_yunxi, zm_yunxia, zm_yunyang
Kjør speech kokoro --list-voices for å skrive ut hver stemme som er pakket sammen med modellen. Stemme-ID-er er stabile på tvers av utgivelser - bruk den eksakte strengen (f.eks. if_sara) når du ringer --voice fra CLI eller passerer voice: til Swift API.
Arkitektur
Kokoro bruker et 3-trinns CoreML-rørledning. Ingen prøvetakingssløyfe - alle trinnene er ikke-autoregressive fremover passerer med et Swift-side-justeringstrinn mellom trinn 1 og 2.
3-Stage Pipeline
| Stage | Modell | Inngang | Utgang |
|---|---|---|---|
| 1. Varighet | duration.mlmodelc | Phoneme-tokens + stemmeinnbygging + hastighet | Varigheter, prosodifunksjoner, tekstkoding |
| — | Swift justering | Varighet + fase 1 funksjoner | Justerte prosody & tekstfunksjoner |
| 2. Prosodi | prosody.mlmodelc | Justerte prosody funksjoner + stil | F0 (pitch) + støysprediksjoner |
| 3. Destillat | decoder_*.mlmodelc | Justert tekst + F0 + støy + stil | 24 kHz lydbølgeform |
Phoneme Buckets (Duration Model)
Varighetsmodellen bruker opptimerte inngangsformer. Inngangen er polert til den minste bøtte som passer:
| Bucket | Max Phonemes | Bruk kasus |
|---|---|---|
| p16 | 16 | Korte setninger |
| p32 | 32 | Korte setninger |
| p64 | 64 | Middels setninger |
| p128 | 128 | Lange setninger |
Dehydrering Buckets
Fastformede dekodermodeller for forskjellige lydlengder (hver ramme = 600 prøver ved 24 kHz):
| Bucket | Maks rammer | Maks lyd |
|---|---|---|
decoder_5s | 200 | 5.0s |
decoder_10s | 400 | 10,0s |
decoder_15s | 600 | 15.0s |
Krever iOS 18+ / macOS 15+.
Phonemizer
Teksten konverteres til fonem-tokens via en tre-tier-rørledning - alle Apache-2.0 lisensiert, ingen GPL-avhengigheter:
- Dictionary release — Engelsk og Engelsk Uttale ordbøker med heteronym støtte
- Suffiks ifølge — Morfologisk dekomponering for kjente suffikser (f.eks.
- BART G2P — Neural grafeme-til-foneme-spalt ved hjelp av en separat CoreML koder-dekoder-modell for ut-av-vocabulære ord
Custom Uttales
Riktige substantiv utenfor de sendte ordbøker faller gjennom til nivå 3, hvor BART gjetter fra Engelsk staveregler - så ikke-Anglo navn kommer ut feil (Tatiana blir tˈitiəniənə). addPronunciations injiserer word -> IPA poster foran nivå 1:
let tts = try await KokoroTTSModel.fromPretrained()
tts.addPronunciations(["tatiana": "tɑtiˈɑnə"])
Nøkkelene er matchet små bokstaver og må være enkeltord - teksten er delt på tommel og tegnsetting før oppløsning, så en nøkkel som inneholder et rom, bindestrek eller apostrofe blir aldri sett opp. IPA må bruke symboler fra modell vokabular; alt annet er lydløst falt ved tokenisering. Elementer gjelder kun den engelske banen - zh, ja, it, fr, es, pt, og hi Velg dedikerte fonemizere som aldri konsulterer ordbøker. Oppslaget er ulåst, så registrere oppføringer før syntese starter samtidig på samme modell.
Modellvekter
| Komponent | Størrelse | Format |
|---|---|---|
| Varighetsmodell | ~39 MB | .mlmodelc |
| Prosody-modell | ~17 MB | .mlmodelc |
| Destilleringsmodeller (3 bøtter) | ~107 MB hver | .mlmodelc |
| Stemmeinnbyggere (54 stemmer) | ~0.3 MB | JSON (256-dim Float32) |
| G2P koder + dekoder | ~1.5 MB | .mlmodelc |
| Ordbøker + vokab | ~ 6 MB | JSON |
| Totalt (1 dekoder) | ~170 MB |
Ytelse
| Metrisk | Verdi |
|---|---|
| Parametre | 82M |
| Inferensbakstykke | CoreML (Neural Engine) |
| Interferens RTFx | ~0.7 (fastere enn sanntid) |
| Utgangsprøvehastighet | 24 kHz |
| Vektminne | ~170 MB (1 dekoder bøtte) |
I motsetning til Qwen3-TTS og CosyVoice3 som genererer tokens trinn-for-trinn, Kokoro bruker en 3-trinns rørledning uten prøvesløyfe. Alle trinnene er deterministiske fremover passerer.
CLI bruk
speech kokoro "Hello, world!" --voice af_heart --output hello.wav
Alternativer
| Mulighet | Standard | Beskrivelse |
|---|---|---|
<text> | Tekst å syntetisere | |
--voice | af_heart | Navn på stemmeinnstillinger |
--language | en | Språkkode: en, es, fr, hei, det, ja, pt, zh, ko, de |
--output, -o | kokoro_output.wav | Utgang WAV filsti |
--list-voices | Liste over alle tilgjengelige stemmer og utgang | |
--model, -m | HuggingFace modell-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)
Beregn enhetsoverstyring
fromPretrained(computeUnits:) velger hvilken maskinvare som kjører hovedsaken CoreML modell. Standard (.all) lar Core ML foretrekker Neural Engine, som er den raskeste banen på hver støttet enhet. Pass .cpuAndGPU å omgå ANE som en reserve på plattformer der ANE-kompilatoren produserer feil utgang for denne modellen.
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 skal bruke Kokoro
| Bruk kasus | Anbefalt TTS |
|---|---|
| iOS app, lett, batterieffektiv | Kokoro (CoreML, 82M params, ~170 MB) |
| Høyeste kvalitet, streaming, stemmekloning | Qwen3-TTS (MLX, 600M params, ~1.7 GB) |
| Flerspråklig streaming, 9 språk | CosyVoice3 (MLX, 500M params, ~1.2 GB) |
| Full-duplex tale dialog | PersonaPlex (MLX, 7B params, ~5.5 GB) |
Lisens
- Modellvekter: Apache-2.0 (hexgrad/Kokoro-82M)
- CoreML konvertering: Apache-2.0 (aufklarer/Kokoro-82M-CoreML)
- Ordbøker og G2P: Apache-2.0
Qwen3-ASR tale-til-tekst · Parakeet TDT tale-til -tekst ·CosyVoice3 stemmekloning