Traducere automată · Originalul în engleză

Kokoro TTS voci și eșantioane

Kokoro-82M este un model de text-la-discurs ușor, non-autoregresiv bazat pe StyleTTS 2 cu un VOcodor ISTFTNet. Acesta rulează în întregime pe Neural Engine prin CoreML, producând vorbire naturală 24 kHz de la intrare text într-o singură trecere înainte.

iOS- Gata

Kokoro-82M este conceput pentru o aplicație iOS. La parametrii 82M (~80 MB cu 1 găleată, INT8), se potrivește confortabil pe iPad și iPad. CoreML rulează pe Neural Engine, lăsând GPU gratuit pentru alte sarcini.

Limbi acceptate

Limba Cod Exemplu Voci
Engleză (SUA)toaf_heart, am_adam, af_sky
Engleză (UK)tobf_emma, bm_ George
Spaniolăesef_dora
Francezăfff_siwis
Hindi Bună.hf_alfa, hm_omega
Italiană- Da.if_sara
Japonezădajf_alfa, jm_kumo
Portughezăptpf_dora
ChinezăZhzf_xiaobei, zm_yunjian
Germanădedm_martin, df_victoria (pachete vocale)

54 voci preset total. Convenție de denumire vocală: [language_prefix][gender]_[name] de ex., af_heart = American Feminin "Heart," if_sara = Italian Female "Sara."

Voci germane

Germana este deservită de două pachete separate cu o singură voce, kikiri-ts fine-tunes de Kokoro-82M cu un model de 313 MB CoreML per voce, mai degrabă decât de vocile grupului multilingv. Încarcă unul după modelul ID și sintetizează cu language: "de". Numere, date, ori, valută și abrevieri sunt scrise pe dispozitiv, iar cuvintele se rezolvă prin dicționarul german de 50k-cuvântul grupat.

Model de identificareVoce
aufklarer/Kokoro-82M-German-Martin-CoreMLdm_martin (masculin)
aufklater/Kokoro-82M-German-Victoria-CoreMLdf_victoria (femeie)
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

Mostre de voce recomandate

Scurtă MP3 clipuri generate cu discoteca locală speech-swift CLI. Tabelul complet cu codul vocal rămâne dedesubt pentru utilizarea pastei de copiere.

af_heart american feminin
am_puckmasculin american
bf_alice Femeie britanică
bm_georgeBritish male
ef_doraFemeie spaniolă
em_alex Bărbat spaniol
ff_siwisFemeie franceză
hf_alpha Hindi femelă
hm_omegaHindi male
if_saraFemeie italiană
im_nicolaMasculin italian
jf_alpha femelă japoneză
jm_kumo Masculin japonez
pf_dora Portugalie femelă
pm_alex Bărbat portughez
zf_xiaobeiMandarină femelă
zm_yunjianMandarină de sex masculin

Coduri vocale de referință

Fiecare ID de voce Kokoro urmează același model: o singură literă prefix limbă, o singură literă Codul de gen, apoi un accent și numele vocii. Utilizați tabelul de mai jos pentru a cartografia un limbaj țintă pentru prefixul corect.

Tabel prefix limbă

Prefix LimbaLocalizeazăSexuri
a EnglezăAmerican (en-US)af_, am_
b Engleză Britanică (en-GB)bf_, bm_
dGermană(de-DE)dm_, df_
eSpaniolă(s)ef_, em_
f Franceză(fr-FR)ff_
hHindi(Hi)hf_, hm_
i Italiană(t)if_, im_
jJaponeză(ja)jf_, jm_
pPortugheză Braziliană (pt-BR)pf_, pm_
z ChinezăMandarină (zh)zf_, zm_

Toate vocile după limbă

