Automatische vertaling · Engels origineel

Kokoro TTS stemmen en monsters

Kokoro-82M is een lichtgewicht, niet-autoregressief tekst-naar-spraakmodel op basis van StyleTTS 2 met een ISTFTNet vocoder. Het draait volledig op de Neural Engine via CoreML, waardoor natuurlijke 24 kHz spraak uit tekstinvoer in één enkele vooruitstrevende pas wordt geproduceerd.

iOS-klaar

Kokoro-82M is ontworpen voor on-device iOS implementatie. Bij 82M-parameters (~80 MB met 1 emmer, INT8) past het comfortabel op iPhone en iPad. CoreML draait op de Neural Engine, waardoor de GPU vrij is voor andere taken.

Ondersteunde talen

Taal Rubriek Voorbeeld Stemmen
Engels (US) nl af_heart, am_adam, af_sky
Engels (UK) nlbf_emma, bm_george
Spaansesef_dora
Fransfrff_siwis
HindiHallo.hf_alpha,hm_omega
Italiaans hetif_sara
Japansjajf_alfa, jm_kumo
Portugeesptpf_dora
Chineeszhzf_xiaobei, zm_yunjian
Duitsdedm_martin, df_victoria (voice packs)

54 preset voices totaal. Voicename conventie: [language_prefix][gender]_[name] Zo bijvoorbeeld, af_heart = American Female "Hart," if_sara = Italiaanse vrouw "Sara."

Duitse stemmen

Het Duits wordt bediend door twee afzonderlijke single-voice bundels, kikiri-tts fijne tunes van Kokoro-82M met één 313 MB CoreML model per stem, in plaats van door stemmen van de meertalige bundel. Laad één op model-ID en synthesizer met language: "de". Getallen, data, tijden, valuta en afkortingen worden gespeld op het apparaat, en woorden worden opgelost via het gebundelde 50k-woord Duits woordenboek.

Model-ID Stem
aufklarer/Kokoro-82M-German-Martin-CoreMLdm_martin (mannelijk)
aufklarer/Kokoro-82M-German-Victoria-CoreMLdf_victoria (vrouwelijk)
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

Uitgelichte stemmonsters

Korte MP3 clips gegenereerd met de lokale speech-swift CLI. De volledige voice-code tabel blijft hieronder voor kopieer-plakken.

af_heart Amerikaanse vrouw
am_puck Amerikaanse man
bf_alice Britse vrouw
bm_george Britse man
ef_dora Spaanse vrouw
em_alex Spaanse man
ff_siwis Franse vrouw
hf_alpha Hindi-vrouw
hm_omega Hindi-mannetje
if_sara Italiaanse vrouw
im_nicola Italiaanse man
jf_alpha Japanse vrouw
jm_kumo Japanse man
pf_dora Portugese vrouw
pm_alex Portugees mannetje
zf_xiaobei Mandarijn vrouwtje
zm_yunjian Mandarijnmannetje

Referentie stemcodes

Elke Kokoro spraak-ID volgt hetzelfde patroon: een éénletter taalvoorvoegsel, een éénletter- gendercode, dan een underscore en de spraaknaam. Gebruik de onderstaande tabel om een doeltaal naar het juiste voorvoegsel te brengen.

Taalvoorvoegseltabel

VoorvoegselTaalLokaal Geslacht
a Engels Amerikaans (en-VS)af_, am_
b Engels Brits (en-GB)bf_, bm_
d DuitsDE-DEdm_, df_
e Spaanse)ef_, em_
f Frans(FR-fr)ff_
hHindih)hf_, hm_
i Italiaans(it)if_, im_
jJapansja)jf_, jm_
p Portugees Braziliaans (PT-BR)pf_, pm_
z ChineesMandarijn (zh)zf_, zm_

Alle stemmen per taal

