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.

iOS-Ready

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åkKode Eksempler på stemmer
Engelsk (USA)i av_heart, am_adam, af_sky
Engelsk (UK)ibf_emma, bm_george
Spanskes Ef_dora
franskfrff_siwis
Hindi Heihf_alfa, hm_omega
Italiensk detif_sara
Japanskjajf_alfa, jm_kumo
Portugisiskptpf_dora
Kinesiskzhzf_xiaobei, zm_yunjian
Tyskdedm_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-IDStemme
aufklarer/Kokoro-82M-German-Martin-CoreMLdm_martin (mannlig)
aufklarer/Kokoro-82M-German-Victoria-CoreMLdf_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.wav

Utvalgte stemmeprøver

Korte MP3 klipp som genereres med den lokale speech-swift CLI. Den fulle stemmekodetabellen forblir under for kopiering-paste bruk.

af_heart Amerikansk kvinne
am_puck Amerikansk mannlig
bf_alice Brittisk kvinne
bm_george Brittisk mannlig
ef_dora Spansk kvinne
em_alex Spansk mannlig
ff_siwis Fransk kvinne
hf_alpha Hindi kvinne
hm_omega Hindi mannlig
if_sara Italiensk kvinne
im_nicola Italiensk mann
jf_alpha Japansk kvinne
jm_kumo Japansk mannlig
pf_dora Portugisisk kvinne
pm_alex Portugisisk mann
zf_xiaobei Mandarin kvinne
zm_yunjian Mandarin mannlig

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åkLocale Kjønn
aEngelsk Amerikansk (en-US)af_, am_
bEngelsk Britisk (en-GB)bf_, bm_
d Tysk(de-DE)dm_, df_
e Spansk(e)ef_, em_
f fransk(fr-FR)ff_
hHindi(hi)hf_, hm_
i Italiensk(det)if_, im_
j Japansk(ja)jf_, jm_
pPortugisisk 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

List stemmer ved kjøring

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. Varighetduration.mlmodelcPhoneme-tokens + stemmeinnbygging + hastighetVarigheter, prosodifunksjoner, tekstkoding
—Swift justeringVarighet + fase 1 funksjoner Justerte prosody & tekstfunksjoner
2. Prosodiprosody.mlmodelc Justerte prosody funksjoner + stilF0 (pitch) + støysprediksjoner
3. Destillatdecoder_*.mlmodelc Justert tekst + F0 + støy + stil24 kHz lydbølgeform

Phoneme Buckets (Duration Model)

Varighetsmodellen bruker opptimerte inngangsformer. Inngangen er polert til den minste bøtte som passer:

BucketMax Phonemes Bruk kasus
p1616 Korte setninger
p3232 Korte setninger
p6464Middels setninger
p128128Lange setninger

Dehydrering Buckets

Fastformede dekodermodeller for forskjellige lydlengder (hver ramme = 600 prøver ved 24 kHz):

BucketMaks rammerMaks lyd
decoder_5s2005.0s
decoder_10s40010,0s
decoder_15s600 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:

  1. Dictionary release — Engelsk og Engelsk Uttale ordbøker med heteronym støtte
  2. Suffiks ifølge — Morfologisk dekomponering for kjente suffikser (f.eks.
  3. 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ørrelseFormat
Varighetsmodell~39 MB.mlmodelc
Prosody-modell~17 MB.mlmodelc
Destilleringsmodeller (3 bøtter)~107 MB hver.mlmodelc
Stemmeinnbyggere (54 stemmer)~0.3 MBJSON (256-dim Float32)
G2P koder + dekoder~1.5 MB.mlmodelc
Ordbøker + vokab~ 6 MBJSON
Totalt (1 dekoder)~170 MB

Ytelse

Metrisk Verdi
Parametre82M
InferensbakstykkeCoreML (Neural Engine)
Interferens RTFx~0.7 (fastere enn sanntid)
Utgangsprøvehastighet24 kHz
Vektminne~170 MB (1 dekoder bøtte)
Ikke-Autoregressiv

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

MulighetStandard Beskrivelse
<text> Tekst å syntetisere
--voiceaf_heart Navn på stemmeinnstillinger
--languageen Språkkode: en, es, fr, hei, det, ja, pt, zh, ko, de
--output, -okokoro_output.wav Utgang WAV filsti
--list-voices Liste over alle tilgjengelige stemmer og utgang
--model, -mHuggingFace 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 kasusAnbefalt TTS
iOS app, lett, batterieffektivKokoro (CoreML, 82M params, ~170 MB)
Høyeste kvalitet, streaming, stemmekloningQwen3-TTS (MLX, 600M params, ~1.7 GB)
Flerspråklig streaming, 9 språkCosyVoice3 (MLX, 500M params, ~1.2 GB)
Full-duplex tale dialogPersonaPlex (MLX, 7B params, ~5.5 GB)

Lisens