Kokoro TTS — Android

Kokoro-82M نموذج خفيف وغير انحداري لتحويل النص إلى كلام، يعمل على Android عبر ONNX Runtime. يُنتج كلاماً طبيعياً بمعدل 24 kHz مع 50 صوتاً جاهزاً عبر 8 لغات.

اللغات المدعومة

اللغةالرمزأمثلة على الأصوات
الإنجليزية (الولايات المتحدة)enaf_heart, am_adam, af_sky
الإنجليزية (المملكة المتحدة)enbf_emma, bm_george
الإسبانيةesef_dora
الفرنسيةfrff_siwis
الهنديةhihf_alpha, hm_omega
الإيطاليةitif_sara
اليابانيةjajf_alpha, jm_omega
البرتغاليةptpf_dora
الصينيةzhzf_xiaobei, zm_yunjian
الألمانيةdedm_martin, df_victoria (حزم صوتية)

50 صوتاً جاهزاً بالمجمل. اصطلاح تسمية الأصوات: [language][gender]_[name] — مثلاً af_heart = أنثى أمريكية "Heart".

حزم الصوت الألمانية

الألمانية ليست صوتاً من الحزمة متعددة اللغات أعلاه: الصوتان الألمانيان هما ضبط دقيق لنموذج Kokoro-82M من kikiri-tts، كل منهما مجموعة أوزان مستقلة بحجم 162 ميغابايت مدرَّبة على الفونيمات الألمانية فقط. اختر أحدهما عبر KokoroPack عند التنزيل، ثم ركِّب الكلام بـ language = "de". لكل حزمة ذاكرة تخزين خاصة، لذا يمكن تثبيت الإنجليزية والألمانية جنباً إلى جنب.

الحزمةالصوتالتنزيل
KokoroPack.GERMAN_MARTINdm_martin (ذكر)soniqo/Kokoro-82M-German-Martin-ONNX (~170 MB)
KokoroPack.GERMAN_VICTORIAdf_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