Konekäännös · Englanninkielinen alkuperäinen
Kokoro TTS äänet ja näytteet
Kokoro-82M on kevyt, ei-aggressiivinen teksti-puhe-malli, joka perustuu tyyliinTTS 2 ja jossa on ISTFTFTNet-äänisumutin. Se toimii kokonaan Neural Engine CoreML , joka tuottaa luonnollisen 24 kHz:n puheen tekstisyötteestä yhdellä eteenpäin syötettävällä solalla.
Kokoro-82M on suunniteltu käytettäväksi laitteella iOS Käyttöönotto. 82M parametrit (~80 MB 1 ämpäri INT8), se sopii mukavasti iPhone ja iPad. CoreML toimii Neural Engine, jättäen GPU ilmainen muihin tehtäviin.
Tuetut kielet
| Kieli | Koodi | Esimerkki Äänet |
|---|---|---|
| Finnish (USA) | en | af_heart, am_adam, af_ski |
| English (UK) | en | bf_emma, bm_george |
| espanja | es | ef_ Dora |
| ranska | fr | ff_siwis |
| Hindi | Hei. | hf_alfa, hm_omega |
| italia | se | if_sara |
| japani | ja | jf_alfa, jm_kumo |
| portugali | pt | pf_dora |
| kiina | zh | zf_xiaobei, zm_yunjian |
| Saksa | de | dm_martin, df_victoria (puhepakkaukset) |
54 esiasetettua ääntä yhteensä. Äänen nimityskäytäntö: [language_prefix][gender]_[name] ... esim., af_heart = amerikkalainen nainen "kuusi," if_sara = italialainen nainen "sara."
Saksan äänet
Saksaa palvelee kaksi erillistä yhden äänen nippua. kikiri-tts Kokoro-82M:n hienot sävyt yhdellä 313 MB CoreML-mallilla ääntä kohti, eikä monikielisen paketin äänillä. Lataa yksi mallitunnisteella ja syntetisoimalla language: "de". Numerot, päivämäärät, ajat, valuutta ja lyhenteet on kirjoitettu laitteeseen, ja sanat ratkaista kautta niputettu 50k-sanan saksan sanakirja.
| Malli ID | Ääni |
|---|---|
| aufklarer/Kokoro-82M-German-Martin-CoreML | dm_martin (uros) |
| aufklarer/Kokoro-82M-German-Victoria-CoreML | df_victoria (nainen) |
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.wavEsitetyt ääninäytteet
Lyhyt MP3 klipsit, jotka on tuotettu paikallisella speech-swift CLI:llä. Täydellinen äänikooditaulukko pysyy alla kopiotahnan käyttöä varten.
af_heart am_puck bf_alice bm_george ef_dora em_alex ff_siwis hf_alpha hm_omega if_sara im_nicola jf_alpha jm_kumo pf_dora pm_alex zf_xiaobei zm_yunjian Äänikoodi
Jokainen Kokoro-äänitunnus noudattaa samaa kaavaa: yksi kirjain kielen etuliite, yksi kirjain sukupuolikoodi, sitten alleviivaus ja äänen nimi. Käytä alla olevaa taulukkoa kartoittaa kohdekieli oikea etuliite.
Kielien etuliitetaulukko
| Etuliite | Kieli | Paikallinen | Sukupuolet |
|---|---|---|---|
a | Finnish | Amerikkalainen (en-US) | af_, am_ |
b | Finnish | British (en-GB) | bf_, bm_ |
d | Saksa | de-DE) | dm_, df_ |
e | espanja | e) | ef_, em_ |
f | ranska | (fr-FR) | ff_ |
h | Hindi | h) | hf_, hm_ |
i | italia | (i) | if_, im_ |
j | japani | ja) | jf_, jm_ |
p | portugali | Brasilia (pt-BR) | pf_, pm_ |
z | kiina | Mandariini (zh) | zf_, zm_ |
Kaikki äänet kielellä
... Amerikkalainen (af_*, am_*)
Naiset: af_alloy, af_aoede, af_bella, af_heart (oletus), af_jessica, af_kore, af_nicole, af_nova, af_river, af_sarah, af_sky
Mies: am_adam, am_echo, am_eric, am_fenrir, am_liam, am_michael, am_onyx, am_puck, am_santa
Englanti ... .. britti (bf_*, bm_*)
Naiset: bf_alice, bf_emma, bf_isabella, bf_lily
Mies: bm_daniel, bm_fable, bm_george, bm_lewis
Espanja (ef_*, em_*)
Nainen: ef_dora
Male: em_alex, em_santa
Ranska (ff_*)
Nainen: ff_siwis
Hindi (hf_*, hm_*)
Naiset: hf_alpha, hf_beta
Mies: hm_omega, hm_psi
Italia (if_*, im_*)
Nainen: if_sara
Male: im_nicola
Japani (jf_*, jm_*)
Naiset: jf_alpha, jf_gongitsune, jf_nezumi, jf_tebukuro
Mies: jm_kumo
Portugalin brasilia (pf_*, pm_*)
Nainen: pf_dora
Male: pm_alex, pm_santa
Kiinan mandariini (zf_*, zm_*)
Naiset: zf_xiaobei, zf_xiaoni, zf_xiaoxiao, zf_xiaoyi
Mies: zm_yunjian, zm_yunxi, zm_yunxia, zm_yunyang
Juokse speech kokoro --list-voices tulostaa jokainen ääni tällä hetkellä mukana mallin. Äänitunnisteet ovat vakaat kaikissa julkaisuissa . Käytä tarkkaa merkkijonoa (esim., if_sara) soittaessaan --voice CLI:stä tai ohituksesta voice: Swift API:lle.
Arkkitehtuuri
Kokoro käyttää 3-vaihe CoreML -putkea. Ei näytteenottosilmukkaa . Kaikki vaiheet ovat ei-autoreaggressiivisia eteenpäin kulkee Swift-side linjaus vaiheiden 1 ja 2 välillä.
3-vaiheputki
| Vaihe | Malli | Syöte | Tuotos |
|---|---|---|---|
| 1. Kesto | duration.mlmodelc | Puhelinpoletit + äänen embedding + nopeus | Kestoja, prosodisia ominaisuuksia, tekstin koodaus |
| — | Swift lineation | Kestot + vaiheen 1 ominaisuudet | Kohdistetut prosody & tekstiominaisuudet |
| 2. Prosodia | prosody.mlmodelc | Kohdistetut prosodian ominaisuudet + tyyli | F0 (pitch) + meluennusteet |
| 3. Purkaja | decoder_*.mlmodelc | Tasattu teksti + F0 + melu + tyyli | 24 kHz:n ääniaaltomuoto |
Foneme Buckets (Duration Model)
Kestomallissa käytetään lueteltuja syöttömuotoja. Input on pehmustettu pienimpään kauhaan, joka sopii:
| Ämpäri | Max Phonemes | Käyttötapa |
|---|---|---|
| p16 | 16 | Lyhyet lauseet |
| p32 | 32 | Lyhyet lauseet |
| p64 | 64 | Keskipitkät rangaistukset |
| p128 | 128 | Pitkät rangaistukset |
Purkaja Ämpärit
Kiinteämuotoiset dekooderimallit, joissa äänen enimmäispituudet ovat eri (kukin kehys = 600 näytettä 24 kHz:n kohdalla):
| Ämpäri | Max-kehykset | Max Audio |
|---|---|---|
decoder_5s | 200 | 5,0 |
decoder_10s | 400 | 10,0s |
decoder_15s | 600 | 15,0s |
Vaaditaan iOS 18+ / macOS 15+.
Puhelin
Teksti muunnetaan puhelinpoleteiksi kolmiportaisen putken kautta ... kaikki Apache-2.0 lisensoitu, ei GPL-riippuvuuksia:
- Dictionary lookup ... ..
- Pääte, joka johtuu Morfologinen hajoaminen tunnettujen loppuliitteiden osalta (esim., "-ing," "-tion")
- BART G2P Neural grapheme-to-phone-phoneme varalla käyttäen erillistä CoreML kooder-dekooderi malli out-of-vocabulary sanoja
Omat pronunciat
Lähetettyjen sanakirjojen ulkopuolella olevat oikeat substantiivit siirtyvät 3-tasolle, josta BART arvaa mistä Finnish kirjoitustapa säännöt ... joten ei-Anglo nimet tulevat ulos väärin (Tatiana muuttuu tˈitiəniənə). addPronunciations ruiskeet word -> IPA kohdat ennen 1-tasoa:
let tts = try await KokoroTTSModel.fromPretrained()
tts.addPronunciations(["tatiana": "tɑtiˈɑnə"])
Avaimet on sovitettu pienempiin ja niiden on oltava vain yksi sana . Teksti on jaettu valkaisemalla ja välimerkki ennen resoluutiota, joten avain, joka sisältää tilan, väliviivan tai apostrophen, ei ole koskaan katsonut ylös. IPA:n on käytettävä symbolia mallisanastosta; kaikki muu on hiljaa pudotettu tunnusmerkistöllä. Merkit koskevat vain englanninkielistä polkua . zh, ja, it, fr, es, pt, hi Valitse omistettu puhelinmizerit, jotka eivät koskaan kuule sanakirjoja. Etsi on avattu, joten rekisteröi merkinnät ennen kuin synteesi alkaa toimia samanaikaisesti samassa mallissa.
Mallin painot
| Osa | Koko | Muoto |
|---|---|---|
| Kestomalli | ~39 Mt | .mlmodelc |
| Prosody-malli | ~17 Mt | .mlmodelc |
| Purkajamallit (3 kauhaa) | ~107 Mt kutakin | .mlmodelc |
| Äänen kaiverrukset (54 ääntä) | ~0,3 Mt | JSON (256-dim Float32) |
| G2P kooder + dekooderi | ~1,5 Mt | .mlmodelc |
| Sanakirjat ja sanakirjat | ~ 6 Mt | JSON |
| Yhteensä (1 dekooderi) | ~170 MB |
Tulos
| Metrinen | Arvo |
|---|---|
| Parametrit | 82M |
| Päätelmä | CoreML (Neural Engine) |
| Päätelmä RTFx | ~0,7 (nopeampi kuin reaaliaikainen) |
| Otosotosnopeus | 24 kHz |
| Painomuisti | ~170 MB (1 dekooderi kauha) |
Toisin kuin Qwen3-TTS ja CosyVoice3, jotka tuottavat kuponkia askel askeleelta, Kokoro käyttää 3-vaiheista putkistoa ilman näytteenottosilmukkaa. Kaikki vaiheet ovat deterministisia eteenpäin kulkee.
CLI-käyttö
speech kokoro "Hello, world!" --voice af_heart --output hello.wav
Valinnat
| Vaihtoehto | Oletus | Tavaran kuvaus |
|---|---|---|
<text> | Syntetisoitava teksti | |
--voice | af_heart | Äänen esiasetettu nimi |
--language | en | Kielikoodi: en, es, fr, hei, it, ja, pt, zh, ko, de |
--output, -o | kokoro_output.wav | Tulosta WAV tiedostopolku |
--list-voices | Listaa kaikki saatavilla olevat äänet ja poistu | |
--model, -m | HuggingFace malli ID |
Esimerkit
# 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)
Tietokoneyksikön ohitus
fromPretrained(computeUnits:) valitsee, mikä laitteisto toimii pää- CoreML -mallissa. Oletusarvo (.all) antaa Core ML -standardin mieluummin Neural Engine -mallin, joka on nopein polku kaikissa tuetuissa laitteissa. Pakota .cpuAndGPU ohittaaksesi ANE-järjestelmän varalla alustoilla, joissa ANE-kääntäjä tuottaa virheellisen tulostuksen.
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)
Kun käytät Kokoro
| Käyttötapa | Suositeltu TTS |
|---|---|
| iOS sovellus, kevyt, akkutehokas | Kokoro (CoreML, 82M paraateja, ~170 MB) |
| Laadukkain, streaming, äänen kloonaus | Qwen3-TTS (MLX, 600M paraateja, ~1.7 GB) |
| Monikielinen suoratoisto, 9 kieltä | CosyVoice3 (MLX, 500M paraateja, ~1,2 GB) |
| Täysi duplex-keskustelu | PersonaPlex (MLX, 7B paraamit, ~5,5 GB) |
Lisenssi
- Mallin painot: Apache-2.0 (hexgrad/Kokoro-82M)
- CoreML muuntaminen: Apache-2.0 (aufklarer/Kokoro-82M-CoreML)
- Sanakirjat ja G2P: Apache-2.0