Kokoro TTS — Android
Kokoro-82M نموذج خفيف وغير انحداري لتحويل النص إلى كلام، يعمل على Android عبر ONNX Runtime. يُنتج كلاماً طبيعياً بمعدل 24 kHz مع 50 صوتاً جاهزاً عبر 8 لغات.
اللغات المدعومة
| اللغة | الرمز | أمثلة على الأصوات |
|---|---|---|
| الإنجليزية (الولايات المتحدة) | en | af_heart, am_adam, af_sky |
| الإنجليزية (المملكة المتحدة) | en | bf_emma, bm_george |
| الإسبانية | es | ef_dora |
| الفرنسية | fr | ff_siwis |
| الهندية | hi | hf_alpha, hm_omega |
| الإيطالية | it | if_sara |
| اليابانية | ja | jf_alpha, jm_omega |
| البرتغالية | pt | pf_dora |
| الصينية | zh | zf_xiaobei, zm_yunjian |
| الألمانية | de | dm_martin, df_victoria (حزم صوتية) |
50 صوتاً جاهزاً بالمجمل. اصطلاح تسمية الأصوات: [language][gender]_[name] — مثلاً af_heart = أنثى أمريكية "Heart".
حزم الصوت الألمانية
الألمانية ليست صوتاً من الحزمة متعددة اللغات أعلاه: الصوتان الألمانيان هما ضبط دقيق لنموذج Kokoro-82M من kikiri-tts، كل منهما مجموعة أوزان مستقلة بحجم 162 ميغابايت مدرَّبة على الفونيمات الألمانية فقط. اختر أحدهما عبر KokoroPack عند التنزيل، ثم ركِّب الكلام بـ language = "de". لكل حزمة ذاكرة تخزين خاصة، لذا يمكن تثبيت الإنجليزية والألمانية جنباً إلى جنب.
| الحزمة | الصوت | التنزيل |
|---|---|---|
KokoroPack.GERMAN_MARTIN | dm_martin (ذكر) | soniqo/Kokoro-82M-German-Martin-ONNX (~170 MB) |
KokoroPack.GERMAN_VICTORIA | df_victoria (أنثى) | soniqo/Kokoro-82M-German-Victoria-ONNX (~170 MB) |
val modelDir = ModelManager.ensureTtsModels(
context,
ttsModel = TtsModel.KOKORO_SHORT_TURN,
kokoroPack = KokoroPack.GERMAN_MARTIN, // or GERMAN_VICTORIA
)
val tts = SpeechSynthesizer(SpeechSynthesizerConfig(modelDir = modelDir))
val audio = tts.synthesize("Am 3. Oktober um 18:30 Uhr kostet es 12,80 €.", "de")تُنطَق الأرقام والأعداد الترتيبية والتواريخ والأوقات والمبالغ والوحدات والاختصارات الشائعة على الجهاز؛ وتُستخرج الكلمات من قاموس ألماني يضم 50 ألف كلمة مع بدائل للتصريف والكلمات المركبة والقواعد. يوفر محرك TTS في النظام (SpeechTextToSpeechService) صوت Martin بوصفه de-DE إلى جانب en-US.
ملفات النموذج
| الملف | الحجم |
|---|---|
kokoro-e2e.onnx + .onnx.data | ~330 MB |
voices.bin | تضمينات الأصوات |
| قواميس الفونيمات | بيانات نطق خاصّة بكل لغة |
HuggingFace: soniqo/Kokoro-82M-ONNX
الأداء
| المقياس | القيمة |
|---|---|
| المعاملات | 82M |
| خلفية الاستنتاج | ONNX Runtime |
| معدل أخذ عيّنات الخرج | 24 kHz |
مُفَوْنِم النص
يُحوَّل النص إلى رموز فونيمات باستخدام مُفَوْنِم قائم على القواميس مع دعم خاصّ بكل لغة. تتضمّن نسخة Android مُفَوْنِمات للإنجليزية والفرنسية والإسبانية والإيطالية والبرتغالية والهندية واليابانية والصينية.
التكامل مع خط الأنابيب
على Android، يُعدّ Kokoro TTS جزءاً من SpeechPipeline. بعد أن يفرّغ STT الكلام، يُفَوْنَم النص ويُركَّب صوتاً من جديد. ويُدير خط الأنابيب تدفّق VAD → STT → TTS كاملاً بصورة تلقائية.
val modelDir = ModelManager.ensureModels(context)
val pipeline = SpeechPipeline(SpeechConfig(modelDir = modelDir))
pipeline.events.collect { event ->
when (event) {
is SpeechEvent.TranscriptionCompleted -> println(event.text)
else -> {}
}
}
pipeline.start()
pipeline.pushAudio(samples) // 16kHz mono float32
الشيفرة المصدرية: github.com/soniqo/speech-android