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.

iOS-valmiina

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)enaf_heart, am_adam, af_ski
English (UK)enbf_emma, bm_george
espanjaesef_ Dora
ranskafrff_siwis
HindiHei.hf_alfa, hm_omega
italiaseif_sara
japanijajf_alfa, jm_kumo
portugaliptpf_dora
kiinazhzf_xiaobei, zm_yunjian
Saksadedm_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.

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

Esitetyt ääninäytteet

Lyhyt MP3 klipsit, jotka on tuotettu paikallisella speech-swift CLI:llä. Täydellinen äänikooditaulukko pysyy alla kopiotahnan käyttöä varten.

af_heart amerikkalainen naaras
am_puck amerikkalainen mies
bf_alice brittinainen
bm_george British male
ef_dora espanjalainen naaras
em_alex espanjalainen mies
ff_siwis ranskalainen naaras
hf_alpha Hindinaaraat
hm_omega Hindiuros
if_sara Italian naaras
im_nicola Italian mies
jf_alpha japanilainen naaras
jm_kumo japanilainen mies
pf_dora Portuguese women
pm_alex Portuguese male
zf_xiaobei Mandariininaara
zm_yunjian mandariiniuros

Ää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
aFinnish Amerikkalainen (en-US)af_, am_
bFinnish British (en-GB)bf_, bm_
d Saksade-DE)dm_, df_
e espanjae)ef_, em_
f ranska(fr-FR)ff_
hHindih)hf_, hm_
iitalia(i)if_, im_
jjapanija)jf_, jm_
p portugali Brasilia (pt-BR)pf_, pm_
z kiinaMandariini (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

Listaa äänet runtimella

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 MalliSyöte Tuotos
1. Kestoduration.mlmodelc Puhelinpoletit + äänen embedding + nopeusKestoja, prosodisia ominaisuuksia, tekstin koodaus
—Swift lineation Kestot + vaiheen 1 ominaisuudetKohdistetut prosody & tekstiominaisuudet
2. Prosodiaprosody.mlmodelcKohdistetut prosodian ominaisuudet + tyyliF0 (pitch) + meluennusteet
3. Purkajadecoder_*.mlmodelc Tasattu teksti + F0 + melu + tyyli24 kHz:n ääniaaltomuoto

Foneme Buckets (Duration Model)

Kestomallissa käytetään lueteltuja syöttömuotoja. Input on pehmustettu pienimpään kauhaan, joka sopii:

ÄmpäriMax Phonemes Käyttötapa
p1616 Lyhyet lauseet
p3232 Lyhyet lauseet
p6464 Keskipitkät rangaistukset
p128128 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äriMax-kehyksetMax Audio
decoder_5s2005,0
decoder_10s40010,0s
decoder_15s60015,0s

Vaaditaan iOS 18+ / macOS 15+.

Puhelin

Teksti muunnetaan puhelinpoleteiksi kolmiportaisen putken kautta ... kaikki Apache-2.0 lisensoitu, ei GPL-riippuvuuksia:

  1. Dictionary lookup ... ..
  2. Pääte, joka johtuu Morfologinen hajoaminen tunnettujen loppuliitteiden osalta (esim., "-ing," "-tion")
  3. 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 KokoMuoto
Kestomalli~39 Mt.mlmodelc
Prosody-malli~17 Mt.mlmodelc
Purkajamallit (3 kauhaa)~107 Mt kutakin.mlmodelc
Äänen kaiverrukset (54 ääntä)~0,3 MtJSON (256-dim Float32)
G2P kooder + dekooderi~1,5 Mt.mlmodelc
Sanakirjat ja sanakirjat~ 6 MtJSON
Yhteensä (1 dekooderi) ~170 MB

Tulos

Metrinen Arvo
Parametrit82M
PäätelmäCoreML (Neural Engine)
Päätelmä RTFx~0,7 (nopeampi kuin reaaliaikainen)
Otosotosnopeus24 kHz
Painomuisti~170 MB (1 dekooderi kauha)
Ei-autoregressiivinen

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

VaihtoehtoOletus Tavaran kuvaus
<text> Syntetisoitava teksti
--voiceaf_heart Äänen esiasetettu nimi
--languageen Kielikoodi: en, es, fr, hei, it, ja, pt, zh, ko, de
--output, -okokoro_output.wav Tulosta WAV tiedostopolku
--list-voicesListaa kaikki saatavilla olevat äänet ja poistu
--model, -mHuggingFace 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, akkutehokasKokoro (CoreML, 82M paraateja, ~170 MB)
Laadukkain, streaming, äänen kloonausQwen3-TTS (MLX, 600M paraateja, ~1.7 GB)
Monikielinen suoratoisto, 9 kieltäCosyVoice3 (MLX, 500M paraateja, ~1,2 GB)
Täysi duplex-keskusteluPersonaPlex (MLX, 7B paraamit, ~5,5 GB)

Lisenssi