Terjemahan mesin · Versi asli bahasa Inggris

Kokoro TTS suara dan sampel

Kokoro-82M adalah kelas ringan, bukan-autoregresif dari teks ke-bahasa model berdasarkan StyleTTS 2 dengan vocoder ISTFTNet. Ini berjalan sepenuhnya pada Neural Engine via CoreML, menghasilkan alam 24 pidato kHz dari masukan teks dalam satu tahap ke depan.

iOS-Ready

Kokoro-82M dirancang untuk on- perangkat iOS penyebaran. 82Parameter M (~80 MB dengan 1 ember, INT8), cocok dengan nyaman di iPhone dan iPad. CoreML berjalan pada Neural Engine, meninggalkan GPU bebas untuk tugas lain.

Bahasa Yang Didukung

BahasaKodeContoh Suara
Inggris (AS)enaf _ heart, am _ adam, af _ sky
Inggris (Britania)enbf _ emma, bm _ george
Spanyolesf _ dora
Perancisfrff _ siwi
Hindihihf _ alpha, hm _ omega
Italiaitif _ sara
Jepangjajf _ alpha, jm _ kumo
Portugisptpf _ dora
Cinazhzf _ xiaobei, zm _ yunjian
Jermandedm _ martin, df _ victoria (kotak suara)

54 mempreset suara total. Konvensi penamaan suara: [language_prefix][gender]_[name] - mis., af_heart = Wanita Amerika "Heart", if_sara = Wanita Italia "Sara".

Suara Jerman

Jerman disajikan oleh dua bundel suara terpisah, kikiri- tts fine- lagu dari Kokoro-82M dengan satu 313 MB CoreML model per suara, daripada oleh suara dari bundel multibahasa. Muat satu dengan model ID dan disintesis dengan language: "de"Nomor, tanggal, waktu, mata uang dan singkatan dieja pada perangkat, dan kata-kata menyelesaikan melalui kamus 50k-kata Jerman.

ID ModelSuara
aufklarer / Kokoro-82M-German-Martin-CoreMLdm_martin (Laki-laki)
aufklarer / Kokoro-82M-German-Victoria-CoreMLdf_victoria (perempuan)
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

Sampel suara yang ditampilkan

Singkat MP3 klip yang dihasilkan dengan lokal speech-swift Tabel kode suara penuh tetap di bawah untuk penggunaan paste.

af_heartPerempuan Amerika
am_puckPria Amerika
bf_alicePerempuan Inggris
bm_georgePria Inggris
ef_doraWanita Spanyol
em_alexPria Spanyol
ff_siwisWanita Perancis
hf_alphaHindi perempuan
hm_omegaPria Hindi
if_saraWanita Italia
im_nicolaPria Italia
jf_alphaPerempuan Jepang
jm_kumoPria Jepang
pf_doraPerempuan Portugis
pm_alexLaki-laki Portugis
zf_xiaobeiPerempuan Mandarin
zm_yunjianPria Mandarin

Referensi Kode Suara

Setiap Kokoro ID suara mengikuti pola yang sama: satu huruf awalan bahasa, satu huruf kode gender, kemudian sebuah garis bawah dan nama suara. Gunakan tabel di bawah ini untuk memetakan sebuah bahasa target ke awalan yang benar.

Fax bahasa tabel

AwalanBahasaLocaleGender
aInggrisAmerika (en- US)af_, am_
bInggrisInggris (en- GB)bf_, bm_
dJerman(de- DE)dm_, df_
eSpanyol(es)ef_, em_
fPerancis(fr-FR)ff_
hHindi(Hai)hf_, hm_
iItalia(itu)if_, im_
jJepang(ja)jf_, jm_
pPortugisBrasil (pt-BR)pf_, pm_
zCinaMandarin (zh)zf_, zm_

Semua suara dengan bahasa

Inggris - Amerika (af_*, am_*)

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

Inggrisbf_*, bm_*)

Perempuan: bf_alice, bf_emma, bf_isabella, bf_lily
Pria: bm_daniel, bm_fable, bm_george, bm_lewis

Spanyol (ef_*, em_*)

Perempuan: ef_dora
Pria: em_alex, em_santa

Perancis (ff_*)

Perempuan: ff_siwis

Hindi (hf_*, hm_*)

Perempuan: hf_alpha, hf_beta
Pria: hm_omega, hm_psi

Italia (if_*, im_*)

Perempuan: if_sara
Pria: im_nicola

Jepang (jf_*, jm_*)

Perempuan: jf_alpha, jf_gongitsune, jf_nezumi, jf_tebukuro
Pria: jm_kumo

Portugis - Brasil (pf_*, pm_*)

Perempuan: pf_dora
Pria: pm_alex, pm_santa

Cina - Mandarin (zf_*, zm_*)

Perempuan: zf_xiaobei, zf_xiaoni, zf_xiaoxiao, zf_xiaoyi
Pria: zm_yunjian, zm_yunxi, zm_yunxia, zm_yunyang

Daftar suara pada waktu-jalan

Lari speech kokoro --list-voices untuk mencetak setiap suara yang sedang diacak dengan model. ID suara stabil di seberang rilis - gunakan string yang tepat (misalnya, if_sara) ketika memanggil --voice dari CLI atau lewat voice: ke Swift API.

Arsitektur

