Awtomatikong salin · Orihinal sa Ingles
Kokoro TTS mga tinig at sampol
Ang Kokoro-82M ay isang magaang, non-autoregressive text-to-speech model batay sa StyleTTS 2 na may isang ISTTNet na vocoder. Ito ay buong tumatakbo sa Neural Engine sa pamamagitan ng CoreML, na gumagawa ng natural na 24 kHz speech mula sa text input sa isang solong pasulong.
Kokoro-82M ay dinisenyo para sa on-device iOS Paglalagay. 82 Mga M parameter (imperyo: אייייליייוייי)80 MB kasama ang 1 timba, INT8), ito ay nakaakma nang maginhawa sa iPhone at iPad. CoreML ang tanong Neural Engine, umaalis GPU libre para sa ibang atas.
Suportadong mga Wika
| Wika | Kodigo | Halimbawa ng mga Tinig |
|---|---|---|
| Tagalog (US) | sa en | af_heart, am_adam, af_sky |
| Tagalog (UK) | sa en | bf_emma, bm_george |
| Kastila | es | ef_dora |
| Pranses | bart | mga ff_siwi |
| Hindi | Hi | hf_alpha, hm_omega |
| Italyano | ang tanong | kung_sara |
| Hapones | ja | jf_alpha, jm_kumo |
| Portuges | pt | pf_dora |
| Tsino | zh | zf_xiaobei, zm_yunjian |
| Aleman | de | dm_martin, df_victoria (mga pakete ng resibo) |
54 preset voices overall.[Talaksan: [language_prefix][gender]_[name] — e.g., af_heart = Amerikanong Babaeng "Heart", if_sara = Italian Female "Sara".
Mga tinig ng Aleman
Ang Aleman ay pinagsisilbihan ng dalawang magkahiwalay na solong-voice na bungkos, mga kiikiri-tt Mapinong-tunes ng Kokoro-82M na may isang 313 MB CoreML modelo kada boses, sa halip na sa pamamagitan ng mga tinig ng multilingwal na bungkos. sunungan ang isa sa pamamagitan ng modelong ID at synthestic na may model ID language: "de". Mga numero, petsa, panahon, salapi at mga daglat ay binabaybay sa aparato, at ang mga salita ay nailalapat sa pamamagitan ng nakabigkis na 50k-word na diksyunaryong Aleman.
| Modelong ID | Tinig |
|---|---|
| Aufklarer/Kokoro-82M-German-Martin-CoreML | dm_martin (lalaki) |
| Aufklarer/Kokoro-82M-German-Victoria-CoreML | df_victoria (babae) |
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.wavMga halimbawa ng boses na may kulay
Maikling MP3 clips na ginawa sa lokal na speech-swift CLI. Ang buong voice-code table ay nananatili sa ibaba para sa copy-passe na gamit.
af_heartam_puckbf_alicebm_georgeef_doraem_alexff_siwishf_alphahm_omegaif_saraim_nicolajf_alphajm_kumopf_dorapm_alexzf_xiaobeizm_yunjianBinabanggit ng mga Kodigo ng Tinig
Ang bawat Kokoro voice ID ay sumusunod sa parehong pattern: isang one-letter panlapi sa wika, isang one-letter kodigo ng kasarian, pagkatapos ay isang diin at ang pangalan ng boses. Gamitin ang mesa sa ibaba upang i-reserba ang isang puntiryang wika sa tamang unlapi.
Banlapi sa wika
| Panlapi | Wika | Locale | Mga Tagapag - alaga ng Hayop |
|---|---|---|---|
a | Tagalog | Amerikano (en-US) | af_, am_ |
b | Tagalog | British (en-GB) | bf_, bm_ |
d | Aleman | (de-DE) | dm_, df_ |
e | Kastila | ( Mga) | ef_, em_ |
f | Pranses | (fr-FR) | ff_ |
h | Hindi | (hi) | hf_, hm_ |
i | Italyano | (ito) | if_, im_ |
j | Hapones | (ja) | jf_, jm_ |
p | Portuges | Brazilian (pt-BR) | pf_, pm_ |
z | Tsino | Mandarin (zh) | zf_, zm_ |
Lahat ng tinig ay sa pamamagitan ng wika
Ingles — American (af_*, am_*
Babae: af_alloy, af_aoede, af_bella, af_heart (Paninirahan), af_jessica, af_kore, af_nicole, af_nova, af_river, af_sarah, af_sky
Lalaki: am_adam, am_echo, am_eric, am_fenrir, am_liam, am_michael, am_onyx, am_puck, am_santa
Ingles — British (bf_*, bm_*
Babae: bf_alice, bf_emma, bf_isabella, bf_lily
Lalaki: bm_daniel, bm_fable, bm_george, bm_lewis
Espanyol (ef_*, em_*
Babae: ef_dora
Lalaki: em_alex, em_santa
Pranses (ff_*)
Babae: ff_siwis
Hindi (hf_*, hm_*
Babae: hf_alpha, hf_beta
Lalaki: hm_omega, hm_psi
Italyano (if_*, im_*
Babae: if_sara
Lalaki: im_nicola
Hapones (jf_*, jm_*
Babae: jf_alpha, jf_gongitsune, jf_nezumi, jf_tebukuro
Lalaki: jm_kumo
Portuges — Brazilian (pf_*, pm_*
Babae: pf_dora
Lalaki: pm_alex, pm_santa
Tsino — Mandarin (zf_*, zm_*
Babae: zf_xiaobei, zf_xiaoni, zf_xiaoxiao, zf_xiaoyi
Lalaki: zm_yunjian, zm_yunxi, zm_yunxia, zm_yunyang
Takbo speech kokoro --list-voices Para maimprenta ang bawat boses na kasalukuyang may kasamang modelo. Ang mga Voice ID ay matatag sa ibayo ng mga release — gamitin ang eksaktong kuwerdas (hal., bre. if_sara) kapag tumatawag --voice mula sa CLI o paglipas voice: sa Swift API.
Arkitektura
Kokoro ay gumagamit ng 3-stage CoreML pipeline. Walang mga sampol na loop – lahat ng mga yugto ay non-autoregressive forward passes na may swift-side na hakbang ng pag-aayos sa pagitan ng mga yugto 1 at 2.
3-Stage Pipeline
| Bagsag | Huwaran | Ilagay | Ilabas |
|---|---|---|---|
| 1. | duration.mlmodelc | Phoneme tokens + voice embending + bilis | Mga Duration, prosody features, text composition |
| — | Swift kahilera | Mga periodion + stage 1 tampok | Aligned prosody & mga tampok ng teksto |
| 2. | prosody.mlmodelc | Ang aligned prosody ay nagtatampok ng + estilo | F0 (pitch) + mga prediksiyong ingay |
| 3. Decoder | decoder_*.mlmodelc | Aligned text + F0 + gahol + estilo | 24 kHz audio waveform |
Phoneme Buckets (Pangalawang Modelo)
Ang modelong ito ay gumagamit ng de - listahang mga input na hugis, at ang mga ito ay may sapin hanggang sa pinakamaliit na timba na angkop:
| Bucket | Max Phonemes | Gamitin ang Kaso |
|---|---|---|
| p16 | 16 | Maikling mga parirala |
| p32 | 32 | Maikling mga pangungusap |
| p64 | 64 | Mga pangungusap na pangmedium |
| p128 | 128 | Mahabang sentensiya |
Decoder Buckets
Nakatakdang-shape decoder na mga modelo para sa iba't ibang sukdulang mga haba ng audio (bawat balangkas = 600 sampol sa 24 kHz):
| Bucket | Max Frames | Max Audio |
|---|---|---|
decoder_5s | 200 | 5.0s |
decoder_10s | 400 | 10.0s |
decoder_15s | 600 | 15.0s |
Hinihiling ng iOS 18+ / macOS 15+.
" Phonemizer "
Ang teksto ay ginagawang phoneme tokens sa pamamagitan ng isang tatlong-tier pipeline — lahat ng Apache-2.0 lisensiyado, walang GPL dependencies:
- Pagtingin sa Dictionary — Mga diksyunaryong pagbigkas sa Ingles at Britanya na may suporta ng heteroniyam
- Paglitaw ng Suffix — Morphological deficit para sa mga kilalang hulapi (hal.g., "-ing", "-ition")
- ART G2P — Neural grapheme-to-phoneme fallback gamit ang hiwalay na CoreML regulator-decoder model para sa mga out-of-vocabulary na salita
Mga Pagtuligsa sa Kaugalian
Ang angkop na mga pangngalan sa labas ng ipinadalang mga diksyunaryo ay pumapatak sa mga andana 3, kung saan ang mga hula ng ART mula sa Tagalog Mga tuntunin sa pagbaybay — kaya ang mga pangalan na hindi-Anglo ay lumalabas na mali (Tatiana ay nagiging tˈitiəniənə). addPronunciations Mga turo word -> IPA Mga entries sa unahan ng andana 1:
let tts = try await KokoroTTSModel.fromPretrained()
tts.addPronunciations(["tatiana": "tɑtiˈɑnə"])
Ang mga susi ay pinagtutugmang mas mababang sukat at dapat na isahang mga salita — ang teksto ay nahahati sa puwang at bantas bago ang resolusyon, kaya ang isang susi na naglalaman ng isang espasyo, hyphen, o apotrophe ay hindi kailanman tinitingnan. Ang IPA ay dapat gumamit ng mga simbolo mula sa modelong talasalitaan; anumang bagay ay tahimik na ibinababa sa pamamagitan ng tokenisasyon. zh, ja, it, fr, es, pt, at hi Pumili ng dedikadong mga phonemizer na hindi kailanman kumokonsulta sa mga diksyunaryo, kaya irehistro muna ang mga entry bago magsimulang tumakbo nang sabay - sabay ang synthesis sa iisang modelo.
Modelong mga Timbang
| Nakikipagtulungan | Laki | Pahiwatig |
|---|---|---|
| Ang modelo ng panahon | °39 MB | .mlmodelc |
| Prosody model | °17 MB | .mlmodelc |
| Decoder models (3 timba) | Ang bawat isa ay °107 MB | .mlmodelc |
| Nag - iimbita ang boses (54 na tinig) | °0.3 MB | JSON (256-dim Float32) |
| G2P EXPOr + decoder | °1.5 MB | .mlmodelc |
| Mga Diksiyonaryo + vocab | °6 MB | HIMALA |
| Kabuuan (1 decoder) | EX170 MB |
Pag - aasikaso
| Masalimuot | Halaga |
|---|---|
| Mga Parameter | 82M |
| Nasusuportahan ang kawalang - galang | CoreML (Neural Engine) |
| Kawalang - Katarungan RTFx | °0.7 (mas mabilis kaysa sa tunay-panahon) |
| Bilis ng sampol sa output | 24 kHz |
| Mabigat na memorya | °170 MB (1 decoder balde) |
Hindi tulad ng Qwen3-TTS at CosyVoice3 na lumilikha ng mga tokens step-by-steep, ang Kokoro ay gumagamit ng isang 3-stage pipeline na walang mga spectick loop. Ang lahat ng mga yugto ay deterministic advances.
Paggamit ng CLI
speech kokoro "Hello, world!" --voice af_heart --output hello.wav
Mga Mapagpipilian
| Mapagpipilian | Pagkawasak | Paglalarawan |
|---|---|---|
<text> | Tekstong Pang - ebolusyon | |
--voice | af_heart | Pangalan ng Tinig na patiunang itinakda |
--language | en | kodigo ng wika: en, es, fr, hi, ito, ja, pt, zh, ko, de |
--output, -o | kokoro_output.wav | Ilabas na WAV file path |
--list-voices | Ilista ang lahat ng magagamit na tinig at labasan | |
--model, -m | HuggingFace model ID |
Mga Halimbawa
# 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)
Kompletong Paglaganap ng Unit
fromPretrained(computeUnits:) Mga pagpipilian kung aling hardware ang nagpapatakbo ng pangunahing modelong CoreML. Ang default (.all) mga hinahayaan Core ML mas gusto ang Neural Engine, na siyang pinakamabilis na daanan sa bawat suportadong aparato. .cpuAndGPU upang maiwasan ang ANE bilang isang fallback sa mga plataporma kung saan ang ANET Treatler ay gumagawa ng maling output para sa modelong ito.
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)
Kung Kailan Gagamitin ang Kokoro
| Gamitin ang Kaso | Inirerekomendang TTS |
|---|---|
| iOS app, lightive, battle-fict | Kokoro (CoreML, 82M params, °170 MB) |
| Ang pinakamataas na kalidad, dumadaloy, voice cloning | Qwen3-TTS (MLX, 600M params, °1.7 GB) |
| Pagdagsa ng mga wika, 9 na wika | CosyVoice3 (MLX, 500M params, °1.2 GB) |
| Buong-duplex na pag-uusap | PersonaPlex (MLX, 7B params, °5.5 GB) |
Lisensiya
- Modelong mga pabigat: Apache-2.0 (Hexgrad/Kokoro-82M)
- CoreML kumbersiyon: Apache-2.0 (aufklarer/Kokoro-82M-CoreML)
- Dictionaries and G2P: Apache-2.0
Qwen3-ASR speech-to-text · Parakeet TDT speech-to-text · CosyVoice3 voice cloning