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
| Idioma | Código | Voces de ejemplo |
|---|---|---|
| Inglés (EE. UU.) | en | af_heart, am_adam, af_sky |
| Inglés (Reino Unido) | en | bf_emma, bm_george |
| Español | es | ef_dora |
| Francés | fr | ff_siwis |
| Hindi | hi | hf_alpha, hm_omega |
| Italiano | it | if_sara |
| Japonés | ja | jf_alpha, jm_omega |
| Portugués | pt | pf_dora |
| Chino | zh | zf_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
| Archivo | Tamaño |
|---|---|
kokoro-model-int8.onnx | ~89 MB |
voices.bin | Embeddings de voz |
| Diccionarios de fonemas | Datos de pronunciación específicos de cada idioma |
HuggingFace: aufklarer/Kokoro-82M-ONNX
Rendimiento
| Métrica | Valor |
|---|---|
| Parámetros | 82M |
| Backend de inferencia | ONNX Runtime |
| Frecuencia de muestreo de salida | 24 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