Engels › American (af_*, am_*

Vrouwelijk: af_alloy, af_aoede, af_bella, af_heart (standaard), af_jessica, af_kore, af_nicole, af_nova, af_river, af_sarah, af_sky
Man: am_adam, am_echo, am_eric, am_fenrir, am_liam, am_michael, am_onyx, am_puck, am_santa

Engels: Brits (bf_*, bm_*

Vrouwelijk: bf_alice, bf_emma, bf_isabella, bf_lily
Man: bm_daniel, bm_fable, bm_george, bm_lewis

Spaans (ef_*, em_*)

Female: ef_dora
Man: em_alex, em_santa

Frans (ff_*)

Vrouw: ff_siwis

Hindi (hf_*, hm_*)

Vrouwelijk: hf_alpha, hf_beta
Man: hm_omega, hm_psi

Italiaans (if_*, im_*)

Female: if_sara
Man: im_nicola

Japans (jf_*, jm_*)

Vrouwelijk: jf_alpha, jf_gongitsune, jf_nezumi, jf_tebukuro
Man: jm_kumo

Portugees . . Braziliaans (pf_*, pm_*

Female: pf_dora
Man: pm_alex, pm_santa

Chinees Mandarijn (zf_*, zm_*)

Vrouwelijk: zf_xiaobei, zf_xiaoni, zf_xiaoxiao, zf_xiaoyi
Man: zm_yunjian, zm_yunxi, zm_yunxia, zm_yunyang

Lijst met stemmen op runtime

Voer speech kokoro --list-voices uit om elke stem die momenteel met het model is gebundeld af te drukken. Voice ID's zijn stabiel over releases heen. Gebruik de exacte string (bijv. if_sara) bij het aanroepen van --voice van de CLI of het doorgeven van voice: naar de Swift API.

Architectuur

Kokoro maakt gebruik van een 3-traps CoreML pijpleiding. Geen bemonsteringslus . Alle fasen zijn niet-autoregressief voorwaarts-passen met een Swift-side uitlijningstap tussen de fasen 1 en 2.

3-Stage Pijpleiding

FaseModel Invoer Uitvoer
1. Duurduration.mlmodelc Telefoontekens + spraakinbedding + snelheid Duur, prosody-functies, tekstcodering
—Swift uitlijning Duur + fase 1 kenmerken Uitgelijnde prosody & tekstfuncties
2. Prosodyprosody.mlmodelc Uitgelijnde prosody features + stijlF0 (pitch) + ruisvoorspellingen
3. Decoderdecoder_*.mlmodelc Uitgelijnde tekst + F0 + ruis + stijl24 kHz audiogolfvorm

Telefoonemmers (duurmodel)

Het duurmodel maakt gebruik van opsommige invoervormen. De invoer wordt opgevuld aan de kleinste emmer die past:

EmmerMax PhonemesGeval gebruiken
p1616 Korte zinnen
p3232 Korte zinnen
p6464 Middelgrote zinnen
p128128Lange zinnen

Decoderemmers

Decodermodellen met vaste vorm voor verschillende maximale audiolengtes (elke frame = 600 samples op 24 kHz):

EmmerMax framesMax Audio
decoder_5s2005.0s
decoder_10s400 10,0'
decoder_15s60015.0s

Vereist iOS 18+ / macOS 15+.

Telefoonmizer

Tekst wordt omgezet in fome tokens via een drie-tier pipeline, alle Apache-2.0 gelicentieerd, geen GPL afhankelijkheden:

  1. Dictionary lookup
  2. Geschiedenis die afremt • Morfologische ontleding voor bekende achtervoegsels (bv. "-ing," "-tion")
  3. BART G2P De grafeme-to-phone-fallback van de Neurale grafe-to-foneme met behulp van een afzonderlijk CoreML encoder-decoder model voor woorden buiten de woorden

Aangepaste uitspraak

Eigen naamwoorden buiten de verzonden woordenboeken vallen door naar tier 3, waar BART gokt van Engels spelling regels, dus niet-Anglo namen komen er verkeerd uit (Tatiana wordt tˈitiəniənə). addPronunciations injecteert word -> IPA ingangen vóór niveau 1:

let tts = try await KokoroTTSModel.fromPretrained()
tts.addPronunciations(["tatiana": "tɑtiˈɑnə"])

Sleutels zijn gematched met kleine letters en moeten enkele woorden zijn . De tekst wordt gesplitst op witruimte en interpunctie vóór resolutie, dus een sleutel met een spatie, koppelteken, of apostrof wordt nooit opgezocht. IPA moet symbolen uit het model woordenschat gebruiken; iets anders wordt stilletjes gedropt bij tokenization. Inzendingen zijn alleen van toepassing op het Engelse pad. zh, ja, it, fr, es, pten hi selecteer dedicated phonemizers die nooit de woordenboeken raadplegen. De lookup is ontgrendeld, dus register entries voordat synthese begint gelijktijdig te draaien op hetzelfde model.

Modelgewichten

Onderdeel GrootteFormaat
Duurmodel~39 MB.mlmodelc
Prosody model17 MB.mlmodelc
Decodermodellen (3 emmers)~107 MB elk.mlmodelc
Voice inbeddingen (54 stemmen)~0,3 MBJSON (256-dim Float32)
G2P encoder + decoder~1,5 MB.mlmodelc
Woordenboeken + vocab~6 MBJSON
Totaal (1 decoder)~170 MB

Prestaties

Metrisch Waarde
Parameters82M
InferentiebackendCoreML (Neural Engine)
Interferentie RTFx~0,7 (sneller dan real-time)
Uitvoermonstersnelheid24 kHz
Gewichtsgeheugen~170 MB (1 decoderemmer)
Niet-autoregressief

In tegenstelling tot Qwen3-TTS en CosyVoice3 die tekens stap voor stap genereren, maakt Kokoro gebruik van een 3-traps pijpleiding zonder bemonsteringslus. Alle stadia zijn deterministisch vooruitstrevende passen.

CLI-gebruik

speech kokoro "Hello, world!" --voice af_heart --output hello.wav

Opties

Optie Standaard Omschrijving
<text>Te synthetiseren tekst
--voiceaf_heartVoice preset name
--languageenTaalcode: en, es, fr, hi, it, ja, pt, zh, ko, de
--output, -okokoro_output.wav Uitvoer WAV bestandspad
--list-voices Alle beschikbare stemmen tonen en afsluiten
--model, -mHuggingFace model ID

Voorbeelden

# 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)

Eenheid overschrijvenComment

fromPretrained(computeUnits:) selecteert welke hardware het hoofdmodel CoreML draait. De standaard (.all) laat Core ML de voorkeur geven aan Neural Engine, wat het snelste pad is op elk ondersteund apparaat. Pas .cpuAndGPU om de ANE te omzeilen als een fallback op platforms waar de ANe compiler een onjuiste uitvoer voor dit model produceert.

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)

Wanneer Kokoro gebruiken

Geval gebruiken Aanbevolen TTS
iOS app, lichtgewicht, batterij-efficiëntKokoro (CoreML, 82M params, ~170 MB)
Hoogste kwaliteit, streaming, stemklonenQwen3-TTS (MLX, 600M-params, ~1,7 GB)
Meertalige streaming, 9 talenCosyVoice3 (MLX, 500M params, ~1,2 GB)
Volledig duplex gesproken dialoogPersonaPlex (MLX, 7B params, ~5,5 GB)

Licentie