Kokoro TTS — Android

Kokoro-82M, ONNX Runtime aracılığıyla Android üzerinde çalışan hafif ve otoregresif olmayan bir metinden konuşma modelidir. 8 dilde 50 hazır sesle doğal 24 kHz konuşma üretir.

Desteklenen diller

DilKodÖrnek sesler
İngilizce (ABD)enaf_heart, am_adam, af_sky
İngilizce (Birleşik Krallık)enbf_emma, bm_george
İspanyolcaesef_dora
Fransızcafrff_siwis
Hintçehihf_alpha, hm_omega
İtalyancaitif_sara
Japoncajajf_alpha, jm_omega
Portekizceptpf_dora
Çincezhzf_xiaobei, zm_yunjian
Almancadedm_martin, df_victoria (ses paketleri)

Toplam 50 hazır ses. Ses adlandırma kuralı: [language][gender]_[name] — örneğin, af_heart = Amerikan Kadın "Heart".

Almanca ses paketleri

Almanca, yukarıdaki çok dilli paketin bir sesi değildir: iki Almanca ses, kikiri-tts tarafından Kokoro-82M'in ince ayarlanmış sürümleridir; her biri yalnızca Almanca fonemlerle eğitilmiş 162 MB'lık ayrı bir ağırlık kümesidir. İndirirken KokoroPack ile birini seçin, ardından language = "de" ile sentezleyin. Her paketin kendi önbelleği vardır, bu yüzden İngilizce ve Almanca yan yana kurulu kalabilir.

PaketSesİndirme
KokoroPack.GERMAN_MARTINdm_martin (erkek)soniqo/Kokoro-82M-German-Martin-ONNX (~170 MB)
KokoroPack.GERMAN_VICTORIAdf_victoria (kadın)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")

Sayılar, sıra sayıları, tarihler, saatler, para tutarları, birimler ve yaygın kısaltmalar cihazda yazıyla okunur; sözcükler çekim, bileşik sözcük ve kural tabanlı yedeklerle 50k sözcüklük bir Almanca sözlükten gelir. Sistem TTS motoru (SpeechTextToSpeechService) Martin sesini en-US'in yanında de-DE olarak sunar.

Model dosyaları

DosyaBoyut
kokoro-e2e.onnx + .onnx.data~330 MB
voices.binSes embedding'leri
Fonem sözlükleriDile özgü telaffuz verileri

HuggingFace: soniqo/Kokoro-82M-ONNX

Performans

MetrikDeğer
Parametreler82M
Çıkarım arka ucuONNX Runtime
Çıkış örnekleme frekansı24 kHz

Phonemizer

Metin, dile özgü desteğe sahip sözlük tabanlı bir phonemizer ile fonem token'larına dönüştürülür. Android uygulaması İngilizce, Fransızca, İspanyolca, İtalyanca, Portekizce, Hintçe, Japonca ve Çince için phonemizer içerir.

Pipeline entegrasyonu

Android'de Kokoro TTS, SpeechPipeline'ın bir parçasıdır. STT konuşmayı yazıya döktükten sonra, metin fonemize edilir ve tekrar sese sentezlenir. Pipeline, VAD → STT → TTS akışının tamamını otomatik olarak yönetir.

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

Kaynak kodu: github.com/soniqo/speech-android