תרגום מכונה · המקור באנגלית
Kokoro TTS קולות ודגימות
Kokoro-82M הוא קל משקל, לא-אוטומטי של טקסט-to-speech מבוסס על StyleTTS 2 עם vor ISTFTNet. הוא פועל לחלוטין על דגם Neural Engine באמצעות CoreML, ומייצר דיבור טבעי 24 מטקסט במעבר יחיד קדימה.
Kokoro-82M מיועד ל- On-device iOS פריסה. 82Mפרמטרים (-)80 MB עם 1 דלי, INT8זה מתאים בנוחות על iPhone ו- iPad. CoreML רץ על Neural Engineלעזוב את GPU חינם למשימות אחרות.
שפות תמיכה
| שפה | קוד קודקוד | דוגמה: Voices |
|---|---|---|
| אנגלית (US) | en en | Af_heart, am_adam, af_sky |
| אנגלית (בריטניה) | en en | bf_emma, bm_george |
| ספרדית | es | ef_dora |
| צרפתית צרפתית צרפתית | פרוג' | ff_siwis |
| הינד | היי היי | hf_alpha, hm_omega |
| איטלקי איטלקי איטלקי איטלקי | זה | אם_sara |
| יפן יפנית | ג' | Jf_alpha, Jm_kumo |
| פורטוגל פורטוגל פורטוגל | pt | pf_dora |
| סין הסינית | ז'אן | Zf_xiaobei, zm_yunjian |
| גרמניה גרמנית | דה דה דה | dm_martin, df_victoria (חבילות חשבוניות) |
54 קולות מוקדמים בסך הכל. Voice Name Convention: [language_prefix][gender]_[name] – למשל, af_heart=נקבה אמריקאית "Heart", if_sara= Italianנקבה "Sara".
קולות גרמניים
גרמניה שירתה על ידי שתי חבילות קול יחיד נפרדות. kikiri-ts קנסות של Kokoro-82M עם אחד 313 MB CoreML מודל לקול, ולא קולות של החבילה הרב לשונית. language: "de"מספרים, תאריכים, פעמים, מטבע וקיצורים מוטבעים במכשיר, ומילים פותרות באמצעות מילון 50k-word German Dictionary.
| מודל זיהוי | קול קול קול |
|---|---|
| aufklarer/Kokoro-82M-German-Martin-CoreML | dm_martin (נקבה) |
| aufklarer/Kokoro-82M-German-Victoria-CoreML | df_victoria (נקבה) |
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דגימות קוליות
קצר MP3 קליפים שנוצרו עם קליפים מקומיים speech-swift CLI.שולחן קוד הקול המלא נשאר מתחת לשימוש copy-paste.
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 קודים
כל מזהה קולי Kokoro עוקב אחר אותו דפוס: אחד-על שפה prefixOne-letter קוד מגדרילאחר מכן, הדגש והשם הקולי, השתמשו בטבלה למטה כדי למפות שפת יעד לקידומת הנכונה.
טבלה טרום תיקון שפה
| תיקון | שפה | מקומי | המינים |
|---|---|---|---|
a | אנגלית אנגלית | ארה"ב (en-US) | af_, am_ |
b | אנגלית אנגלית | בריטניה (en-GB) | bf_, bm_ |
d | גרמניה גרמנית | (de-DE) | dm_, df_ |
e | ספרדית | (es) | ef_, em_ |
f | צרפתית צרפתית צרפתית | (fr-FR) | ff_ |
h | הינד | (ג) | hf_, hm_ |
i | איטלקי איטלקי איטלקי איטלקי | (it) | if_, im_ |
j | יפן יפנית | (ג') | jf_, jm_ |
p | פורטוגל פורטוגל פורטוגל | ברזיל (pt-BR) | pf_, pm_ |
z | סין הסינית | מנדרינה (ז') | zf_, zm_ |
כל הקולות באמצעות שפה
אנגלית - American (af_*, am_*)
נשים: af_alloy, af_aoede, af_bella, af_heart (הופנה מהדף) af_jessica, af_kore, af_nicole, af_nova, af_river, af_sarah, af_sky
זכר: am_adam, am_echo, am_eric, am_fenrir, am_liam, am_michael, am_onyx, am_puck, am_santa
אנגלית: British (bf_*, bm_*)
נשים: bf_alice, bf_emma, bf_isabella, bf_lily
זכר: bm_daniel, bm_fable, bm_george, bm_lewis
ספרדית (ef_*, em_*)
Feel: ef_dora
Male:em_alex em_santa
צרפתית (צרפתית)ff_*)
Feel: ff_siwis
Hindi (hf_*, hm_*
נשים: hf_alpha, hf_beta
זכר: hm_omega, hm_psi
איטלקית (if_*, im_*
נשים: if_sara
זכר: im_nicola
יפני (jf_*, jm_*)
נשים: jf_alpha, jf_gongitsune, jf_nezumi, jf_tebukuro
זכר: jm_kumo
פורטוגזית - ברזיל (pf_*, pm_*)
נשים: pf_dora
זכר: pm_alex, pm_santa
סינית - מנדרינה (zf_*, zm_*)
נשים: zf_xiaobei, zf_xiaoni, zf_xiaoxiao, zf_xiaoyi
זכר: zm_yunjian, zm_yunxi, zm_yunxia, zm_yunyang
Run Run speech kokoro --list-voices כדי להדפיס את כל קול שנארז כעת עם המודל.זהות קוליות יציבות על פני מהדורות - השתמש במחרוזת המדויקת (למשל, if_sara(כאשר קוראים) --voice מתוך CLI או עובר voice: Swift API.
ארכיטקטורה
Kokoro משתמשת 3 שלבים CoreMLצנרת ללא לולאה דגימה - כל השלבים הם מעברים לא-אוטומטיים עם צעד יישור של Swift-side בין שלבים 1 ל 2.
3 Stage Pipeline
| שלב השלב | מודל מודל | Input | Output |
|---|---|---|---|
| 1. Duration 1. | duration.mlmodelc | אוזניות טלפון + קול הטמיע + מהירות + | משך, תכונות פרוזודיות, טקסט קידוד |
| — | Swift היערכות | משך + שלב 1 תכונות | Aligned Prosody & תכונות טקסט |
| 2. Prosody | prosody.mlmodelc | תכונות פרוזודיות אלגנטיות + סגנון | F0 (pitch) + תחזיות רעש |
| 3.Dcoder | decoder_*.mlmodelc | טקסט מופץ + F0 + רעש + סגנון + | 24 kHz אודיו גלפור |
Phoneme Buckets (Duration Model)
מודל משך הזמן משתמש בצורות קלט מוטבעות. Input מוצמד לדלי הקטן ביותר המתאים:
| Bucket | Max Phonemes | שימוש במקרה |
|---|---|---|
| p16 | 16 | ביטויים קצרים |
| p32 | 32 | משפטים קצרים |
| p64 | 64 | משפטים בינוניים |
| p128 | 128 | משפטים ארוכים |
Decoder Buckets
מודלים קבועים-shape decoder עבור אורך אודיו מקסימלי שונה (כל מסגרת = 600 דגימות ב 24 kHz):
| Bucket | מקס מסגרות | מקס אודיו |
|---|---|---|
decoder_5s | 200 | 5.0 |
decoder_10s | 400 | 10.0 |
decoder_15s | 600 | 15.0s |
דרישות iOS 18+ / macOS 15+.
טלפון
טקסט מומרת אסימוני טלפון באמצעות צינור משולש - כל Apache-2.0
- Dictionary Lookup - ארה"ב אנגלית ובריטי אנגלית דיגוריות עם תמיכה heteronym
- Suffix נובעת מ- - decomposition Morphological for known suffixes (למשל, "שינג", "tion")
- BART G2P - Neural גרפיeme-to-phoneme Fallback באמצעות CoreML מודל קודר עבור מילים מחוץ ל-vocabulary.
המונחים: Custom Pronunciations
נקודות זכות מחוץ לדיגוריות המשלוחים הנפלטים אל השכבה 3, שם BART מנחשת אנגלית אנגלית חוקי כישוף – כל כך לא-אנגלוב שמות טועיםTatiana הופכת tˈitiəniənə). addPronunciations Injects word -> IPA תגיות: tier 1:
let tts = try await KokoroTTSModel.fromPretrained()
tts.addPronunciations(["tatiana": "tɑtiˈɑnə"])
המפתחות תואמים את עצמם וחייבים להיות מילים בודדות - טקסט מחולק על המרחב הלבן והטיהור לפני ההחלטה, כך מפתח המכיל חלל, הפנו, או apostrophe הוא מעולם לא מסתכל למעלה. IPA חייב להשתמש סמלים של אוצר המילים מודל; כל דבר אחר נפל בשקט על אסימוניזציה. zh, ja, it, fr, es, ptו hi בחר טלפונים ייעודיים שמעולם לא להתייעץ עם הדיפטרונים.המראה הוא נעול, כך לרשום ערכים לפני סינתזה מתחיל לרוץ במקביל על אותו מודל.
משקל מודל
| המונחים | גודל | פורמט Format |
|---|---|---|
| מודל | -39 MB | ML Modelc |
| מודל Prosody | 17 MB | ML Modelc |
| דגמי Decoder (3 דליים) | 107 MB כל אחד | ML Modelc |
| קול הטמיעו את קולם של 54 קולות) | -0.3 MB | JSON (256-dim Float32) |
| G2P encoder + decoder | 1.5 MB | ML Modelc |
| דיסלקציה + vocab | 6 MB | ג'ייסון |
| Total (1coder) | 170 MB |
ביצועי ביצועים
| מסובך | ערך |
|---|---|
| המונחים: | 82M |
| המונחים: backend | CoreML (Neural Engine) |
| המונחים: RTFx | 0.7 (זמן מהיר יותר מאשר בזמן אמת) |
| המונחים: rate | 24 kHz |
| זיכרון משקל | 170 MB (1 דלי קודר) |
שלא כמו Qwen3-TTS ו CosyVoice3 שיוצרים אסימונים בשלב, Kokoro משתמשת צינור 3-שלב ללא לולאה דגימה.כל השלבים הם מעברים מכריעים קדימה.
CLI Usage
speech kokoro "Hello, world!" --voice af_heart --output hello.wav
אפשרויות אפשרויות
| אפשרות | Default | תיאור תיאור |
|---|---|---|
<text> | טקסט לסנתז | |
--voice | af_heart | שם מקורי Voice preset |
--language | en | קוד שפה: en, es, fr, Hi, It, Ja, pt, zh, ko, de, de |
--output, -o | kokoro_output.wav | Output WAV נתיב קובץ |
--list-voices | רשימה של כל הקולות הזמינים ויציאה | |
--model, -m | HuggingFace מודל מזהה |
דוגמאות
# 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)
יחידת ההסגרה Override
fromPretrained(computeUnits:) בחירת החומרה מפעילה את מודל CoreML הראשי..allמאפשר Core ML להעדיף את Neural Engine, המהווה את הנתיב המהיר ביותר בכל מכשיר נתמך. .cpuAndGPU כדי לעקוף את ANE כנפילה על פלטפורמות שבו ה- ANE יוצר פלט לא נכון עבור מודל זה.
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)
מתי להשתמש Kokoro
| שימוש במקרה | TTS |
|---|---|
| iOS אפליקציה, משקל, יעילות סוללה | Kokoro CoreML 82M params, 170 MB) |
| האיכות הגבוהה ביותר, הזרמת קול, שיבוט קול | Qwen3-TTS MLX, 600M params, -1.7 GB) |
| סטרימינג רב לשוני, 9 שפות | CosyVoice3 (MLX, 500M params - 1.2 GB) |
| דיאלוג דיבור מלא-דופלקס | PersonaPlex (MLX, 7B params -5.5 GB) |
רישיון רישיון רישיון
- משקל מודל: Apache-2.0 (hexgrad/Kokoro-82M)
- CoreML: Apache-2.0Aufklarer / Kokoro-82M-CoreML)
- Dictionaries ו G2P: Apache-2.0
Qwen3-ASR דיבור-אל-טקסט · Parakeet TDT דיבור לטקסט · CosyVoice3 Voice Cloing