Engleză ا American (af_*, am_*

Femeie: af_alloy, af_aoede, af_bella, af_heart (default); af_jessica, af_kore, af_nicole, af_nova, af_river, af_sarah, af_sky
Bărbat: am_adam, am_echo, am_eric, am_fenrir, am_liam, am_michael, am_onyx, am_puck, am_santa

Engleză ا Britanică (bf_*, bm_*

Femeie: bf_alice, bf_emma, bf_isabella, bf_lily
Bărbat: bm_daniel, bm_fable, bm_george, bm_lewis

Spaniolă (ef_*, em_*)

Female: ef_dora
Male: em_alex, em_santa

Franceză (ff_*)

Female: ff_siwis

Hindi (hf_*, hm_*)

Femeie: hf_alpha, hf_beta
Bărbat: hm_omega, hm_psi

Italian (if_*, im_*

Female: if_sara
Male: im_nicola

Japoneză (jf_*, jm_*

Femeie: jf_alpha, jf_gongitsune, jf_nezumi, jf_tebukuro
Bărbat: jm_kumo

Portugheză ا Braziliană (pf_*, pm_*)

Female: pf_dora
Male: pm_alex, pm_santa

Chinezesc bază (zf_*, zm_*

Femeie: zf_xiaobei, zf_xiaoni, zf_xiaoxiao, zf_xiaoyi
Bărbat: zm_yunjian, zm_yunxi, zm_yunxia, zm_yunyang

Lista vocilor la termen

Rulați speech kokoro --list-voices pentru a imprima fiecare voce în prezent închegată cu modelul. ID-urile vocale sunt stabile pe toate lansările . Utilizați șirul exact (de exemplu, if_sara) atunci când apelați --voice de la CLI sau care trece voice: la Swift API.

Arhitectură

Kokoro a 3-stage CoreML conducta. Nici o buclă de prelevare a probelor bază nu sunt permise înainte non-autoregresive cu un pas de aliniere Swift-side între etape 1 şi 2.

Conductă cu 3-stare

EtapeModel IntrareIeșire
1. Durataduration.mlmodelcJetoane telefonice + incorporarea vocii + viteza Durata, caracteristicile prozodie, codificarea textului
— Swift aliniere Durata + caracteristicile etapei 1 Caracteristici de prosodie & text aliniate
2. Prosodieprosody.mlmodelc Caracteristici de prozodie aliniate + stilF0 (pitch) + predicții privind zgomotul
3. Decodordecoder_*.mlmodelcText aliniat + F0 + zgomot + stil24 kHz formă audio de undă

Telefonează-mi Buckets (Modelul de Duraţie)

Modelul de durată utilizează forme de intrare enumerate. Intrarea este capitonată la cea mai mică găleată care se potrivește:

GăleatăMax Phonemes Folosește cazul
p1616Fraze scurte
p3232Propoziții scurte
p6464Propoziții medii
p128128Propoziții lungi

Găleți de decodor

Modele de decodor cu model fix pentru lungimi audio maxime diferite (fiecare cadru = 600 de eșantioane la 24 kHz):

GăleatăRame MaxMax Audio
decoder_5s2005.0s
decoder_10s40010.0s
decoder_15s60015,0

Necesită iOS 18+ / macOS 15+.

Telefonizator

Textul este convertit în jetoane foneme prin intermediul unei conducte de trei niveluri, toate Apache-2.0 licențiat, fără dependențe GPL:

  1. Acţionare de căutare în limba engleză şi engleză cu suport heteronim
  2. Suffix rezultat
  3. BART G2P bază de date pentru date neuronale, utilizând un model separat CoreML decodor-decodor pentru cuvinte out-of-vocabular

Pronunții personalizate

Substantivele adecvate din afara dicționarelor expediate cad până la nivelul 3, de unde presupune BART Engleză reguli de ortografie bază astfel încât numele non-Anglo ies greșit (Tatiana devine tˈitiəniənə). addPronunciations injecţii word -> IPA intrările înainte de nivelul 1:

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

Cheile sunt egalate cu cele inferioare și trebuie să fie un singur cuvânt textul este împărțit pe whitespace și punctuație înainte de rezoluție, astfel încât o cheie care conține un spațiu, hyphen, sau apostrophe nu este niciodată privit în sus. IPA trebuie să utilizeze simboluri din vocabularul model; orice altceva este scăzut în tăcere la tokenizare. zh, ja, it, fr, es, pt, și hi selectați telefoane dedicate care nu consultă dicționarele. Căutarea este deblocată, astfel încât să înregistreze intrările înainte de sinteză începe să ruleze concomitent pe același model.

Greutatea modelului

ComponentăDimensiuneFormat
Model de durată~39 MO.mlmodelc
Model Prosody~17 MO.mlmodelc
Modele de decodor (3 găleți)~107 MO fiecare.mlmodelc
Încorporarea vocii (54 de voci)~0.3 MOJSON (256-dim Float32)
G2P codor + decodor~1,5 MO.mlmodelc
Dictionare + vocab~6 MOJSON
Total (1 decodor) ~170 MB

Performanță

Metrică Valoare
Parametrii82M
Suport de inferențăCoreML (Neural Engine)
Inference RTFx~0.7 (mai rapid decât în timp real)
Rata eșantionului de ieșire24 kHz
Memorie greutate~170 MB (1 găleată de decodor)
Neautoregresive

Spre deosebire de Qwen3-TTS și CosyVoice3 care generează jetoane pas cu pas, Kokoro utilizează o conductă în 3 etape fără buclă de eșantionare. Toate etapele sunt pase forward deterministice.

Utilizarea CLI

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

Opțiuni

OpțiuneImplicit Descriere
<text>Text de sintetizat
--voiceaf_heart Numele de prefix vocal
--languageen Codul lingvistic: en, es, fr, hi, it, ja, pt, zh, ko, de
--output, -okokoro_output.wavIeșire WAV calea fișierului
--list-voicesEnumeră toate vocile disponibile și ieșirea
--model, -mHuggingFace model ID

Exemple

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

Suprascrie unitatea de calcul

fromPretrained(computeUnits:) alege care hardware ruleaza modelul principal CoreML. Implicit (.all) permite Core ML preferă Neural Engine, care este cea mai rapidă cale pe fiecare dispozitiv sprijinit. .cpuAndGPU să ocolească ANE ca o rezervă pe platforme în care compilatorul ANE produce o ieșire incorectă pentru acest 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)

Când se utilizează Kokoro

Folosește cazulRecomandat TTS
iOS aplicaţie, uşoară, eficientă din punct de vedere al baterieiKokoro (CoreML, 82M params, ~170 MB)
Cea mai înaltă calitate, streaming, clonarea vociiQwen3-TTS (MLX, 600M params, ~1.7 GB)
Streaming multilingv, 9 limbiCosyVoice3 (MLX, 500M params, ~1.2 GB)
Dialog vorbit complet-duplexPersonaPlex (MLX, 7B params, ~5.5 GB)

Licență