Kokoro TTS — Android

Kokoro-82M es un modelo de texto a voz ligero y no autorregresivo que se ejecuta en Android a través de ONNX Runtime. Produce voz natural a 24 kHz con 50 presets de voz en 7 idiomas.

Idiomas soportados

IdiomaCódigoVoces de ejemplo
Inglés (EE. UU.)enaf_heart, am_adam, af_sky
Inglés (Reino Unido)enbf_emma, bm_george
Españolesef_dora
Francésfrff_siwis
Hindihihf_alpha, hm_omega
Italianoitif_sara
Japonésjajf_alpha, jm_omega
Portuguésptpf_dora
Chinozhzf_xiaobei, zm_yunjian

50 presets de voz en total. Convención de nombrado de las voces: [idioma][género]_[nombre] — p. ej., af_heart = femenino americano "Heart".

Archivos del modelo

ArchivoTamaño
kokoro-model-int8.onnx~89 MB
voices.binEmbeddings de voz
Diccionarios de fonemasDatos de pronunciación específicos de cada idioma

HuggingFace: aufklarer/Kokoro-82M-ONNX

Rendimiento

MétricaValor
Parámetros82M
Backend de inferenciaONNX Runtime
Frecuencia de muestreo de salida24 kHz

Fonemizador

El texto se convierte en tokens de fonemas usando un fonemizador basado en diccionario con soporte específico por idioma. La implementación en Android incluye fonemizadores para inglés, francés, español, italiano, portugués, hindi, japonés y chino.

Integración con el pipeline

En Android, Kokoro TTS forma parte del SpeechPipeline. Después de que el STT transcriba la voz, el texto se fonemiza y se sintetiza de nuevo como audio. El pipeline gestiona automáticamente todo el flujo 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

Código fuente: github.com/soniqo/speech-android