Kokoro menggunakan 3-stage CoreML pipeline. Tidak ada loop sampling - semua tahap adalah non-autoregresif maju melewati dengan Swiftt-side alignment langkah antara tahap 1 dan 2.

Baris pipa 3-Tahap

TahapModelMasukanKeluaran
1. Durasiduration.mlmodelcPhoneme token + voice embedding + speedDurasi, fitur palsu, pengkodean teks
—Perataan SwiftDurasi + fitur tahap 1Fitur teks palsu & amp; teralign
2. / Prosody.prosody.mlmodelcGaya sederhana +F0 (pitch) + prediksi kebisingan
3, decoder.decoder_*.mlmodelcTeks Aligned + F0 + noise + styleBentuk gelombang audio 24 kHz

Buket Phoneme (Model Durasi)

Model durasi menggunakan bentuk masukan yang dienumerated. Masukan padded ke ember terkecil yang cocok:

BucketTelepon MaxGunakan Kasus
p1616Frasa pendek
p3232Kalimat pendek
p6464Kalimat medium
p128128Kalimat panjang

Buket Decoder

Model decoder berbentuk fixed- untuk panjang audio maksimum yang berbeda (setiap frame = 600 contoh di 24 kHz):

BucketMax FramesAudio Max
decoder_5s2005.0s
decoder_10s40010.0s
decoder_15s60015.0s

Memerlukan iOS 18+ / macOS 15+.

Phonemizer

Teks dikonversi ke foneme token melalui pipa tiga tingkat - semua Apache-2.0 berlisensi, tidak ada ketergantungan GPL:

  1. Pencarian dialog - US English and British English pengucapan kamus dengan dukungan heteronym
  2. Stemming suffix - Dekomposisi morfologi untuk akhiran yang dikenal (mis., "-ing", "-tion")
  3. BART G2P - Neural grapheme -to -foneme fallback menggunakan terpisah CoreML encoder- model decoder untuk keluar -of -kosakata kata

Pengucapan Gubahan

Nouns yang tepat di luar yang dikirim kamus jatuh melalui tingkat 3, di mana BART menebak dari Inggris aturan ejaan - jadi bukan-nama Anglo keluar salah (Tatiana menjadi tˈitiəniənə). addPronunciations Suntik word -> IPA entri di depan dari tingkat 1:

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

Kunci dicocokkan dengan lowercased dan harus berupa kata tunggal - teks dibagi pada whitespace dan tanda baca sebelum resolusi, sehingga kunci berisi ruang, hyphen, atau tanda kutip tidak pernah melihat. IPA harus menggunakan simbol dari kosa model; apa pun yang lain diam-diam dijatuhkan di tokenization. Aktifkan ke jalur Inggris saja - zh, ja, it, fr, es, pt, dan hi pilih fonemizers yang berdedikasi yang tidak pernah berkonsultasi dengan kamus. Pencarian tidak terkunci, jadi masukan register sebelum sintesis mulai berjalan secara kontemporer pada model yang sama.

Model Weights

KomponenUkuranFormat
Model Durasi~ 39 MB.mlmodelc
Model Prosody~ 17 MB.mlmodelc
Model decoder (3 ember)~ 107 MB masing-masing.mlmodelc
Penggelapan suara (54 suara)~ 0.3 MBJSON (256- dim Float32)
G2P enkoder + decoder~ 1.5 MB.mlmodelc
Dictionaries + vocab~ 6 MBJSON
Total (decoder 1)~ 170 MB

Penampilan

MetrikNilai
Parameter82M
Backend InferensiCoreML (Neural Engine)
Inferensi RTFx~ 0.7 (lebih cepat dari real-time)
Laju cuplikan keluaran24 kHz
Berat memori~ 170 MB (1 ember decoder)
Bukan-Autoregresif

Tidak seperti Qwen3-TTS dan CosyVoice3 yang menghasilkan token step- by- langkah, Kokoro menggunakan 3-stage pipeline tanpa sampling loop. Semua tahap adalah deterministik forward passes.

Penggunaan CLI

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

Opsi

OpsiBakuDeskripsi
<text>Teks yang akan disintesis
--voiceaf_heartNama awal suara
--languageenKode bahasa: en, es, fr, hi, it, ja, pt, zh, ko, de
--output, -okokoro_output.wavPath berkas keluaran WAV
--list-voicesDaftar semua suara yang tersedia dan keluar
--model, -mID model HuggingFace

Contoh

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

Compute Unit Override

fromPretrained(computeUnits:) memilih perangkat keras mana yang menjalankan model CoreML utama. Baku (baku).all) memungkinkan Core ML lebih memilih Neural Engine, yang merupakan jalur tercepat pada setiap perangkat yang didukung. Pass .cpuAndGPU untuk memotong ANE sebagai fallback pada platform di mana kompiler ANE menghasilkan keluaran yang salah untuk model ini.

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)

Kapan akan menggunakan Kokoro

Gunakan KasusDisarankan TTS
Aplikasi iOS, ringan, lemah - efisienKokoro (CoreML, 82M params, ~170 MB)
Kualitas tertinggi, streaming, suara kloningQwen3-TTS (MLX, 600M params, ~1.7 GB)
Streaming multibahasa, 9 bahasaCosyVoice3 (MLX, 500M params, ~1.2 GB)
Dialog berbicara full--duplexPersonaPlex (MLX, 7Params B, ~5.5 GB)

Lisensi