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.

iOS- klar

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

SprogKodeEksempel på ord
Engelsk (US)enaf _ heart, am _ adam, af _ sky
Engelsk (UK)enbf _ emma, bm _ george
Spansksef _ dora
Franskfrff _ siwis
Hindihihf _ alpha, hm _ omega
Italienskerif _ sara
Japanskjajf _ alpha, jm _ kumo
Portugisiskptpf _ dora
Kinesiskzhzf _ xiaobei, zm _ yunjian
Tyskdedm _ 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.

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

Udvalgte stemmeprøver

Kort MP3 klip genereret med den lokale speech-swift CLI. Den fulde voice- code tabel forbliver nedenfor for copy- paste brug.

af_heartAmerikansk kvinde
am_puckAmerikansk han
bf_aliceBritisk kvinde
bm_georgeBritisk mand
ef_doraSpanske kvinder
em_alexSpansk han
ff_siwisFransk kvinde
hf_alphaHindikvinde
hm_omegaHindi hankøn
if_saraItaliensk kvinde
im_nicolaItaliensk mand
jf_alphaJapansk kvinde
jm_kumoJapansk mand
pf_doraPortugisisk kvinde
pm_alexPortugisisk mand
zf_xiaobeiMandarin
zm_yunjianMandarin

Stemmekodereference

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æfiksSprogLokalGeneratorer
aEngelskAmerikansk (en- US)af_, am_
bEngelskBritisk (en- GB)bf_, bm_
dTysk(de- DE)dm_, df_
eSpanske)ef_, em_
fFransk(fra - FR)ff_
hHindi(hi)hf_, hm_
iItaliensk(det)if_, im_
jJapanskja)jf_, jm_
pPortugisiskBrasiliansk (pt- BR)pf_, pm_
zKinesiskMandarin (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

Liste over stemmer ved runtime

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

FaseModelInputOutput
1. Varighedduration.mlmodelcPhoneme tokens + stemmeindlejring + hastighedHoldinger, prosodifunktioner, tekstkodning
—Swift justeringHoldinger + fase 1 funktionerJusteret prosody & amp; tekstfunktioner
2. Prosodyprosody.mlmodelcTilpasset prosody- funktioner + stilF0 (pitch) + støjforudsigelser
3. Dekoderdecoder_*.mlmodelcJusteret tekst + F0 + støj + stil24 kHz lydbølgeform

Phoneme Spande (Varighed Model)

Varigheden model bruger opregnet input former. Input er polstret til den mindste spand, der passer:

SpandeMaks. TelefonerBrugstilfælde
p1616Korte sætninger
p3232Korte sætninger
p6464Mellemsætninger
p128128Lange sætninger

Decoder- spande

Fixed- form dekoder modeller for forskellige maksimale lydlængder (hver ramme = 600 prøver ved 24 kHz):

SpandeMaks. rammerMax Audio
decoder_5s2005.0s.
decoder_10s40010.0s
decoder_15s60015.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:

  1. Ordbogsopvisning - US English og British English udtale ordbøger med heteronym støtte
  2. Suffiks, der stammer fra - Morfologisk nedbrydning af kendte suffikser (f.eks. "-ing", "-tion")
  3. 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

KomponentStørrelseFormat
Varighed model~ 39 MB.mlmodelc
Prosodymodel~ 17 MB.mlmodelc
Dekodermodeller (3 spande)~ 107 MB hver.mlmodelc
Stemmeindlejringer (54 stemmer)~ 0,3 MBJSON (256- dim Float32)
G2P encoder + dekoder~ 1,5 MB.mlmodelc
Ordbøger + ordforråd~ 6 MBJSON
I alt (1 dekoder)~ 170 MB

Præstation

MetricVærdi
Parametre82M
InferenskomponentCoreML (Neural Engine)
Inferens RTFx~ 0,7 (hurtigere end realtid)
Udtagningsprøvesats24 kHz
Vægthukommelse~ 170 MB (1 dekoder spand)
Ikke-automatisk regressiv

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

ValgmulighedStandardVarebeskrivelse
<text>Tekst der skal syntetiseres
--voiceaf_heartStemmeforudindstillet navn
--languageenSprogkode: en, es, fr, hi, it, ja, pt, zh, ko, de
--output, -okokoro_output.wavOutput WAV filsti
--list-voicesListe over alle tilgængelige stemmer og udgang
--model, -mHuggingFace-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ældeAnbefalet TTS
iOS app, letvægts, battery- effektivKokoro (CoreML, 82M params, ~ 170 MB)
Højeste kvalitet, streaming, stemme kloningQwen3-TTS (MLX, 600M params, ~ 1.7 GB)
Flersproget streaming, 9 sprogCosyVoice3 (MLX, 500M params, ~ 1.2 GB)
Full-duplex talt dialogPersonaPlex (MLX, 7B params, ~ 5.5 GB)

Licens