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.

iOS-Ready

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åkKodkodExempelröster
Engelska (USA)Enaf_heart, am_adam, af_sky
Engelska (Storbritannien)Enbf_emma, bm_george
Spanska spanskaessef_dora
Franska franskaFR FRÅN FRÅFff_siwis
HindiHej Hej Hehejhf_alpha, hm_omega
Italienska ItalienDet ärif_sara
Japansk Japansk Japan JapanskJa ja ja ja jajf_alpha, jm_kumo
PortugisiskaPtPf_dora
Kinesiska kinesiskazhzf_xiaobei, zm_yunjian
Tyska tyskaDedm_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 IDRöst
aufklarer/Kokoro-82M-German-Martin-CoreMLdm_martin (manlig)
aufklarer/Kokoro-82M-German-Victoria-CoreMLdf_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.wav

Utvalda 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_heartAmerikansk kvinna
am_puckAmerikansk man
bf_aliceBrittiska kvinnliga
bm_georgeBrittisk man
ef_doraSpanska kvinnliga
em_alexSpanska man
ff_siwisFransk kvinna
hf_alphaHindi kvinnlig
hm_omegaHindi manlig
if_saraItaliensk kvinna
im_nicolaItaliensk man
jf_alphaJapansk kvinna
jm_kumoJapansk man
pf_doraPortugisiska kvinnliga
pm_alexPortugisiska man
zf_xiaobeiMandarin kvinnlig
zm_yunjianMandarin Man

Voice 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

PrefixSpråkspråkLokaltKöner
aEngelska engelska engelskaAmerikanska (en-US)af_, am_
bEngelska engelska engelskaBrittiska (en-GB)bf_, bm_
dTyska tyska(de-DE)dm_, df_
eSpanska spanska(es)ef_, em_
fFranska franska(Fr-FR)ff_
hHindi(Han)hf_, hm_
iItalienska Italien(det)if_, im_
jJapansk Japansk Japan Japansk(ja)jf_, jm_
pPortugisiskaBrasilianska (pt-BR)pf_, pm_
zKinesiska kinesiskaMandarin (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

Lista röster vid runtime

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

StegModellInputOutput
1. Varaktighetduration.mlmodelcPhoneme tokens + röstinbäddning + hastighetVaraktigheter, prosodiga funktioner, textkodning
—Swift inriktningVaraktigheter + steg 1-funktionerAligned prosody & textfunktioner
2. Prosodyprosody.mlmodelcAligned prosody funktioner + stilF0 (pitch) + bullerprognoser
3. Decoderdecoder_*.mlmodelcAnpassad text + F0 + buller + stil24 kHz ljud vågform

Phoneme Buckets (varaktighetsmodell)

Varaktighetsmodellen använder uppräknade ingångsformer. Inmatningen är vadderad till den minsta hink som passar:

BucketMax PhonemesAnvänd fall
p1616Korta fraser
p3232Korta meningar
p6464Medium meningar
p128128Långa meningar

Decoder Buckets

Fixed-shape-dekodermodeller för olika maximala ljudlängder (varje ram = 600 prover vid 24 kHz):

BucketMax FramesMax Audio
decoder_5s2005.0
decoder_10s40010.0
decoder_15s60015.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:

  1. Dictionary lookup - Amerikanska engelska och brittiska engelska uttalsordböcker med heteronymstöd
  2. Suffix stemming - Morfologisk sönderdelning för kända suffix (t.ex. "-ing", "-tion")
  3. 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

KomponentStorlekFormat
Varaktighetsmodell~39 MBMlmodelc
Prosody modell17 MBMlmodelc
Decoder modeller (3 hink)~ 107 MB varderaMlmodelc
Voice inbäddningar (54 röster)~0.3 MBJSON (256-dim Float32)
G2P kodare + decoder~1.5 MBMlmodelc
Ordböcker + vocab6 MBJSON
Total (1 decoder)~170 MB

Prestanda

MetricVärde
Parametrar82M
Inference backendCoreML (Neural Engine)
Inference RTFx~0.7 (snabbare än realtid)
Output sample rate24 kHz
Viktminne~170 MB (1 decoder bucket)
Icke-autoregressiv

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

AlternativStandardBeskrivning
<text>Text för att syntetisera
--voiceaf_heartRöstförinställt namn
--languageenSpråkkod: en, es, fr, hi, it, ja, pt, zh, ko, de
--output, -okokoro_output.wavUtgång WAV filväg
--list-voicesLista alla tillgängliga röster och exit
--model, -mHuggingFace 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 fallRekommenderas TTS
iOS app, lätt, batterieffektivKokoro (CoreML, 82M param, ~170 MB)
Högsta kvalitet, streaming, röst kloningQwen3-TTS (MLX, 600M param, ~1,7 GB)
Flerspråkig streaming, 9 språkCosyVoice3 (MLX, 500M param, ~1.2 GB)
Full-duplex talad dialogPersonaPlex (MLX, 7B-param, ~5,5 GB)

Licens